gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 08:31:50 25 4
gpt4 key购买 nike

我正在创建一个简单的 Chef Recipe ,用于在 VPS 上设置虚拟主机。我通过将 domain 变量传递给 Chef/.erb 模板来创建正确的 .conf 文件,但我也在尝试这样做(简化的代码示例):

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

但是,变量并没有输出到字符串中,命令只是创建一个名为:

/var/www/#{domain}/public_html

那么...是否有一种可接受的方法来使用 Chef 执行命令中循环中的变量 - 或者是我的 Ruby 语法不正常?

最佳答案

尝试将变量注入(inject)字符串时,请使用双引号,而不是单引号。

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

关于ruby - 如何在 Chef/Ruby 执行命令中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25932382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com