我的游戏中有3个主机。Ansible目标特定主机(不是delegate_to)
[机器]
- MACHINEA
- 到machineB
- 机C
MongoDB的这些服务器上运行。其中一台服务器可以是Mongo的MasterDB。
因此,这些机器中的每一个都可以是'主'。这是通过设置这样的事实,如果机器是高手,在这个例子中仅MACHINEA的目标是确定的:
- name: check if master
shell: 'shell command to check if master'
set_fact: MasterHost="machineA"
when: 'shell command to check if master'.stdout == "true"
这也是到machineB和机C完成。
实现目标:仅在主机上运行命令,该主机具有“MasterHost”事实。 我试过delegate_to模块,但也delegate_to使用两个其他机器:
- name: some task
copy: src=/tmp/test.txt dest=/tmp/test.txt
delegate_to: "{{ MasterHost }}"
我要定位的主人在我的剧本和运行只能通过命令--limit上的主,而不是在壳选项。
'shell'和'set_fact'是模块,因此你的第一个任务包含语法错误。你的第二个任务目的完全不清楚。好像你只需要'when:master.stdout ==“true”',但除非你指定了你想要的,这是一个猜谜游戏。 – techraf
这是一个基本的例子,抛开了语法错误。 我想在MasterHost上执行命令,并排除播放中的其他主机。 – Kevin