Ansible use Inventory_hostname o ansible_hostname en el nombre de la tarea

19

Estoy escribiendo un libro de jugadas de actualización continua y me gustaría imprimir el nombre del host actual actualizado.

Puse inventory_hostnamey ansible_hostnameen nombres de tareas pero eso no funcionó

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

la depuración funciona bien

- name: Test a variable
  debug: var=inventory_hostname

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

Entonces, ¿qué debo hacer para poder usar esas variables en las descripciones de los nombres de tareas?

Gracias

Pregunta y aprende
fuente
44
Actualmente, la sustitución de variables no se puede hacer en nombre. Ver aquí
cuonglm

Respuestas:

27

A partir de la versión 2.0, Ansible admite la sustitución de variables en los nombres de tareas / controladores: https://github.com/ansible/ansible/issues/10347 , por lo que estos ejemplos funcionarán como se esperaba:

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

Creo que deberías escribir el {{ ansible_hostname }}después del tasks:, porque antes de eso aún no ha reunido los hechos, por lo que no puede dar el resultado. Puedo estar equivocado en el concepto, pero en la práctica fue exitoso.

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

libro de jugadas

salida de juego

pranav kumar
fuente