如何在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
对不起我的英语。 最好的问候
谢谢。我刚刚更新了这个,说我已经使用Chef目录资源来解决它。 :O) – user1418711 2014-09-19 11:32:33