2013-06-25 11 views
5

シェフを使用してC:\ Program Filesにディレクトリを作成しようとしているときにエラーが発生しました。私は管理者としてのPowerShell環境からシェフを運営しています。そのため、私が実行できるアクションについては何も制限すべきではありません。シェフ:Cでディレクトリを作成する権限がありません

レシピ/ default.rb

directory node['app']['unzip_path'] do 
    action :create 
end 

属性/ default.rb

default['app']['unzip_path'] = 'C:/Program files/App'

私はこのエラーを取得しています:

[2013-06-25T01:51:13+00:00] FATAL: Chef::Exceptions::InsufficientPermissions: directory[C:/Program files/App] (app::agent line 15) had an error: Chef::Exceptions::InsufficientPermissions: Cannot create directory[C:/Program files/App] at C:/Program files/App due to insufficient permissions 

その他の質問:chef-soloがpowershellコマンドを実行しているユーザーとして実行されているのか、それとも特別な「シェフ」ユーザーとして実行されていますか?

+1

通常のユーザーはそこに書き込むことはできません。 – pguardiario

+0

シェフが管理者として実行されていることを反映するように投稿を編集しました – BrianJakovich

答えて

1

Per http://tickets.opscode.com/browse/CHEF-3787?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanelこれはバグです。これに対する私の解像度は、ちょうどここでの問題は、私はシェフのディレクトリリソースが提供する冪等の財産を失うということですが、プログラムファイルの中にものを置く必要がある場合は、これがあると思わルビールート

require 'fileutils' 
FileUtils.mkdir_p node['app']['unzip_path'] 

を行くことです現在のみのルート

3

BrianJakovichの回答をフォローアップします。 mkdir_pコールはどちらの場合には冪等性を保つ必要があるが、それは、収束フェーズで動作しますので、Rubyのブロックを使用すると、おそらく良いでしょう:シェフはあなたが作ることができないと

ruby_block "hack to mkdir on windows" do 
    block do 
     FileUtils.mkdir_p node['app']['unzip_path'] 
    end 
end 
0

この種の問題のための私の回避策C内部の変更:それはprogramfiles_yourdirectory.bat.erb、その後、 はあなたの料理にし、レシピにテンプレートの下に追加

@ECHO OFF 
MKDIR "C:\\Program Files\\YourDirectory" 
:END 

と名前を呼ぶ:\プログラムファイル\ のような簡単なバッチスクリプトファイルを作成することですlike:

template "C:\\chef\\cache\\programfiles_yourdirectory.bat" do 
    source "programfiles_yourdirectory.bat.erb" 
    rights :full_control, "Administrators" 
end 

execute "Create Program Files_YourDirectory Directory" do 
    cwd "C:\\chef\\cache" 
    command "programfiles_yourdirectory.bat" 
    action :run 
    not_if do ::File.exists?('C:\Program Files\YourDirectory') end 
end 

これは、シェフ\キャッシュフォルダ内のBATテンプレートを作成し、その後、シェフ・クライアントは、フォルダがシェフ不十分なアクセス許可を求めずに作成されることを意味し管理者権限を持つbatファイルを実行します。

関連する問題