Ansible Playbook error - Dict object has no attribute.

Hi,

I am trying to create a Direct connect Gateway in AWS account using ansible. I have the main playbook and an account config yaml template. When I run the playbook I am getting an error

fatal: [infrastructure]: FAILED! => {“msg”: “The task includes an option with an undefined variable. The error was: ‘dict object’ has no attribute ‘stacks’\n\nThe error appears to have been in ‘/home/ec2-user/environment/aws-rxgt-mgmt-platform/ansible/rxgt-ps-rxgtmgmt-playbook.yaml’: line 10, column 5, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n tasks:\n - name: create rxgt-ps-mgmt-direct-connect-gateway stack\n ^ here\n”}

I have attached the code for reference and error. can someone please help?

Thanks

main playbook code

The indentation is wrong (line 10, column 5). Should be:

I have corrected that. I am concerned if line 17 is correct

Thanks

I think the indentation appears wrong just in the preview. I downloaded the file and the indentation is fine on line 10.
It seems this line is the issue: combine(rxgt_mgmt_account.account_config.stacks[‘rxgt-ps-mgmt-direct-connect-gateway’].override_tags, recursive=True) }}"
It says that dictionary has no key named stacks. Maybe try just printing that dict or do -vvv to see what keys that it actually has.

I did -vvv and I don’t see anything different. Same error and it gathered the facts. Not sure if my debug stack task is correct.

It seems there is one level between account_config and stack.
Maybe try account_config.xxxxxx.stacks instead?

ok, I used the below

template_parameters: “{{ rxgt_mgmt_account.account_config.rxgtmgmt.stacks[‘rxgt-ps-mgmt-direct-connect-gateway’].params }}”
tags: “{{ global_tags | combine(rxgt_mgmt_account.account_config.rxgtmgmt.stacks[‘rxgt-ps-mgmt-direct-connect-gateway’].override_tags, recursive=True) }}”

TASK [create rxgt-ps-mgmt-direct-connect-gateway stack] ************************************************************************************************************
fatal: [infrastructure]: FAILED! => {“msg”: “|combine expects dictionaries, got Undefined”}
to retry, use: --limit @/home/ec2-user/.ansible-retry/site.retry

I managed to sort out, there is no parameter called “template_parameter”

  • name: create rxgt-ps-mgmt-direct-connect-gateway stack
    aws_direct_connect_gateway:
    state: present
    region: “”
    aws_access_key: “”
    aws_secret_key: “”
    security_token: “”
    name: “{{ rxgt_mgmt_account.account_config.rxgtmgmt.stacks[‘rxgt-ps-mgmt-direct-connect-gateway’].params.name }}”
    amazon_asn: “{{ rxgt_mgmt_account.account_config.rxgtmgmt.stacks[‘rxgt-ps-mgmt-direct-connect-gateway’].params.amazon_asn }}”
    register: created_aws_direct_connect_gateway
    tags:
    rxgt-ps-mgmt-dxgw-deploy