it-swarm.com.de

Ansible verwendet inventar_hostname oder ansible_hostname im aufgabennamen

Ich schreibe ein fortlaufendes Upgrade-Playbook und möchte den Hostnamen des aktuell aktualisierten Hosts ausdrucken.

Ich lege inventory_hostname und ansible_hostname in Aufgabennamen, aber das hat nicht funktioniert

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

debug funktioniert gut

- name: Test a variable
  debug: var=inventory_hostname

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

Was soll ich also tun, um diese Variablen in Beschreibungen der Aufgabennamen verwenden zu können?.

Vielen Dank

20
Ask and Learn

Ab Version 2.0 unterstützt Ansible das Ersetzen von Variablen in Task-/Handlernamen: https://github.com/ansible/ansible/issues/10347 , sodass diese Beispiele wie erwartet funktionieren:

- name: upgrade software on {{inventory_hostname}}
- name: current Host is {{ansible_hostname}}
30
anlar

Ich denke, Sie sollten den {{ ansible_hostname }} Nach dem tasks: Schreiben, da er zuvor noch keine Fakten gesammelt hat, sodass er das Ergebnis nicht liefern kann. Ich kann mich in dem Konzept irren, aber in der Praxis war es erfolgreich.

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

(playbook

(play output

0
pranav kumar