2014-09-19 2 views
1

Я создаю простую поваренную книгу повара, которая устанавливает vhosts на VPS. Я имею эту работу с точки зрения создания правильных .conf файлов, передавая переменную domain к Chef/.erb шаблон, но я также пытаюсь сделать это тоже (упрощенный пример кода):Как использовать переменные в команде выполнения Chef/Ruby?

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

Однако переменные не выводятся в строку, а команда просто создать папку с именем:

/var/www/#{domain}/public_html 

Так ... есть общепринятый способ использовать переменные из цикла в Chef команды выполнить - или это то, что мой синтаксис 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. : О) – user1418711

Смежные вопросы