Tags Ansible,通过标签isn'调用特定角色任务;t工作,正在运行所有任务

Tags Ansible,通过标签isn'调用特定角色任务;t工作,正在运行所有任务,tags,ansible,roles,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.

我正在使用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任务也在运行


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

不应使用
static:no将条件包含定义为静态

编辑

假设从你的评论中你误解了剧本中的
标签
语句。这不是要包含具有已定义标记的角色,而是要包含基于命令行中给定标记的角色

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

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


使用ansible playbook--tags ami、launch_config、asg调用您的playbook来跳过清理过程。在playbook中定义标记时,如果将
ami\u lc\u cleanup
定义为命令行上的标记,而没有其他三个标记中的任何一个,则会阻止角色执行。

这没有多大帮助,您可以详细说明吗?您已将包含定义为
静态:yes
,但是当使用诸如
when
之类的条件时,或者在您的情况下使用
标记时,它应该是
static:no
。我尝试切换到static:no,没有区别。使用--list tags和--list tasks选项,我可以看到前3个任务是使用标记运行的:[ami、asg和launch_config],然后当它到达最后一个任务时,即使在调用playbook中没有标记,它也会运行。因此它必须从角色继承标记…好的,它确实有效,如果我将playbook角色行设置为:-{role:ansible role auto deploy},然后使用--tags ami,asg,launch_config调用playbook,那么它只运行通过--tagsOk引用的指定任务,返回并读取关于标记、角色等的ansible文档,因为具体用法不太清楚。爱易变,有时恨自己的文件