2017-07-14 22 views
0

J'ai 3 recetteChef: réinitialiser les valeurs par défaut pour une recette

  1. my_java
  2. my_db_client
  3. my_app (dépend de my_db_client et my_java)

En my_app j'ai

default.rb

default[:my_app][:user] = "#{node[:my_db_client][:user]}" 
default[:my_app][:group] = "#{node[:my_db_client][:group]}" 
default[:my_app][:user_home] = "#{node[:my_db_client][:user_home]}" 
default[:my_app][:base] = "#{node[:my_db_client][:base]}" 
default[:my_app][:oracle_client_home] = "#{node[:my_db_client][:oracle_home]}" 

En my_db_client j'ai

default.rb

default[:my_db_client][:user] = "" --(Set from Role) 
default[:my_db_client][:group] = "" --(Set from Role) 
default[:my_db_client][:user_home] = "" --(Set from Role) 
default[:my_db_client][:base] = "" --(Set from Role) 
default[:my_db_client][:oracle_client_home] = "#{node[:my_db_client][:base]}/oracle/home" 

Rôle1

default_attributes( 
    :my_db_client => { 
     :user => "myuser", 
     :group => "mygroup", 
     :user_home => '/home', 
     :base => '/u01' 
    } 
) 
run_list( 
    "recipe[my_db_client]", 
    "recipe[my_app::_install]" 
) 

Role2

default_attributes( 
    :my_java => { 
     :user => "myuser", 
     :group => "mygroup", 
     :user_home => '/home', 
     :base => '/u01' 
    } 
) 
run_list(
    "recipe[my_java]", 
    "recipe[my_db_client]", 
    "recipe[my_app::_install]" 
) 

Pour Rôle1 les choses fonctionnent bien.

Mais pour Role2 la valeur my_db_client par défaut sont mis à ""

[:my_db_client][:user] = "" 
  1. Comment puis-je passer la valeur du nœud [: my_java] [: user] à [: my_db_client] [: utilisateur ]?
  2. Comment puis-je également définir les valeurs ci-dessous?

    default[:my_db_client][:oracle_client_home] = "#{node[:my_db_client][:base]}/oracle/home" 
    

Répondre

0

Si vous voulez que la valeur par défaut de node['my_db_client']['user'] être la valeur de node['my_java']['user'] puis le faire dans le fichier d'attributs. Vous n'êtes pas vraiment sûr de la question puisque vous l'avez déjà fait dans les autres cas, alors vous devez l'avoir omis pour une raison spécifique?

+0

Dans my_app, les valeurs default.rb sont définies à partir des noeuds my_db_client, mais dans role2, je capture les données dans my_java node. Maintenant, comment définir les valeurs dans les nœuds my_db_client à partir des nœuds my_java? –

+0

Je ne comprends pas la question, si c'est ce que vous voulez faire, faites-le. – coderanger