1

所以我有一个类似于roles/base/tasks/main.yml 的结构和roles/ 目录上方的另一个文件,名称为base.yml,它基本上调用了基本角色。我的问题是这个,ansible docs建议

roles:
  - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }

如果我有一个定义为“web”的标签,则调用 main.yml。我试过了,但没用,是的,我也在 reddit 上看到了一篇帖子 ---> https://www.reddit.com/r/ansible/comments/3628s8/question_about_using_tags_in_roles/

Soo 有没有办法使用 .yml 而不是 adhoc 命令调用角色中定义的标签,因为我的部署策略不允许我运行 adhoc 命令

4

1 回答 1

1

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

你在这里的例子:

roles:
  - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }

webserver实际上将使用标签web和标签标记角色的每个任务foo

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

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

于 2015-08-16T07:33:47.917 回答