最近我一直在使用ansible进行各种自动化。但是,在对特定Web服务器框进行自动Tomcat6重启的测试过程中,我遇到了无法解决的新错误。
FAILED => failed to transfer file to /command
看文档说是因为sshd_config中没有sftp-server,但实际上已经存在了。
以下是我在web服务器主机上运行的命令。
ansible all -a "/usr/bin/sudo /etc/init.d/tomcat6 restart" -u user --ask-pass --sudo --ask-sudo-pass
每个盒子上都有一个名为.ansible的隐藏文件夹,所以我知道它已经到达了它们,但它没有执行命令。
运行-vvvv后,我得到了以下结果:
EXEC ['sshpass', '-d10', 'ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s', '-o', 'ControlPath=/home/vagrant/.ansible/cp/ansible-ssh-%h-%p-%r', '-o', 'GSSAPIAuthentication=no', '-o', 'PubkeyAuthentication=no', '-o', 'User=user', '-o', 'ConnectTimeout=10', '10.10.10.103', "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1400791384.19-262170576359689 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1400791384.19-262170576359689 && echo $HOME/.ansible/tmp/ansible-tmp-1400791384.19-262170576359689'"]
那么
10.10.10.103 | FAILED => failed to transfer file to /home/user/.ansible/tmp/ansible-tmp-1400791384.19-262170576359689/command
非常感谢您对这个问题的帮助。
谢谢,
编辑: 为了增加谷歌搜索能力,这里是所选答案修复的错误的另一种表现形式。
运行命令
ansible-playbook -i inventory hello_world.yml
会给每个主机都发出此警告。[WARNING]: sftp transfer mechanism failed on [host.example.com]. Use ANSIBLE_DEBUG=1 to see detailed information
当您以 ANSIBLE_DEBUG=1 ansible-playbook -i inventory hello_world.yml
重新运行该命令时,您将获得的额外信息只有:
>>>sftp> put /var/folders/nc/htqkfk6j6h70hlxrr43rm4h00000gn/T/tmpxEWCe5 /home/ubuntu/.ansible/tmp/ansible-tmp-1487430536.22-28138635532013/command.py
ansible all -a "/usr/bin/sudo /etc/init.d/tomcat6 restart" -u user --ask-pass --sudo --ask-sudo-pass
- Nvasion