我正在尝试动态配置我的 EC2 实例。我在解决如何查找我的 RDS 实例时遇到问题。我可以设置关键标签,但 ansible ec2.py 不会选择它们(https://github.com/ansible/ansible/issues/7564)。有没有人有什么建议?
因此,例如,我想要一个 RDS 实例用于生产、暂存和仅用于测试。
我正在尝试动态配置我的 EC2 实例。我在解决如何查找我的 RDS 实例时遇到问题。我可以设置关键标签,但 ansible ec2.py 不会选择它们(https://github.com/ansible/ansible/issues/7564)。有没有人有什么建议?
因此,例如,我想要一个 RDS 实例用于生产、暂存和仅用于测试。
如果您的意思是 ansible ec2.py 清单脚本没有获取 RDS 实例,那么是的,我相信您是对的,它只会找到 EC2 实例。
我们有一个类似的设置,有一个单独的 RDS 实例用于暂存和生产环境。我们解决它的方法是针对需要针对 mysql 数据库运行的任何剧本/角色,我们针对魔术主机“localhost”运行它们,并在变量中设置 RDS 端点。我们为每个环境使用一个单独的变量文件,并在播放开始时加载它们。
例如
|--vars/
| |--staging.yml
| |--production.yml
|
|--playbook.yml
示例“production.yml”文件:
---
DB_SERVER: database-endpoint.cls4o6q35lol.eu-west-1.rds.amazonaws.com
DB_PORT: 3306
DB_USER: dbusername
DB_PASSWORD: dbpassword
创建数据库的示例剧本
- name: Playbook name
hosts: localhost
vars_files:
- vars/{{ env }}.yml
tasks:
- mysql_db: login_host={{ DB_SERVER }}
login_user={{ DB_USER }}
login_password={{ DB_PASSWORD }}
login_port={{ DB_PORT }}
collation=utf8_general_ci
encoding=utf8
name=databasename
state=present
然后,您可以在运行 playbook 时指定环境变量。
ansible-playbook playbook.yml --extra-vars "env=production"
现在另一个答案是错误的(如果我正确阅读了这个问题)。在与您的 相同的目录中ec2.py
,添加一个ec2.ini
文件,然后添加:
ec2.ini
[ec2]
rds = true
我有一个类似的问题,但文档明确指出 ec2.py 可用于查找其他资源。
ec2.ini 中还有其他配置选项,包括缓存控制和目标变量。默认情况下,为所有 Amazon 云服务配置了 ec2.ini 文件,但您可以注释掉任何不适用的功能。例如,如果您没有 RDS 或 elasticache,则可以将它们设置为 False
编辑:但是,我还想强调的是,即使它声明默认支持所有资源,但直到我指定我希望它们在ec2.ini
文件中,我才得到 RDS 结果。