如果该控制服务器没有运行 SSH 守护程序,我如何在 Ansible 控制服务器上运行本地命令?
如果我运行以下剧本:
- name: Test commands
hosts: localhost
connection: local
gather_facts: false
tasks:
- name: Test local action
local_action: command echo "hello world"
我收到以下错误:
fatal: [localhost]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host localhost port 22: Connection refused", "unreachable": true}
看来
local_action
与 delegate_to: 127.0.0.1
相同,所以 Ansible 尝试通过 ssh 连接到本地主机。但是,本地 Controller 主机上没有运行 SSH 守护程序(仅在远程机器上)。所以我的直接问题是如何从 Ansible 运行特定命令,而无需 Ansible 首先尝试通过 SSH 连接到 localhost。
关键的补充,不在原来的问题中:
我的 host_vars 包含以下行:
ansible_connection: ssh
最佳答案
how to run a specific command from Ansible, without Ansible first trying to SSH to localhost.
connection: local
足以使任务在不使用 SSH 的情况下在 Controller 中运行。尝试,
- name: Test commands
hosts: localhost
connection: local
gather_facts: false
tasks:
- name: Test local action
command: echo "hello world"
关于Ansible local_action 在没有本地 ssh 守护进程的主机上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61295544/