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

时间:2014-09-04 20:41:53

标签: ansible ansible-playbook

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

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

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

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

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

2 个答案:

答案 0 :(得分:48)

当前版本的Ansible只有以下选项:

  1. 在命令行上指定标记
  2. 使用变量代替标记来有条件地运行任务
  3. 将您的网络服务器角色拆分为多个角色,并将角色依赖关系用于常见任务
  4. 此功能请求has come up on the mailing list a few times我没有看到开发团队有任何迹象表明它将被添加为新功能。

答案 1 :(得分:0)

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

您可以在我对其他人的类似问题here的回答中看到更多信息。