2011-10-16 8 views
20

He estado tratando de averiguar cómo obtener el nombre del nodo (knife bootstrap -N) en una plantilla. He intentado una docena de ideas diferentes y todavía no he encontrado nada que funcione. ¿Alguien sabe cómo acceder a esto desde una receta Chef?Nombre del nodo en la plantilla del chef?

Además, ¿hay alguna manera de enumerar todas las variables disponibles para una receta Chef?

Respuesta

30

Puede usar Chef::Config[:node_name] en su receta. Encontré esto en el libro de cocina chef-cliente de Opscode.

+2

Estoy de acuerdo con @anaudmeuret, esta solución funcionó para mí en Shef y en una receta, donde la respuesta aceptada no. – jslatts

+1

La pregunta original es cómo acceder al nombre del nodo en una plantilla. Esta respuesta no funciona para eso. En realidad, <% = node.name%> es la sintaxis completa para el archivo .erb, y es cómo acceder al nombre del nodo en una plantilla. – Andrew

+0

Parece que la sintaxis de la plantilla y la sintaxis de la receta son diferentes. Tengo una plantilla que usa la sintaxis <% = node.name%> Y acabo de utilizar la sintaxis anterior de Chef :: Config [: node_name] en una receta – jorfus

34

una forma más limpia más concisa se muestra en la página wiki Attributes:

node.name 
+1

Esto proporciona el FQDN. ¿Alguna forma de obtener el nombre corto? –

+2

No conozco una manera muy profesional de hacerlo, pero node.name.split ('.') [0] funciona bien –

+2

Siempre debe usar la sintaxis del nodo [: attribute] cuando obtenga los atributos del chef. El atributo ohai dervied está en el nodo [: nombre de host] –

4

para ver todos los comandos nodo específico tipo de atributos

knife node edit <name> -a 

teclas de primer nivel accesible con "nodo". prefijo.

{ 
    "name": "n1", 
    ... 
    "hostname": "chef-n1", 
    "fqdn": "chef-n1.dan.lan", 
    "domain": "dan.lan", 
    "ipaddress": "192.168.4.4", 
    "macaddress": "52:54:00:72:E7:C5", 
Cuestiones relacionadas