Ansible local_action 在没有本地 ssh 守护进程的主机上

标签 ansible

如果该控制服务器没有运行 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_actiondelegate_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/

相关文章:

Ansible:没有匹配的主机

bash - 如何在ansible shell模块中转义特殊字符

ansible - 使用Ansible比较两个文件

Ansible - 执行时需要用户输入的控制命令

Vagrant 与适用于 Windows 虚拟机的 Ansible

loops - Ansible - 使用键列表过滤字典

loops - 根据主机组安装不同的 PHP 包

python - 所有主机的 Ansible 追加字典结果

ansible 更改字典列表中的值

ansible - 使用 celery 以编程方式运行 ansible playbooks