Как убедиться, что команда Ansible запускается только один раз - PullRequest
1 голос
/ 05 октября 2019

В моей настройке Ansible я использую некоторые вызовы API, которые можно выполнить только один раз. Но как мне убедиться, что команда запускается только один раз? Я пробовал следующий код, но он не работает:

    name: network config | Create MAAS default space
    block:
      - name: Create Space
        command: 'maas {{ maas__profile }} spaces create name=default'
        register: default_space_created_status
      - name: Set status
        set_fact:
          default_space_created_status
    when: not default_space_created_status.changed

Я также пытался использовать флаг run_once, но это тоже не работает. Команду можно запускать несколько раз.

Редактировать: Предлагаемое решение использования 'ansible_hostname == ansible_play_hosts [0]', я тоже не могу заставить его работать.

1 Ответ

0 голосов
/ 06 октября 2019

Директива run_once может быть не совсем тем, что вам нужно, поскольку она будет применять все результаты и факты ко всем хостам в одном пакете.

Попробуйте вместо этого, используя ansible_hostname when: ansible_hostname == ansible_play_hosts[0] (при условии, что вы сначала собрали факты, gather_facts: True)

name: network config | Create MAAS default space
    block:
      - name: Create Space
        command: 'maas {{ maas__profile }} spaces create name=default'
        register: default_space_created_status
      - name: Set status
        set_fact:
          default_space_created_status
    when: ansible_hostname == ansible_play_hosts[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...