I am working on creating an AWS infrastructure based on Ansible. I have a playbook which creates an RDS instance. When I run the playbook standalone it executes perfectly & creates RDS instance. However when that playbook is called by another playbook using the
include: rds.yml
It gives the following error
TASK: [create mysql RDS instance] ********************************************* failed: [localhost -> 127.0.0.1] => {"failed": true, "parsed": false} Traceback (most recent call last):
File "/home/rahul/.ansible/tmp/ansible-tmp-1424469014.33-157847268952956/rds", line 2419, in main()
File "/home/rahul/.ansible/tmp/ansible-tmp-1424469014.33-157847268952956/rds", line 468, in main params["vpc_security_groups"] = vpc_security_groups.split(',') AttributeError: 'dict' object has no attribute 'split'
FATAL: all hosts have already failed -- aborting
The ansible playbook for RDS which I am using is as follows
---
- 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 }}"
I have searched a lot on the internet and wasn't able to find a correct answer. Can anyone point out my mistake. Thank you
The problem was solved by replacing
vpc_security_groups: "{{ sg_mysql }}"
with
vpc_security_groups: "{{ sg_mysql.group_id }}"
the problem was due to wrong data being passed to module.