2016-01-24 2 views
0

У меня есть следующий рецепт шеф-повара, и я не хочу запускать ресурс шаблонов, когда он становится конвергентом под соло для шеф-повара. Похоже, что он не подчиняется, пока во время работы кухня не сходится. Он по-прежнему пытается подключить сервер шеф-повара. Пожалуйста помоги.Ресурс шаблона шеф-повара not_if solo

Рецепт,

template '/etc/hosts' do 
    not_if Chef::Config[:solo] 
    source 'hosts.erb' 
    mode '0644' 
    owner 'root' 
    group 'root' 
    variables({ 
     :nodes => search(:node, 'ipaddress:*') 
      }) 
end 

Шаблон

... 
<% @nodes.each do |n| -%> 
    <% if (n['fqdn'] && n['ipaddress']) -%> 
     <%= n['ipaddress'] %> <%= n['fqdn'] %> 
    <% end -%> 
<% end -%> 
... 

.kitchen.yml

--- 
driver: 
    name: vagrant 

provisioner: 
    name: chef_solo 

platforms: 
    - name: centos-6.7 
... 

ответ

2

Передача нормальное значение not_if означает, что он получает интерпретируется как команда для запуска. Что вы хотите - это блок-форма:

not_if { Chef::Config[:solo] } 

Это не проблема. Более глубокая проблема заключается в том, что все значения непосредственно в теле ресурса оцениваются во время компиляции. Вы хотите использовать вспомогательный помощник для оценки задержки, чтобы они могли использоваться только в том случае, если ресурс фактически запущен:

variables(lazy { 
    {:nodes => search(:node, 'ipaddress:*')} 
}) 
Смежные вопросы