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

Mik*_*lan 46 ansible ansible-playbook

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

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

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

roles:
  - { role: webserver, port: 5000, tags: [ 'web', 'foo' ] }
Run Code Online (Sandbox Code Playgroud)

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

jar*_*arv 48

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

  1. 在命令行上指定标记
  2. 使用变量而不是标记来有条件地运行任务
  3. 将您的Web服务器角色拆分为多个角色,并使用角色依赖关系来执行常见任务

此功能请求已经在邮件列表上出现了几次,我没有看到开发团队有任何迹象表明它将被添加为新功能.

  • 令人惊讶的是,更多的人并不是在为此而吵着!谢谢你的回答 (17认同)