0

我是 anisble 的新手...

我想确保 mongo 在所有带有 tag_role_mongo 标记的主机上运行,​​并且节点在 tag_role_node 上运行

是否可以覆盖主机变量

hosts: {{ item.tag_name }} 
  tasks:
   command: // check ps output {{ item.process_name }} 
with_items:
  - tag_name: tag_role_mongo
    process_name: "mongo"
  - tag_name: tag_role_node
    process_name: "node"

我很确定,我的语法不正确,我的问题是甚至可以使用剧本来做这样的事情。在所有剧本示例中,主机是固定的,或者可以使用额外参数选项从命令行覆盖。

任何例子都会很有帮助

4

1 回答 1

1

我不完全确定我是否正确理解了您的问题,但标签不是在主机级别而是在任务级别添加的 - 请参阅文档。您可能的意思是对两个不同的组(mongo 和 node)执行相同的命令。为此,您可以将您的剧本分成两部分:

hosts: mongo_hosts 
tasks:
  command: ...

hosts: node_hosts
tasks:
  command: ...

不是很好,但应该可以解决问题。您还可以创建一个角色并将要检查的进程名称传递给该角色,因此维护变得更加容易。

于 2017-03-18T19:13:39.013 回答