2014-09-19 83 views
1

我正在創建一個簡單的主廚食譜,在VPS上設置虛擬主機。我在由domain變量傳遞給廚師/ .erb模板創建正確的conf文件而言,這工作,但我也想這樣做太(簡化代碼示例):如何在Chef/Ruby執行命令中使用變量?

node[:domains].each do |domain| 
    execute 'sudo mkdir -p /var/www/#{domain}/public_html' 
end 

然而,變量不被輸出到字符串,並且該命令被簡單地創建一個文件夾,名爲:

/var/www/#{domain}/public_html 

所以...有沒有使用從一個循環變量廚師執行命令的接受的方式 - 還是說我的Ruby語法不合時宜?

回答

1

不使用雙引號單引號將變量連接在一起。

node [: domains] .each do | domain | 
    execute "create_dir_#{domain}" do 
     command "sudo mkdir /var/www/#{domain}/public_html" 
    end 
end 

,我建議使用directory資源,而不是執行

node [: domains] .each do | domain | 
    directory "/var/www/#{domain}/public_html" do 
     recursive true 
     action :create 
    end 
end 

對不起我的英語。 最好的問候

+0

謝謝。我剛剛更新了這個,說我已經使用Chef目錄資源來解決它。 :O) – user1418711 2014-09-19 11:32:33