想要 运行 远程主机上的 ansible 任务
Want to run ansible tasks on remote host
在我的场景中,我有三台机器 localhost、host2 和 host3 的清单。我想在 host3 上 运行 一些 tasks/commands 而我的 ansible 剧本仍在 host2 上播放而不从 host2 切换到 host3 - 这可能吗?我可以使用 local_action 模块,但是 运行 是本地主机上的任务,但我希望命令在主机 2 上时在主机 3 上执行。如果有人能指点一下就太好了。下面可能会解释我想要实现的目标:
- name: Playing host2
hosts: host2
become: yes
tasks:
- name: run following commands on host3
local_action: command <command1 for host3>
local_action: command <command2 for host3>
- name: continue to run host2
command: <command for host2>
有没有 local_action 的替代品,这样我就可以 运行 host3 而不是 127.0.0.1 上的命令?
非常感谢,
迪帕克
在这种情况下,您可以使用 delegate_to。如果您 运行 在一台主机上玩游戏(“主机:”中提到了一台主机),您可以简单地使用 delegate_to 将特定命令委托给其他机器:
- name: Playing host2
hosts: host2
become: yes
tasks:
- name: run following commands on localhost.
shell: hostname
delegate_to: 127.0.0.1
- name: continue to run host2
shell: hostname
此外,当您的目标列表包含一组节点(在“主机:”中指定的组)时,在这种情况下连同 delegate_to,您也应该使用 run_once:
- name: Playing on group of hosts.
hosts: someGroup
become: yes
tasks:
- name: run following commands on localhost.
shell: hostname
delegate_to: 127.0.0.1
run_once: true
- name: continue to run on group hosts.
shell: hostname
编辑: 从 localhost 连接到 host3 时将使用无密码身份验证。因此,请确保您已经配置了基于密钥的身份验证。
注意:您始终可以将多个剧本放在一个剧本中。因此,如果您在 host2 上有一组命令 运行,然后在 host3 上有一组命令 运行,我建议在单个剧本中使用多个播放。
在我的场景中,我有三台机器 localhost、host2 和 host3 的清单。我想在 host3 上 运行 一些 tasks/commands 而我的 ansible 剧本仍在 host2 上播放而不从 host2 切换到 host3 - 这可能吗?我可以使用 local_action 模块,但是 运行 是本地主机上的任务,但我希望命令在主机 2 上时在主机 3 上执行。如果有人能指点一下就太好了。下面可能会解释我想要实现的目标:
- name: Playing host2
hosts: host2
become: yes
tasks:
- name: run following commands on host3
local_action: command <command1 for host3>
local_action: command <command2 for host3>
- name: continue to run host2
command: <command for host2>
有没有 local_action 的替代品,这样我就可以 运行 host3 而不是 127.0.0.1 上的命令?
非常感谢, 迪帕克
在这种情况下,您可以使用 delegate_to。如果您 运行 在一台主机上玩游戏(“主机:”中提到了一台主机),您可以简单地使用 delegate_to 将特定命令委托给其他机器:
- name: Playing host2
hosts: host2
become: yes
tasks:
- name: run following commands on localhost.
shell: hostname
delegate_to: 127.0.0.1
- name: continue to run host2
shell: hostname
此外,当您的目标列表包含一组节点(在“主机:”中指定的组)时,在这种情况下连同 delegate_to,您也应该使用 run_once:
- name: Playing on group of hosts.
hosts: someGroup
become: yes
tasks:
- name: run following commands on localhost.
shell: hostname
delegate_to: 127.0.0.1
run_once: true
- name: continue to run on group hosts.
shell: hostname
编辑: 从 localhost 连接到 host3 时将使用无密码身份验证。因此,请确保您已经配置了基于密钥的身份验证。
注意:您始终可以将多个剧本放在一个剧本中。因此,如果您在 host2 上有一组命令 运行,然后在 host3 上有一组命令 运行,我建议在单个剧本中使用多个播放。