我正在尝试动态配置ansible我的EC2实例。我在查找如何查找我的RDS实例时遇到问题。我可以设置关键标签,但ansible ec2.py不会提取它们(https://github.com/ansible/ansible/issues/7564)。有没有人有任何建议?
因此,例如,我想要一个用于生产,登台和仅用于测试的RDS实例。
答案 0 :(得分:5)
如果你的意思是ansible ec2.py库存脚本没有获取RDS实例,那么我相信你是对的,它只会找到EC2实例。
我们有一个类似的设置,其中包含用于登台和生产环境的单独RDS实例。我们解决它的方式是任何需要针对mysql数据库运行的playbooks / roles,我们针对魔术主机“localhost”运行它们,并在变量中设置RDS端点。我们为每个环境使用一个单独的变量文件,并在播放开始时加载它们。
e.g。
|--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时指定envionrment变量。
ansible-playbook playbook.yml --extra-vars "env=production"
答案 1 :(得分:0)
现在另一个答案是错的(如果我正确地阅读了这个问题)。在与ec2.py
相同的目录中,添加ec2.ini
文件,然后添加:
ec2.ini
[ec2]
rds = true
我有类似的问题,但文档明确指出ec2.py可用于查找其他资源。
ec2.ini中还有其他配置选项,包括缓存控制和目标变量。默认情况下,ec2.ini文件是为所有Amazon云服务配置的,但您可以注释掉任何不适用的功能。例如,如果您没有RDS或弹性,则可以将它们设置为False
编辑:但是,我也想强调一下,即使它声明默认支持所有资源,但我没有获得RDS结果,直到我在ec2.ini
指定我想要它们文件。