2011-10-16 8 views
20

Próbowałem dowiedzieć się, jak uzyskać nazwę węzła (knife bootstrap -N) w szablonie. Wypróbowałem tuzin różnych pomysłów i nie znalazłem jeszcze niczego, co jeszcze działa. Czy ktoś wie, jak uzyskać dostęp do tego z przepisu szefa kuchni?Nazwa węzła w szablonie szefa kuchni?

Również - czy istnieje sposób na wylistowanie wszystkich zmiennych dostępnych przepisowi szefa kuchni?

Odpowiedz

30

Możesz użyć Chef::Config[:node_name] w swoim przepisie. Znalazłem to w książce kucharskiej-kucharza z Opscode.

+2

Zgadzam się z @anaudmeuret, to rozwiązanie sprawdziło się u mnie w Shef i przepisie, gdzie przyjęta odpowiedź nie. – jslatts

+1

Pierwotne pytanie brzmi, jak uzyskać dostęp do nazwy węzła w szablonie. Ta odpowiedź na to nie działa. W rzeczywistości <% = node.name%> jest kompletną składnią pliku .erb i jest to, jak uzyskać dostęp do nazwy węzła w szablonie. – Andrew

+0

Wygląda na to, że składnia szablonu i składnia receptury są różne. Mam szablon, który używa składni <% = nazwa węzła%> I użyłem powyższej składni Chef :: Config [: nazwa_węzła] w recepturze – jorfus

34

Czystsze bardziej zwięzły sposób przedstawiono na stronie wiki: Attributes. „Węzeł”

node.name 
+1

To daje nazwę FQDN. Jakikolwiek sposób uzyskać krótkie imię? –

+2

Nie znam sposobu na to, aby to zrobić, ale node.name.split ('.') [0] działa dobrze. –

+2

Powinieneś zawsze używać składni węzła [: atrybut] podczas pobierania atrybutów szefa kuchni. Atrybut derowany ohai znajduje się w węźle [: nazwa hosta] –

4

żeby zobaczyć wszystkie polecenia węzeł specyficzny rodzaj atrybuty

knife node edit <name> -a 

klucze pierwszego stopnia z dostępnych prefiks.

{ 
    "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", 
Powiązane problemy