大家好,我制作了一个简单的剧本来练习 Ansible,但是当我尝试运行剧本(ansible-playbook -i hosts.ini playbook.yml
)来配置实例 ec2 时遇到问题,输出返回:
> fatal: [XX.XXX.XXX.XXX]: FAILED! => {
> "changed": false,
> "failed": true,
> "invocation": {
> "module_name": "setup"
> },
> "module_stderr": "Shared connection to XXX.XXX.XXX.XXX closed.\r\n",
> "module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n",
> "msg": "MODULE FAILURE" } to retry, use: --limit @/home/douglas/Ansible/ansible_praticing/projeto2.retry
>
> PLAY RECAP
> *********************************************************************
> XX.XXX.XXX.XXX : ok=0 changed=0 unreachable=0 failed=1
当我尝试通过
ssh -i ~/.ssh/key.pem ubuntu@public.ip
连接实例时它运行良好,但配置不行。我的剧本:
- hosts: projeto
sudo: True
remote_user: ubuntu
vars_files:
- vars.yml
tasks:
- name: "Update"
apt: update_cache=yes
- name: "Install the Ansible"
apt: name=ansible state=latest
- name: "Installt the mysql"
apt:
args:
name: mysql-server
state: latest
- name: "Install the Nginx"
apt:
args:
name: nginx
state: latest
我的
hosts.ini
也可以(使用 aws ec2 实例的公共(public) ip),我将公钥(本地机器的 ~/.ssh/id_rsa.pem
)放在 ~/.ssh/authorized_keys
中文件,在实例内部。在上周(星期五),这本剧本运行良好。
我究竟做错了什么?
最佳答案
也许我的回答为时已晚,但我今天遇到了同样的问题。我的 EC2 上运行了一个 Ubuntu 16.04 实例。我认为,因为它有 Python 3 (Python 3.5) 作为其默认的 Python 安装。因此,ansible 无法找到所需的 Python 目录 (/usr/bin/python
)。我通过将 ansible Python 解释器更改为 Python 3 解决了这个问题。
我添加了 ansible_python_interpreter=/usr/bin/python3
到我的库存文件,不必更改剧本。
引用 - http://docs.ansible.com/ansible/latest/python_3_support.html
关于amazon-ec2 - Ansible:与 xxx 的共享连接已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40721859/