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

如何确保Ansible命令只运行一次,ansible,Ansible,在我的Ansible设置中,我使用一些只能运行一次的API调用。但是如何确保一个命令只运行一次呢? 我尝试了以下代码,但不起作用: name: network config | Create MAAS default space block: - name: Create Space command: 'maas {{ maas__profile }} spaces create name=default' register: defa

在我的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\u hostname==ansible\u play\u hosts[0]”的解决方案,我也无法使其正常工作。

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

当:ansible\u hostname==ansible\u play\u hosts[0]时,请尝试使用
(假设您先收集事实,
收集事实:True

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

当:ansible\u hostname==ansible\u play\u hosts[0]
时,请尝试使用
(假设您先收集事实,
收集事实:True


有一个
run\u once
标志。你试过了吗?是的,我试过以下方法:-name:network config | Create MAAS default space命令:'MAAS{{{MAAS_uprofile}}spaces Create name=default'run_once:true但这也不起作用。该命令已运行多次。您在我的解决方案中看到了什么错误消息?MAAS服务器仅显示一条标准错误消息,说明已存在具有该名称的空间,因为该命令可以多次运行。由于您已尝试执行该命令,任何后续试验(即使只执行一次)都会触发错误“具有该名称的空间已存在”,这难道不合理吗?有一个
run\u once
标志。你试过了吗?是的,我试过以下方法:-name:network config | Create MAAS default space命令:'MAAS{{{MAAS_uprofile}}spaces Create name=default'run_once:true但这也不起作用。该命令已运行多次。您在我的解决方案中看到了什么错误消息?MAAS服务器仅显示一条标准错误消息,说明已存在具有该名称的空间,因为该命令可以多次运行。由于您已尝试执行该命令,接下来的任何审判,即使只执行一次,都会触发错误“一个同名的空间已经存在”,这难道不合理吗?
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]