2013-06-25 72 views
5

我試圖創建在C目錄中遇到一個錯誤。我以管理員身份從PowerShell環境運行廚師,因此不應該對我可以執行的操作有任何限制。廚師:沒有足夠的權限使用C創建一個目錄: Program Files文件使用廚師:

食譜/ 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 

附加問題:作爲運行powershell命令的用戶運行chef-solo還是以特殊「廚師」用戶身份運行:

+1

普通用戶不能在那裏寫。 – pguardiario

+0

編輯我的帖子,以反映廚師正在以管理員身份運行 – BrianJakovich

回答

3

上BrianJakovich的回答跟進路線。 的mkdir_p呼叫應保持冪等在這兩種情況下,但使用紅寶石塊可能會更好,因爲它會在收斂階段運行:

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

我對這類問題的主廚不允許你做的解決方法C內的變化:\ Program Files文件\ 是創建一個簡單的批處理腳本文件,如:

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

並將其命名爲programfiles_yourdirectory.bat.erb,然後 它添加在模板上你的食譜和配方叫它如:

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 

這將創建裏面的廚師\緩存文件夾蝙蝠模板,然後廚師客戶端將運行批處理文件具有管理員權限意味着該文件夾將不提示的廚師沒有足夠的權限創建。