0

I am trying to create a keypair in aws using Ansible but it is throwing me below error: ERROR! with_dict expects a dict

Below is my keypair.yml

---
- hosts: localhost
  connection: local
  gather_facts: no
  vars:
    region: ap-southeast-1
    keyname: aws_ansible
  tasks:
    - name: create a key-pair
      local_action:
        module: ec2_key
        region: "{{region}}"
        name: "{{keyname}}"
        state: present
      register: mykey

    - name: write private key to a file
      local_action: shell echo -e "{{ item.value.private_key }}" > ~/.ssh/"{{ keyname }}".pem &&
        chmod 600 ~/.ssh/"{{ keyname }}".pem
      with_dict: mykey
      when: item.value.private_key is defined
ricky
  • 471
  • 1
  • 5
  • 11

1 Answers1

3

I'm assuming you're using Ansible 2.x so try:

with_dict: "{{ mykey }}"

If that still doesn't work update your question with the output of:

- name: create a key-pair
  ...

- debug:
    var: result

- name: write private key to a file
  ...
talentedmrjones
  • 7,511
  • 1
  • 26
  • 26