Ansible: Модуль add_host выполняется только один раз на первом хосте, к которому применяется игра.

Созданный на 14 апр. 2015  ·  3Комментарии  ·  Источник: ansible/ansible

Тип проблемы:

Сообщение об ошибке

Аналогичен отчету №9931

Версия Ansible:
  • Ansible 1.8.4 (отделенная HEAD ebc8d48d34) последнее обновление 2015/04/14 17:59:44 (GMT +000)
  • Ansible 1.9.0 (отключенная HEAD 717ffe2bea) последнее обновление 2015/04/14 17:58:24 (GMT +000)
  • Ansible 2.0.0 (devel 0345b675f8) последнее обновление 2015/04/14 17:27:56 (GMT +000)
    Среда:

Ubuntu 14.04

Резюме:

Задача add_host выполняется только на одном хосте в списке хостов игры.

Действия по воспроизведению:

учебник

---
- 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"

файл инвентаря try.yml

10.0.0.70
10.0.1.171

исполнение

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

Ожидаемые результаты:

Я ожидаю, что задача, использующая модуль add_host , Добавить в группу , будет выполняться дважды: один раз для каждого хоста в игре. В конце игры каждый хост будет в группе acceptance .

Фактические результаты:
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

Самый полезный комментарий

@bcoca , а что, если я хочу добавить новый хост в инвентарь для каждого хоста из другой группы?

Все 3 Комментарий

Возможное недоразумение

Привет!

Большое спасибо за отправку в Ansible. Это очень много значит для нас.

Мы считаем, что поданный вами билет неправильно поняли, поскольку одно работает немного иначе, чем указано.

В частности, это ожидаемое поведение, которое задокументировано на этой странице (примечание):

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

В будущем эта тема может быть более подходящей для списка пользователей, который вы также можете опубликовать здесь, если вам нужна дополнительная помощь по вышеуказанному.

Еще раз спасибо за это и за проявленный интерес к Ansible!

в любом случае вы не добавляете новые хосты в инвентарь, вместо этого вы можете использовать директиву group_by.

@bcoca , а что, если я хочу добавить новый хост в инвентарь для каждого хоста из другой группы?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги