Ansible + 10.11.6

dig*_*gon 1 python macos ansible ansible-playbook

我在(非常)干净的10.11.6安装上遇到了一个奇怪的问题.我已经安装了brew,zsh,oh-my-zsh,Lil'switch和1password(并且没有其他内容).我安装了ansible ...

brew install ansible

......这是成功的.然后我去了一个预先存在的(并且简单的疯狂)Ansible项目并做了...

ansible -m ping all

然后它让我输入我的SSH密码.我已恢复以前安装的密钥,但我之前没有进入服务器.我输入密码并且ansible返回...

$ ansible -m ping all               
host1 | UNREACHABLE! => {
"changed": false, 
"msg": "Failed to connect to the host via ssh.", 
"unreachable": true
}
Run Code Online (Sandbox Code Playgroud)

然后我ssh进入服务器检查一切都很好,它连接没有任何问题.

然后我重新跑了...

$ ansible -m ping all

它又回来了......

host1 | FAILED! => {
"changed": false, 
"failed": true, 
"module_stderr": "", 
"module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n", 
"msg": "MODULE FAILURE", 
"parsed": false
}
Run Code Online (Sandbox Code Playgroud)

......这有点奇怪?它似乎在说它不能再找到python,尽管它第一次发现它?

$ which python 回报 /usr/bin/python

$ python --version 回报 Python 2.7.10

$ which ansible 回报 /usr/local/bin/ansible

$ ansible --version 回报

ansible 2.1.1.0
config file = /pathtoproject/ansible.cfg
configured module search path = Default w/o overrides
Run Code Online (Sandbox Code Playgroud)

我故意没有安装pyenv,virtualenv等.

/usr/bin/python 肯定在那里,我可以毫无问题地运行python.

救命?!:-)我是一个Ruby开发者,我不禁想到我错过了一些明显的东西,但据我所知,所有的版本都检查出来,一切都应该正常工作.我尝试将我的shell更改为sh并重新运行,ansible -m ping all但它以同样的方式失败.

有任何想法吗?

zab*_*ech 5

如果远程主机上没有安装python,则会发生这种情况.该ansible文档 建议做这个手工每个主机:ansible myhost --sudo -m raw -a "yum install -y python2 python-simplejson"

但是我认为在你的剧本开头使用这个片段引导所有主机更好:

- name: Bootrstrap python hosts: localhost tasks: raw: sudo apt-get update && sudo apt-get -y python-simplejson delegate_to: '{{ item }}' with_items: {{ groups["hosts"] }}