在Ansible 1.7中,我可以使用命令行中的--tags来运行该playbooks任务的子集 .
但是我想要在我的剧本中加入一套角色,只运行与标签相匹配的任务 . 也就是说,我不想通过命令行传递它,因为它每次都是相同的 .
起初我以为是这个命令,但这恰恰相反:使用这些标记标记任务而不是基于此过滤掉它们 .
roles:
- { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }
我可以想象使用条件实现它,但标签将是一种更优雅的方式来实现这一点 .
2 回答
对于当前版本的Ansible,您只有以下选项:
在命令行上指定标记
使用变量而不是标记来有条件地运行任务
将您的Web服务器角色拆分为多个角色,并使用角色依赖关系来执行常见任务
此功能请求has come up on the mailing list a few times并且我没有看到开发团队有任何迹象表明它将被添加为新功能 .
条件的使用可以满足您的需求 .
你可以在我对另一个人类似问题的回答中看到更多信息here .