Recenlty我在现有项目中创建了名为spd的新角色。其他脚本在设置中工作正常。这个新创建的失败。请指出我这里出了什么问题
ansible/roles
spd
tasks
templates
defaults
deploy-spd.yml
- hosts:
roles:
- spd
广告资源文件
[kube-master]
kubernetes-master-1 ansible_host=10.20.0.225 ansible_user=centos ansible_become=true
kubernetes-master-2 ansible_host=10.20.0.226 ansible_user=centos ansible_become=true
kubernetes-master-3 ansible_host=10.20.0.227 ansible_user=centos ansible_become=true
失败
bash-4.3# ansible-playbook -i inventory/inventory deploy-test-ms.yml --ask-vault-pass
Vault password:
PLAY [kube-master] *************************************************************
TASK [setup] *******************************************************************
Thursday 16 March 2017 13:32:05 +0000 (0:00:00.026) 0:00:00.026 ********
fatal: [kubernetes-master-1]: FAILED! => {"failed": true, "msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program"}
fatal: [kubernetes-master-2]: FAILED! => {"failed": true, "msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program"}
fatal: [kubernetes-master-3]: FAILED! => {"failed": true, "msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program"}
PLAY RECAP *********************************************************************
kubernetes-master-1 : ok=0 changed=0 unreachable=0 failed=1
kubernetes-master-2 : ok=0 changed=0 unreachable=0 failed=1
kubernetes-master-3 : ok=0 changed=0 unreachable=0 failed=1
更新
**With failed script**
Using module file /usr/lib/python2.7/site-packages/ansible/modules/core/system/setup.py
<10.20.0.227> ESTABLISH SSH CONNECTION FOR USER: centos
Using module file /usr/lib/python2.7/site-packages/ansible/modules/core/system/setup.py
Using module file /usr/lib/python2.7/site-packages/ansible/modules/core/system/setup.py
Using module file /usr/lib/python2.7/site-packages/ansible/modules/core/system/setup.py
<172.23.169.137> ESTABLISH SSH CONNECTION FOR USER: centos
<10.20.0.225> ESTABLISH SSH CONNECTION FOR USER: centos
<10.20.0.226> ESTABLISH SSH CONNECTION FOR USER: centos
**With successfull script**
Thursday 16 March 2017 14:03:49 +0000 (0:00:00.066) 0:00:00.066 ********
Using module file /usr/lib/python2.7/site-packages/ansible/modules/core/system/setup.py
<10.20.0.237> ESTABLISH SSH CONNECTION FOR USER: centos
<10.20.0.237> SSH: EXEC ssh -F ./ssh.cfg -o ControlMaster=auto -o ControlPersist=30m -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey
-o PasswordAuthentication=no -o User=centos -o ConnectTimeout=30 -o 'ControlPath=~/.ssh/ansible-%r@%h:%p' 10.20.0.237 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1489673029.48-15997231643297
4 `" && echo ansible-tmp-1489673029.48-159972316432974="` echo $HOME/.ansible/tmp/ansible-tmp-1489673029.48-159972316432974 `" ) && sleep 0'"'"''
<10.20.0.237> PUT /tmp/tmpnHJPbc TO /home/centos/.ansible/tmp/ansible-tmp-1489673029.48-159972316432974/setup.py
<10.20.0.237> SSH: EXEC scp -F ./ssh.cfg -o ControlMaster=auto -o ControlPersist=30m -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey
-o PasswordAuthentication=no -o User=centos -o ConnectTimeout=30 -o 'ControlPath=~/.ssh/ansible-%r@%h:%p' /tmp/tmpnHJPbc '[10.20.0.237]:/home/centos/.ansible/tmp/ansible-tmp-1489673029.48-159972316432974/setup.py'
<10.20.0.237> ESTABLISH SSH CONNECTION FOR USER: centos
<10.20.0.237> SSH: EXEC ssh -F ./ssh.cfg -o ControlMaster=auto -o ControlPersist=30m -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey
-o PasswordAuthentication=no -o User=centos -o ConnectTimeout=30 -o 'ControlPath=~/.ssh/ansible-%r@%h:%p' 10.20.0.237 '/bin/sh -c '"'"'chmod u+x /home/centos/.ansible/tmp/ansible-tmp-1489673029.48-159972316432974/ /home/cento
s/.ansible/tmp/ansible-tmp-1489673029.48-159972316432974/setup.py && sleep 0'"'"''
答案 0 :(得分:23)
这是需要安装sshpass
程序的主机。对于像16.04这样的Ubuntu机器,它就像apt-get install sshpass
一样简单。同样,此错误消息:
ERROR! to use the 'ssh' connection type with passwords, you must install the sshpass program
适用于HOST(配置程序)而非GUEST(正在配置的计算机)。因此,在配置程序上安装sshpass
。
答案 1 :(得分:6)
只需添加以上各种答案即可,尽管这可以回答标题中所述的主要问题。可以使用paramiko传递参数,paramiko是SSH的另一个python实现。这由ansible支持。这样就无需在主机上安装另一个库:sshpass。
而不是像下面那样使用ssh连接,
$ ansible-playbook -i主机-v -b -c ssh --ask-pass myplaybook.yml
您可以使用
$ ansible-playbook -i主机-v -b -c paramiko --ask-pass myplaybook.yml
如果您有兴趣,可以在这里阅读更多内容:http://www.paramiko.org/
答案 2 :(得分:4)
问题是因为/defaults/main.yml
中使用了属性 ansible_password 。我在这个文件中保留了很多变量,以供脚本和属性ansible_password一起使用。
- include_vars: "{{ role_path}}/defaults/main.yml"
属性ansible_password
保留供Ansible使用。现在我将变量名称更改为ansible_pass
,它运行正常。
答案 3 :(得分:1)
对于 UBUNTU
sudo apt install sshpass
在此之后运行 ansible 脚本
答案 4 :(得分:0)
使用ansible_password设置为ansible_pass即可!