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

时间:2017-10-17 18:03:42

标签: tags ansible roles

我正在使用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

当我使用上面的roles语句运行它时,我希望运行ami,launch_config和asg任务,但此外还运行ami_lc_cleanup任务。

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

1 个答案:

答案 0 :(得分:1)

条件包含应使用static: no not 定义为静态。

修改

根据您的评论,您误解了剧本中的tags声明。这不是包含已定义标记的角色,而是包含基于命令行中给出的标记的角色。

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

如果你想为你的剧本中的角色定义一个条件,你应该使用变量/事实。

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