2013-06-25 14 views
5

Występuje błąd podczas próby utworzenia katalogu w C: \ Program Files przy użyciu Chef. Prowadzę szefa kuchni ze środowiska PowerShell jako Administrator, więc nie powinno być żadnych ograniczeń co do tego, jakie działania mogę wykonać.Szef kuchni: Niewystarczające uprawnienia do tworzenia katalogu w C:

recepty/default.rb

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

atrybuty/default.rb

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

Dostaję taki błąd:

[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 

Dodatkowe pytanie: Czy kucharz-solo działa jako użytkownik uruchamiający polecenie powershell lub działa jako specjalny użytkownik "szefa kuchni"

+1

Zwykli użytkownicy nie mogą tam pisać. – pguardiario

+0

Edytowałem mój wpis, aby odzwierciedlić, że szef kuchni jest uruchamiany jako administrator – BrianJakovich

Odpowiedz

1

Na http://tickets.opscode.com/browse/CHEF-3787?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel wygląda na to, że jest to błąd. Moja rozdzielczość to jest po prostu pójść drogą Ruby

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

Problem polega na tym, że stracę właściwość idempotentność że zasób katalog szefa kuchni zapewnia, ale jeśli trzeba umieścić rzeczy do plików programu, to wydaje się być tylko trasa na teraz

3

Uzupełnienie odpowiedzi BrianaJakowicza. mkdir_p wezwanie powinien zachować idempotentność w każdym przypadku, ale przy użyciu bloku rubinowy prawdopodobnie będzie lepiej, ponieważ będzie on prowadzony w fazie konwergencji:

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

Moja obejście tego rodzaju problemu z kuchni nie pozwalając, aby dokonać zmiany wewnątrz katalogu C: \ Program Files \ jest stworzenie prostego pliku skryptu wsadowego jak:

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

i nazwa to programfiles_yourdirectory.bat.erb, a następnie dodać go pod szablonów na książkę kucharską i receptury nazywają go na przykład:

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 

To utworzy szablon bat wewnątrz folderu kucharz \ cache, następnie Chef-klient będzie uruchomić plik bat z uprawnieniami administratora, co oznacza, że ​​folder zostanie utworzony bez monitowania o kucharz niewystarczających uprawnień.

Powiązane problemy