2 ansible
我有一个 ansible 清单文件,如下所示:
[database]
172.29.225.95 is_master=true
172.29.225.93 is_master=false
172.29.225.94 is_master=false
Run Code Online (Sandbox Code Playgroud)
我只想在主节点上运行我的剧本,172.29.225.95但是 Ansible 中是否有一种方法可以简单地选择一个我想在其上运行剧本的节点?
我试过一个肮脏的黑客。它只是在我的库存文件中添加一个新条目并仅使用该组。
[database-master]
172.29.225.95
Run Code Online (Sandbox Code Playgroud)
进而
- name: Perform Health Checks.
hosts: database-master
tasks:
- name: Check Postgres cluster status.
shell: /usr/efm-2.0/bin/efm cluster-status efm
register: output
Run Code Online (Sandbox Code Playgroud)
但我觉得这只是一种解决方法,而不是一个可靠的解决方案。所以只与[database]组一起工作,我可以让 Ansible 只运行剧本172.29.225.95吗?
您可以在您的任务中使用run_once选项。这告诉您的 playbook 仅在您组的第一个主机上运行任务。如果您有一个特定的主机可以运行它,您可以将它与delegate_to结合使用
所以在你的例子中,这看起来像这样,而 database-master 只是你主人主机名的占位符:
tasks:
- name: Check Postgres cluster status.
shell: /usr/efm-2.0/bin/efm cluster-status efm
run_once: true
delegate_to: database-master
register: output
Run Code Online (Sandbox Code Playgroud)
另请参阅官方ansible 文档。
| 归档时间: |
|
| 查看次数: |
4341 次 |
| 最近记录: |