Um atributo para um nó chef não está sendo atualizado quando eu mudo a função, o valor antigo está persistindo.
O atributo node['nagios']['custom_variables']['styleurl']
não está atualizando para o novo valor de /urlprefix
e está preso em um valor antigo urlprefix
. Mudei a definição do papel há mais de uma semana.
Outro nó com chef-client (que é o servidor nagios que analisa esses atributos):
# chef-shell -z
chef > nodes.show("server2.example.com")['nagios']['custom_variables']['styleurl']
=> "urlprefix"
As definições de nó e função (abaixo) não incluem esse valor e incluem apenas /urlprefix
.
debug_value
me diz que isso vem de uma substituição.
chef > nodes.show("server2.example.com").debug_value("nagios", "custom_variables", "styleurl")
=> [["set_unless_enabled?", false], ["default", :not_present], ["env_default", :not_present], ["role_default", :not_present], ["force_default", :not_present], ["normal", :not_present], ["override", "osm"], ["role_override", :not_present], ["env_override", :not_present], ["force_override", :not_present], ["automatic", :not_present]]
knife node show -l
mostra que há um override
para essa variável. (veja abaixo para saída).
Eu uso esses atributos para configurar minhas verificações nagios. O Nagios é configurado com o chef, então obviamente minhas verificações de nagios estão falhando.
Por que não consigo alterar o atributo na função? Por que a função override_attribute
não, bem sobrepõe a atribuição? Como posso alterar esse atributo?
Configuração do nó
Nó simples, tudo é feito na função.
$ knife node show -Fjson server2.example.com
{
"name": "server2.example.com",
"chef_environment": "_default",
"run_list": [
"role[server2]"
],
"normal": {
"tags": []
}
}
Papel
Somente server2.example.com tem a função server2
. Tudo é feito no papel. Este é o único local onde o styleurl
está definido.
$ knife role show -Fjson server2
{
"name": "server2",
"description": "",
"json_class": "Chef::Role",
"default_attributes": {
},
"override_attributes": {
"nagios": {
"custom_variables": {
"styleurl": "/urlprefix"
}
}
},
"chef_type": "role",
"run_list": [
"role[ubuntu-precise-basic]",
"recipe[firewall::http]",
"recipe[firewall::https]"
],
"env_run_lists": {
}
}
Atributos do livro de receitas
O custom_variables::styleurl
não está definido em nenhum lugar no livro de receitas:
$ grep -R "custom_variables" cookbooks/
cookbooks/nagios/templates/default/hosts.cfg.erb: <% if node['nagios'] && node['nagios']['custom_variables'] %>
cookbooks/nagios/templates/default/hosts.cfg.erb: <% node['nagios']['custom_variables'].each do |key, value| -%>
cookbooks/nagios/templates/default/hosts.cfg.erb: <% if n['nagios'] && n['nagios']['custom_variables'] %>
cookbooks/nagios/templates/default/hosts.cfg.erb: <% n['nagios']['custom_variables'].each do |key, value| -%>
cookbooks/nagios/templates/default/hosts.cfg.erb: <% if n['nagios'] && n['nagios']['custom_variables'] %>
cookbooks/nagios/templates/default/hosts.cfg.erb: <% n['nagios']['custom_variables'].each do |key, value| -%>
$
knife node show
(parcialmente redigido / editado)
$ knife node show -Fjson -l server2.example.com
{
"name": "server2.example.com",
"chef_environment": "_default",
"run_list": [
"role[server2]"
],
"normal": {
"tags": [
]
},
"override": {
"nagios": {
"custom_variables": {
"styleurl": "osm"
}
}
},
...
"recipes": [
"accounts",
"packages::precise",
"firewall::ssh",
"firewall::munin",
"firewall::nrpe",
"munin::client",
"munin-checks",
"nrpe",
"nagios-checks",
"fail2ban",
"openssh",
"mycompany::apache_logrotate",
"firewall::http",
"firewall::https"
],
"roles": [
"server2",
"ubuntu-precise-basic",
"mycompany-accounts"
]
}
}
Chef v11.8