È possibile utilizzare inventario_hostname o ansible_hostname nel nome dell'attività


19

Sto scrivendo un playbook di aggiornamento progressivo e vorrei stampare il nome host dell'host corrente aggiornato.

Ho messo inventory_hostnamee ansible_hostnamein nomi delle attività, ma che non ha funzionato

- name: upgrade softare on {{inventory_hostname}}
- name: current host is {{ansible_hostname}}

il debug funziona bene

- name: Test a variable
  debug: var=inventory_hostname

TASK: [Test a variable] ******************************************************* 
ok: [SERV14] => {
    "var": {
        "inventory_hostname": "SERV14"
    }
}

Quindi cosa devo fare per essere in grado di usare quelle variabili nelle descrizioni dei nomi delle attività.

Grazie


4
Attualmente, la sostituzione delle variabili non può essere effettuata nel nome. Vedi qui
cuonglm

Risposte:


27

A partire da v2.0 Ansible supporta la sostituzione variabile nei nomi di task / gestore: https://github.com/ansible/ansible/issues/10347 , quindi questi esempi funzioneranno come previsto:

- name: upgrade software on {{inventory_hostname}}
- name: current host is {{ansible_hostname}}

0

Penso che dovresti scrivere il {{ ansible_hostname }}dopo il tasks:, perché prima non ha ancora raccolto i fatti, quindi non può dare il risultato. Potrei sbagliarmi sul concetto, ma in pratica ha avuto successo.

tasks:
  - name: Install the httpd on {{ ansible_hostname }}
    yum: 
      name: httpd 
      state: latest

playbook

riprodurre l'output

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.