如何在Chef/Ruby执行命令中使用变量?

问题描述:

我正在创建一个简单的主厨食谱,在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语法不合时宜?

不使用双引号单引号将变量连接在一起。

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