【发布时间】:2016-09-16 14:06:30
【问题描述】:
我在 AWS 实例上运行我的 Ansible playbook 时遇到问题。这是我的版本:
$ ansible --version
ansible 2.0.0.2
我创建了一个库存文件:
[my_ec2_instance]
default ansible_host=MY_EC2_ADDRESS ansible_user='ubuntu' ansible_ssh_private_key_file='/home/MY_USER/MY_KEYS/MY_KEY.pem'
测试与我的服务器的连接:
$ ansible -i provisioner/inventory my_ec2_instance -m ping
default | SUCCESS => {
"changed": false,
"ping": "pong"
}
现在在此清单上运行我的剧本时,我收到错误 Timeout (12s) waiting for privilege escalation prompt,如下所示:
$ ansible-playbook -i provisioner/inventory -l my_ec2_instance provisioner/playbook.yml
PLAY [Ubuntu14/Python3/Postgres/Nginx/Gunicorn/Django stack] *****
TASK [setup] *******************************************************************
fatal: [default]: FAILED! => {"failed": true, "msg": "ERROR! Timeout (12s) waiting for privilege escalation prompt: "}
NO MORE HOSTS LEFT *************************************************************
PLAY RECAP *********************************************************************
default : ok=0 changed=0 unreachable=0 failed=1
如果我使用 .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory 作为库存参数运行相同的剧本,它可以在我的 Vagrant 实例上完美运行。(我相信,证明剧本/角色本身没有问题)
另外,如果我使用 -vvvv 运行它,复制 exec ssh 行并手动运行它确实可以毫无问题地连接到 AWS。
我是否需要在我的清单文件中添加任何其他参数才能连接 EC2 实例?我错过了什么?
【问题讨论】:
-
有类似问题的人报告了不同的解决方案,因为确实有很多可能的原因。我会告诉我的:目的地的 .profile 或 .bash_profile 包含一个 bash 命令,这是将用户的 shell 从 ksh 更改为 bash 的粗鲁方式。我的建议是在目标机器上使用此类分析脚本的默认版本进行测试。
标签: amazon-ec2 ansible-playbook ansible-2.x