Search code examples
pythonamazon-web-servicesansiblerds

Ansible when creating an RDS instance: AttributeError: 'dict' object has no attribute 'split'


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


Solution

  • 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.