【发布时间】:2015-02-27 06:19:59
【问题描述】:
我正在创建一个基于 Ansible 的 AWS 基础设施。 我有一个创建 RDS 实例的剧本。当我独立运行 playbook 时,它会完美执行并创建 RDS 实例。但是,当另一个 playbook 使用
调用该 playbook 时包括:rds.yml
它给出了以下错误
任务:[创建 mysql RDS 实例] *************************************** ****** 失败:[localhost -> 127.0.0.1] => {“失败”:真,“解析”:假} Traceback(最近一次调用最后一次):
文件“/home/rahul/.ansible/tmp/ansible-tmp-1424469014.33-157847268952956/rds”,第 2419 行,在 主要()
文件“/home/rahul/.ansible/tmp/ansible-tmp-1424469014.33-157847268952956/rds”,第 468 行,主要 参数["vpc_security_groups"] = vpc_security_groups.split(',') AttributeError: 'dict' 对象没有属性 'split'
致命:所有主机都已失败 -- 正在中止
我正在使用的 RDS 的 ansible playbook 如下
---
- hosts: localhost
gather_facts: no
vars_files:
- ../group_vars/dev_vpc
- ../group_vars/dev_sg
- ../hosts_vars/ec2_info
- ../hosts_vars/rds_info
vars:
instance_type: db.m1.medium
db_engine: MySQL
engine_version: 5.6.19a
subnet: dev-subnet-group
iops: 1000
db_name: dev_rds
tasks:
- name: Creating RDS subnet group
local_action:
module: rds_subnet_group
state: present
name: "{{ subnet }}"
region: "{{ region }}"
description: Subnet Group for RDS instance
subnets:
- "{{ PrivateSubnetA }}"
- "{{ PrivateSubnetB }}"
- name: create mysql RDS instance
local_action:
module: rds
command: create
instance_name: dev-rds
region: "{{ region }}"
size: 100
instance_type: "{{ instance_type }}"
db_engine: "{{ db_engine }}"
engine_version: "{{ engine_version }}"
subnet: "{{ subnet }}"
multi_zone: yes
db_name: "{{ db_name }}"
username: "{{ username }}"
password: "{{ pass }}"
vpc_security_groups: "{{ sg_mysql }}"
iops: "{{ iops }}"
我在互联网上进行了很多搜索,但无法找到正确的答案。谁能指出我的错误。谢谢
【问题讨论】:
-
您在对 rds 模块的调用中将 vpc_security_groups 设置为“{{ sg_mysql }}”。这似乎是您发布的错误的来源,但是在您的代码中,我没有看到您将 sg_mysql 设置为什么。你确定 sg_mysql 设置了吗?你把它设置成什么?
-
@BruceP {{ sg_mysql }} 参数在 dev_sg vars_file 中设置,该文件将作为 playbook 运行的一部分包含在内。单独完成时,整个剧本也可以正常执行。但是,如果我从另一个 playbok 调用此文件,则会引发错误。
-
你确定“另一个”剧本没有覆盖 sg_mysql 变量吗?
-
那么 sg_mysql 的设置是什么?如有必要,通过添加任务“debug: var=sg_mysql”来验证它的设置。
-
ok: [localhost] => { "var": { "sg_mysql": { "changed": false, "group_id": "sg-d73012b2", "invocation": { "module_args" : "", "module_name": "ec2_group" } } } }
标签: python amazon-web-services ansible ansible-playbook rds