Un attribut pour un nœud chef n'est pas mis à jour lorsque je change le rôle, l'ancienne valeur persiste.
L'attribut node['nagios']['custom_variables']['styleurl']
ne se met pas à jour avec la nouvelle valeur de /urlprefix
, et reste bloqué sur une ancienne valeur urlprefix
. J'ai modifié la définition du rôle il y a plus d'une semaine.
Un autre nœud avec chef-client (qui est le serveur nagios qui regarde ces attributs):
# chef-shell -z
chef > nodes.show("server2.example.com")['nagios']['custom_variables']['styleurl']
=> "urlprefix"
Les définitions de nœud et de rôle (ci-dessous) n'incluent pas cette valeur, et comprennent uniquement /urlprefix
.
debug_value
me dit que cela provient d'un remplacement.
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
me montre qu'il y a un override
pour cette variable. (voir ci-dessous pour la sortie).
J'utilise ces attributs pour configurer mes vérifications nagios. Nagios est configuré avec chef, donc évidemment mes vérifications nagios échouent.
Pourquoi ne puis-je pas changer l'attribut dans le rôle? Pourquoi la surcharge d'attribut
du rôle n'écrase-t-elle pas l'attribut? Comment puis-je changer cet attribut?
Configuration du nœud
Nœud simple, tout se fait dans le rôle.
$ knife node show -Fjson server2.example.com
{
"name": "server2.example.com",
"chef_environment": "_default",
"run_list": [
"role[server2]"
],
"normal": {
"tags": []
}
}
Rôle
Seul server2.example.com a le rôle server2
. Tout se fait dans le rôle. C'est le seul endroit où styleurl
est défini.
$ 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": {
}
}
Attributs du Cookbook
Le custom_variables::styleurl
n'est défini nulle part dans le cookbook:
$ 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
(partiellement censuré/modifié)
$ 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