É possível usar o inventário_hostname ou ansible_hostname no nome da tarefa

19

Estou escrevendo um manual de atualização contínua e gostaria de imprimir o nome do host atual que foi atualizado.

Coloquei inventory_hostnamee ansible_hostnamenos nomes das tarefas, mas isso não funcionou

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

depuração funciona bem

- name: Test a variable
  debug: var=inventory_hostname

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

Então, o que devo fazer para poder usar essas variáveis ​​nas descrições de nomes de tarefas.

obrigado

Peça e aprenda
fonte
4
Atualmente, a substituição de variável não pode ser feita no nome. Veja aqui
cuonglm

Respostas:

27

A partir da versão 2.0, o Ansible suporta a substituição de variáveis ​​nos nomes de tarefas / manipuladores: https://github.com/ansible/ansible/issues/10347 , portanto, esses exemplos funcionarão conforme o esperado:

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

Eu acho que você deveria escrever o {{ ansible_hostname }}depois do tasks:, porque antes disso ainda não reuniu os fatos, então não pode dar o resultado. Posso estar errado no conceito, mas na prática foi bem-sucedido.

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

livro de cantadas

reproduzir saída

pranav kumar
fonte