Ansible: O módulo `add_host` é executado apenas uma vez, no primeiro host ao qual o jogo se aplica

Criado em 14 abr. 2015  ·  3Comentários  ·  Fonte: ansible/ansible

Tipo de problema:

Relatório de erro

Semelhante ao relatório # 9931

Versão Ansible:
  • Ansible 1.8.4 (separado HEAD ebc8d48d34) atualizado pela última vez 2015/04/14 17:59:44 (GMT +000)
  • Ansible 1.9.0 (HEAD 717ffe2bea desanexado) atualizado pela última vez em 2015/04/14 17:58:24 (GMT +000)
  • Ansible 2.0.0 (devel 0345b675f8) atualizado pela última vez 2015/04/14 17:27:56 (GMT +000)
    Ambiente:

Ubuntu 14.04

Resumo:

A tarefa add_host só é executada em um único host na lista de hosts de uma peça.

Passos para reproduzir:

livro de cantadas

---
- name: Environment group_vars
  hosts: all
  gather_facts: no
  tasks:

    - debug: var=inventory_hostname

    - name: Add to group
      add_host: name={{inventory_hostname}} groups={{env}}

- name: Groups
  hosts: all
  gather_facts: no
  tasks:
    - debug: var=group_names
    - debug: var=groups[env]
    - fail: msg="done"

arquivo de inventário try.yml

10.0.0.70
10.0.1.171

execução

ansible-playbook -i ansible/try ansible/try.yml -e 'env=acceptance'

Resultados esperados:

Espero que a tarefa que usa o módulo add_host , Adicionar ao grupo , seja executada duas vezes: uma para cada host na peça. No final da peça, cada anfitrião estaria no grupo acceptance .

Resultados reais:
PLAY [Environment group_vars] *************************************************

TASK: [debug var=inventory_hostname] ******************************************
ok: [10.0.0.70] => {
    "var": {
        "inventory_hostname": "10.0.0.70"
    }
}
ok: [10.0.1.171] => {
    "var": {
        "inventory_hostname": "10.0.1.171"
    }
}

TASK: [Add to group] **********************************************************
ok: [10.0.0.70]

PLAY [Groups] *****************************************************************                                                                                                                                                                                        [30/1905]

TASK: [debug var=group_names] *************************************************
ok: [10.0.0.70] => {
    "var": {
        "group_names": [
            "acceptance",
            "ungrouped"
        ]
    }
}
ok: [10.0.1.171] => {
    "var": {
        "group_names": [
            "ungrouped"
        ]
    }
}

TASK: [debug var=groups[env]] *************************************************
ok: [10.0.0.70] => {
    "var": {
        "groups[env]": [
            "10.0.0.70"
        ]
    }
}

TASK: [debug var=groups[env]] *************************************************
ok: [10.0.0.70] => {
    "var": {
        "groups[env]": [
            "10.0.0.70"
        ]
    }
}
ok: [10.0.1.171] => {
    "var": {
        "groups[env]": [
            "10.0.0.70"
        ]
    }
}

TASK: [fail msg="done"] *******************************************************
failed: [10.0.0.70] => {"failed": true}
msg: done
failed: [10.0.1.171] => {"failed": true}
msg: done

FATAL: all hosts have already failed -- aborting

Comentários muito úteis

@bcoca , e se eu quiser adicionar um novo host ao inventário para cada host de outro grupo?

Todos 3 comentários

Possível mal-entendido

Oi!

Muito obrigado por seu envio para a Ansible. Sinceramente, significa muito para nós.

Acreditamos que o tíquete que você solicitou está sendo mal interpretado, pois uma coisa funciona de maneira um pouco diferente do que foi declarado.

Em particular, este é o comportamento esperado, que está documentado nesta página (a nota):

http://docs.ansible.com/add_host_module.html#id3

No futuro, este pode ser um tópico mais adequado para a lista de usuários, que você também pode postar aqui se desejar mais ajuda com o acima.

Obrigado mais uma vez por isso e pelo seu interesse na Ansible!

em qualquer caso, você não está adicionando novos hosts ao inventário, você pode querer usar a diretiva group_by.

@bcoca , e se eu quiser adicionar um novo host ao inventário para cada host de outro grupo?

Esta página foi útil?
0 / 5 - 0 avaliações