Ansible SSH错误,虽然标准的SSH正在工作

我想把剧本应用到本地主机

ansible-playbook site.yml --limit localhost -vvvv 

我得到了

 TASK [setup] ******************************************************************* <127.0.0.1> ESTABLISH SSH CONNECTION FOR USER: root <127.0.0.1> SSH: EXEC ssh -C -vvv -o ControlMaster=no -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 -tt 127.0.0.1 '/bin/sh -c '"'"'mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1456926531.44-231334347877988 `" && echo "` echo $HOME/.ansible/tmp/ansible-tmp-1456926531.44-231334347877988 `"'"'"'' <127.0.0.1> PUT /tmp/tmpBYEsRj TO /root/.ansible/tmp/ansible-tmp-1456926531.44-231334347877988/setup <127.0.0.1> SSH: EXEC sftp -b - -C -vvv -o ControlMaster=no -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 '[127.0.0.1]' fatal: [127.0.0.1]: UNREACHABLE! => {"changed": false, "msg": "SSH Error: data could not be sent to the remote host. Make sure this host can be reached over ssh", "unreachable": true} 

如果我运行ssh localhost它正在工作。 组态:

 $ cat ansible.cfg [defaults] hostfile = hosts remote_user = root host_key_checking = False [ssh_connection] control_path = /tmp ssh_args = -o ControlMaster=no 

您需要将连接设置为local localhost。

使用以下内容创build相对于您的手册的文件host_vars/localhost

 --- ansible_connection: local ... 

另外,你也可以用--connection=local选项来调用剧本,但是如果你想把一个任务委托给本地主机的话,最好有上面的文件。