我正在使用 Ansible 部署到 Amazon EC2,并且设置了 ec2.py 和 ec2.ini,以便可以从 Amazon 检索服务器列表。我的服务器位于 AWS tagged rvmdocker:production
,并ansible all --list
返回我的标签,因为ec2_tag_rvmdocker_production.
我也可以运行:
ansible -m ping tag_rvmdocker_production`
它有效。但是,如果我在静态清单文件中有该标签,然后运行:
ansible all -m ping -i production
它返回:
tag_rvmdocker_production | UNREACHABLE! => {
"changed": false,
"msg": "ERROR! SSH encountered an unknown error during the connection. Werecommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue",
"unreachable": true
}
这是我的生产库存文件:
[dockerservers]
tag_rvmdocker_production
看起来 Ansibletag_rvmdocker_production
在静态清单文件中时无法解析。
更新
我听从了 ydaetskcoR 的建议,现在收到一条新的错误消息:
$ ansible-playbook -i production app.yml
ERROR! ERROR! production:2: Section [dockerservers:children] includes undefined group: tag_rvmdocker_production
但我知道标签存在,而且似乎 Ansible 和 ec2.py 都知道:
$ ansible tag_rvmdocker_production --list
hosts (1):
12.34.56.78
这是我的生产库存:
[dockerservers:children]
tag_rvmdocker_production
还有我的 app.yml 剧本文件:
---
- name: Deploy RVM app to production
hosts: dockerservers
remote_user: ec2-user
become: true
roles:
- ec2
- myapp
最后,我希望能够针对开发(我的 Mac 上的虚拟机)、登台或生产运行相同的剧本来启动环境。我的想法是拥有指向 EC2 上的标签或组的静态清单文件。我是否以正确的方式接近这个?