Ansible,通过标签调用特定角色任务不起作用,所有任务都在 运行

Ansible, call specific role tasks via tags isn't working, all tasks are being ran

我正在使用 Ansible 2.3.2.0,并且正在调用一个 运行 正在执行 4 个不同任务的角色。

当我通过剧本调用角色并指定特定标签时,整个角色和所有任务都在运行。我看到这是 ansible 2.0 之后的一个已知问题,建议的解决方法是在 include 语句下添加一个静态指令。我试过了,但所有任务仍然是 运行。 这是剧本中的角色声明...

roles:
    - {role: ansible-role-auto-deploy, tags: [ 'ami', 'launch_config', 'asg']}

这里是角色'main.yml

---

- include: ami.yml
  static: yes
  tags:
    - ami

- include: launch_config.yml
  static: yes
  tags:
    - launch_config

- include: asg.yml
  static: yes
  tags:
    - asg

- include: ami_lc_cleanup.yml
  static: yes
  tags:
    - ami_lc_cleanup

当我 运行 使用上面的角色语句时,我希望 ami、launch_config 和 asg 任务是 运行,但除此之外还有 ami_lc_cleanup任务也在 运行.

任务都有效,我只是不知道如何限制正在执行的任务运行。有没有人对如何让它工作有任何建议(能够通过标签指定任务)?

条件包含应该被定义为静态使用static: no

编辑

根据您的评论,假设您误解了剧本中的 tags 语句。这不是包含具有定义标签的角色,而是包含基于命令行给出的标签的角色。

哪些标签在你的游戏中处于活动状态仅由命令行定义(据我所知,我也在学习ansible)。

如果您想在剧本中为角色定义条件,您应该使用 variables/facts。

使用 ansible-playbook --tags ami,launch_config,asg 调用您的剧本以跳过清理过程。在剧本中定义标签时,当 ami_lc_cleanup 被定义为命令行上的标签而没有其他三个标签中的任何一个时,您会阻止执行角色。