2015-02-04 2 views
0

У меня есть условный рецепт, который проверяет некоторые данные узла:Chef рецепта узел хэш не имеет те же данные, что и в данном узле сервера поваров

if node[:etc][:group].has_key?('someuser') and node[:etc][:group][:someuser][:gid] == 12345 
    # do something... 
else 
    # do something else... 
end 

И я использовал knife node edit hostname.mydomain.com, чтобы добавить эти данные мой объект узла, как показано

$ knife node show hostname.mydomain.com -m 
Node Name: hostname.mydomain.com 
Environment: ... 
FQDN:  hostname.mydomain.com 
IP:   ... 
Run List: ... 
Roles:  ... 
Recipes:  ... 
Platform: ... 
Tags:  ... 
Attributes:.. 
etc: 
    group: 
    someuser: 
     gid:  12345 
     members: 

tags:  ... 

Однако предложение else в настоящее время выполняется вместо пункта if. Я проверил, что это версия рецепта, который выполняется на узле (посмотрел рецепт, который был загружен на узел). Я думал, что правильно настроил свой узел, чтобы выполнить предложение if, так почему же возникает предложение else? Благодарю.

ответ

0

Ключ узла и т. Д. Создается ohai (и находится под автоматическим ключом) и перезаписывается при каждом запуске, пытаясь установить атрибуты thoose в объекте узла, не будет работать.

Вы не можете переопределять автоматические атрибуты.

Вы можете получить более подробную информацию о том, что делается на повар перспективе here и подробные сведения о атрибутах here

Что вы можете сделать здесь создать группу в рецепте с group ресурсом и перезагрузить ohai данных перед входом петля.

Exemple (сильно вдохновлен the doc):

ohai "reload_passwd" do 
    action :nothing 
    plugin "etc" 
end 
group 'somegroup' do 
    gid 12345 
    notifies :reload, "ohai[reload_passwd]", :immediately 
end 

ruby_block "your code" do # in a ruby block to be run at converge time and not at compile time. 
    if node[:etc][:group].has_key?('someuser') and node[:etc][:group][:someuser][:gid] == 12345 
    # do something... 
    else 
    # do something else... 
    end 
end 

Но создание группы может быть в вашем еще блоке, а следующий запуск повар ввести, если блок, как группа будет существовать.

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