【发布时间】:2015-08-24 21:46:09
【问题描述】:
我有一本尝试使用 AWS RDS 模块来获取有关 RDS 实例的事实的剧本。剧本只有一种作品。在 localhost 上运行时,如下所示,它工作得很好:
- hosts: localhost
connection: local
gather_facts: False
tasks:
- name: look up info for {{ env }} - {{ store }}
rds:
command=facts
instance_name="postgres-{{ env }}-{{ store }}"
region={{ region }}
register: rds
until: rds.instance.status == "available"
retries: 30
delay: 60
- name: debug it
debug: msg="{{ rds.instance.status }}"
显示状态为“可用”。但是,如果我在另一台机器(我的一个 EC2 实例)上运行它,它会说数据库不存在。所以,这不起作用:
- hosts: tag_app_utility:&tag_store_ops:&tag_env_{{ env }}
tasks:
- name: look up info for {{ env }} - {{ store }}
rds:
command=facts
instance_name="postgres-{{ env }}-{{ store }}"
region={{ region }}
register: rds
until: rds.instance.status == "available"
retries: 30
delay: 60
- name: debug it
debug: msg="{{ rds.instance.status }}"
关于为什么它只能在本地主机上工作的任何想法?
【问题讨论】:
-
第二种情况下的主机是否安装了 boto,并且由于您没有将 EC2 凭据作为参数传递给任务,您是否也在该主机上为 boto 设置了正确的凭据?使用 -vvvv 运行第二个 playbook 的输出是什么?
-
凭证!啊。就是这样。我忘记将 RDS 凭证添加到与主机关联的 IAM 用户。谢谢,布鲁斯!