如何确保Ansible命令仅运行一次

时间:2019-10-05 20:26:13

标签: ansible

在我的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 :(得分:0)

directive run_once可能不是您所需要的,因为它将所有结果和事实应用于同一批中的所有主机。

尝试using 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]