Ansible benutze inventory_hostname oder ansible_hostname in task name

19

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

Ich habe inventory_hostnameund ansible_hostnamein 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 den Beschreibungen der Aufgabennamen verwenden zu können?

Vielen Dank

Fragen und lernen
quelle
4
Derzeit kann die Variablensubstitution nicht im Namen erfolgen. Siehe hier
Uhr

Antworten:

27

Ab v2.0 unterstützt Ansible das Ersetzen von Variablen in Task- / Handlernamen: https://github.com/ansible/ansible/issues/10347 . Die folgenden Beispiele funktionieren also wie erwartet:

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

Ich denke, Sie sollten das {{ ansible_hostname }}nachher schreiben tasks:, denn vorher hat es die Fakten noch nicht gesammelt, so dass es das Ergebnis nicht geben 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

Spielbuch

Ausgabe abspielen

pranav kumar
quelle