【发布时间】:2017-07-11 13:20:43
【问题描述】:
我有一个简单的 ansible 角色和这个角色中的几个基本任务。所有任务都定义为local_action(或delegate_to: localhost)。 playbook 中定义的主机也是localhost。
现在当我运行这个剧本时,它首先会在执行角色/任务之前尝试测试 ssh 连接。这不是问题,但我发现在运行明确将localhost 作为主机的剧本之前,没有必要建立或测试 ssh 连接。以下是我的剧本 (playbook.yml) 的样子:
- hosts: db-servers
roles:
- role: test
角色定义(roles/test/tasks/main.yml)如下所示:
---
- name: Resolve and copy test configuration
template:
src: "roles/test/templates/temp.conf"
dest: "roles/test/files/temp-4.2.0/temp.conf"
delegate_to: 127.0.0.1
become: no
- name: Run test job
delegate_to: 127.0.0.1
command: roles/test/files/test-4.2.0/test.sh
become: no
以下是我的库存文件inv/test:
[db-servers]
localhost
我正在使用这个命令来运行我的剧本:
ansible-playbook -i inv/test playbook.yml -vvv
无论如何我可以阻止这个 ssh 连接检查?
【问题讨论】:
-
如果剧本指定
hosts: 127.0.0.1,那么delegate_to: 127.0.0.1是不必要的。 -
是的,但是即使任务是
delegate_to: 127.0.0.1,ansible 仍然会在开始时尝试 ssh 到127.0.0.1。我的目标是完全避免这种不必要的 ssh。 -
是的——为此,@techraf 提出了正确的建议:
connection: local。