如何使用Ansible标记调用角色??

如何使用Ansible标记调用角色??,ansible,devops,Ansible,Devops,因此,我有一个类似roles/base/tasks/main.yml的结构&另一个文件位于roles/目录的正上方,名为base.yml,它基本上调用基本角色。 我的问题是,ansible医生建议 roles: - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] } 如果我有一个定义为“web”的标记,则调用main.yml。我试过了,但没用&是的,我也在reddit上看到一篇帖子--> 有没有一种方法可以使用.yml而不是adh

因此,我有一个类似roles/base/tasks/main.yml的结构&另一个文件位于roles/目录的正上方,名为base.yml,它基本上调用基本角色。 我的问题是,ansible医生建议

roles:
  - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }
如果我有一个定义为“web”的标记,则调用main.yml。我试过了,但没用&是的,我也在reddit上看到一篇帖子-->


有没有一种方法可以使用.yml而不是adhoc命令调用角色中定义的标记,因为我的部署策略不允许我运行adhoc命令

没有,除了从命令行使用
--tags
调用它之外,没有其他方法可以指定活动标记

您的示例如下:

roles:
  - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }
将实际使用标记
web
foo
标记角色
webserver
的每个任务

我认为您想要的是只在
webserver
中触发任务,该任务被标记为
web
和/或
foo
。目前没有内置的方式

可能有一个解决方案,通过创建一个自定义操作插件,将标签注入Ansible的
runner
对象。操作插件根本没有文档记录,您需要查看一些已实现操作的源代码。我曾经创建了一个与runner对象交互的函数,注入变量。标记可能以类似的方式工作。如果您遵循这条路径,请注意Ansible 2将包含大的重构,我几乎可以肯定这样的插件会崩溃