首页 文章

Ansible:在剧本中,按标签过滤角色而不通过命令行

提问于
浏览
42

在Ansible 1.7中,我可以使用命令行中的--tags来运行该playbooks任务的子集 .

但是我想要在我的剧本中加入一套角色,只运行与标签相匹配的任务 . 也就是说,我不想通过命令行传递它,因为它每次都是相同的 .

起初我以为是这个命令,但这恰恰相反:使用这些标记标记任务而不是基于此过滤掉它们 .

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

我可以想象使用条件实现它,但标签将是一种更优雅的方式来实现这一点 .

2 回答

  • 0

    对于当前版本的Ansible,您只有以下选项:

    • 在命令行上指定标记

    • 使用变量而不是标记来有条件地运行任务

    • 将您的Web服务器角色拆分为多个角色,并使用角色依赖关系来执行常见任务

    此功能请求has come up on the mailing list a few times并且我没有看到开发团队有任何迹象表明它将被添加为新功能 .

  • 45

    条件的使用可以满足您的需求 .

    你可以在我对另一个人类似问题的回答中看到更多信息here .

相关问题