In chef, come posso accedere agli attributi nei file di ruolo?


13

Sono in grado di impostare gli attributi nei file di ruolo come documentato, ma non sono in grado di accedere agli attributi già impostati dai libri di cucina che sto usando.

Ad esempio in /roles/appserver.rb:

name "appserver"

run_list(%w{
  recipe[tomcat::default]
})

default_attributes(
  :tomcat => {
    :java_options => "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=" + node[:tomcat][:log_dir]
  }
)

Quello che ottengo è un'eccezione affermando che lo chef non riesce a trovare il metodo / la variabile 'nodo'.

Grazie

Risposte:


12

Non puoi. Il ruolo Ruby DSL viene convertito da Ruby a JSON quando si carica il ruolo sul server con il coltello. L'oggetto nodo non è disponibile, poiché non viene elaborato nel contesto di un'esecuzione Chef.

Se vuoi combinare gli attributi del nodo, invece, dovresti farlo in una ricetta, ad esempio:

"#{node[:tomcat][:java_options]}#{node[:tomcat][:log_dir]}"

0

È possibile utilizzare effettivamente require_relative 'base_role_file'all'interno di un ruolo e questo file richiesto può impostare alcune variabili globali che è possibile utilizzare. Piuttosto confuso.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.