1

我正在尝试动态配置我的 EC2 实例。我在解决如何查找我的 RDS 实例时遇到问题。我可以设置关键标签,但 ansible ec2.py 不会选择它们(https://github.com/ansible/ansible/issues/7564)。有没有人有什么建议?

因此,例如,我想要一个 RDS 实例用于生产、暂存和仅用于测试。

4

2 回答 2

5

如果您的意思是 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"
于 2014-06-06T13:33:09.653 回答
0

现在另一个答案是错误的(如果我正确阅读了这个问题)。在与您的 相同的目录中ec2.py,添加一个ec2.ini文件,然后添加:

ec2.ini

[ec2]

rds = true

我有一个类似的问题,但文档明确指出 ec2.py 可用于查找其他资源。

Ansible 动态库存

ec2.ini 中还有其他配置选项,包括缓存控制和目标变量。默认情况下,为所有 Amazon 云服务配置了 ec2.ini 文件,但您可以注释掉任何不适用的功能。例如,如果您没有 RDS 或 elasticache,则可以将它们设置为 False

编辑:但是,我还想强调的是,即使它声明默认支持所有资源,但直到我指定我希望它们在ec2.ini文件中,我才得到 RDS 结果。

于 2018-03-26T21:18:43.367 回答