如何在剧本中设置Ansible标签?

时间:2019-04-20 07:25:57

标签: ansible

我想根据条件值跳过一些比赛。 一开始我可以有一个任务,当满足条件时可以跳过其他一些任务。

我知道我总是可以使用set_fact并将其作为运行其他游戏(角色和任务)的条件,或者直接在我要跳过的每个游戏中评估所述条件。

但是,由于这些剧本已经具有标记系统,因此可以在Ansible中使用set_tags之类的东西来避免在整个剧本中添加条件并使已经很沉重的剧本肿。 / p>

诸如:

- name: skip terraform tasks if no file is provided
  hosts: localhost
  tasks:
    set_tags:
      - name: terraform
        state: skip
    when: terraform_files == ""

我想跳过的两部戏:

- name: bootstrap a testing infrastructure
  hosts: localhost
  roles:
    - role: terraform
      state: present
  tags:
    - create_servers
    - terraform

[...]

- name: flush the testing infrastructure
  hosts: localhost
  roles:
    - role: terraform
      state: absent
  tags:
    - destroy_servers
    - terraform

1 个答案:

答案 0 :(得分:0)

如果我理解正确,则应该执行以下操作。

- name: bootstrap a testing infrastructure
  hosts: localhost
  roles:
    - role: terraform
      state: present
      when: terraform_files != ""
  tags:
    - create_servers
    - terraform

[...]

- name: flush the testing infrastructure
  hosts: localhost
  roles:
    - role: terraform
      state: absent
      when: terraform_files != ""
  tags:
    - destroy_servers
    - terraform

这基本上与在角色中的每个任务上设置when子句相同。因此,如果条件为假,将检查每个任务,但会跳过。