перебирает зарегистрированную переменную, чтобы проверить результаты в доступном

У меня есть ansible-playbook, который создает несколько групп безопасности ec2, используя with_items, и регистрирует результат.

вот файл var для этой книги:

---
 ec2_security_groups:
   - sg_name: nat_sg
     sg_description: This sg is for nat instance
     sg_rules:
       - proto: tcp
         from_port: 22
         to_port: 22
         cidr_ip: 0.0.0.0/0

   - sg_name: web_sg
     sg_description: This sg is for web instance
     sg_rules:
       - proto: tcp
         from_port: 22
         to_port: 22
         cidr_ip: 0.0.0.0/0
       - proto: tcp
         from_port: 80
         to_port: 80
         cidr_ip: 0.0.0.0/0

и вот playbook, который создает группы безопасности ec2:

---


- name: EC2Group | Creating an EC2 Security Group inside the Mentioned VPC
   local_action:
     module: ec2_group
     name: "{{ item.sg_name }}"
     description: "{{ item.sg_description }}"
     region: "{{ vpc_region }}" # Change the AWS region here
     vpc_id: "{{ vpc.vpc_id }}" # vpc is the resgister name, you can also set it manually
     state: present
     rules: "{{ item.sg_rules }}"
   with_items: ec2_security_groups
   register: aws_sg

Это работает очень хорошо, но проблема в том, что я хочу получить идентификатор группы каждой группы, созданной в этой книге для следующей задачи, я пробовал, но это не удалось:

- name: Tag the security group with a name
  local_action:
   module: ec2_tag
   resource: "{{aws_sg.group_id}}"
   region: "{{ vpc_region }}"
   state: present
   tags:
     Name: "{{vpc_name }}-group"
  with_items: aws_sg.results

Может ли кто-нибудь указать мне, как я могу получить group_id для каждой группы из результата регистрации. Спасибо

PS: я могу получить значение group_id для отдельной группы sg, например:

aws_sg.results[0].group_id и aws_sg.results[1].group_id и т. д.


person Arbab Nazar    schedule 28.03.2015    source источник
comment
Этот строковый ресурс: {{aws_sg.group_id}} должен быть изменен на ресурс: {{item.group_id}}.   -  person Arbab Nazar    schedule 29.03.2015


Ответы (1)


RTM. Ansible будет устанавливать переменную цикла item для каждой итерации.

aws_sg.results[0].group_id и aws_sg.results[1].group_id и т. д.

Предположим, что то, что вы написали выше, верно. Вам нужно изменить aws_sg.group_id на item.group_id:

- name: Tag the security group with a name
  local_action:
   module: ec2_tag
   resource: "{{ item.group_id }}"
   region: "{{ vpc_region }}"
   state: present
   tags:
     Name: "{{vpc_name }}-group"
  with_items: aws_sg.results

Если это не сработает, опубликуйте вывод этой задачи для исправлений:

- debug: msg="aws_sg= {{ aws_sg }}"
person Kashyap    schedule 29.03.2015
comment
Я понял вчера, но это описание является удивительным. Спасибо - person Arbab Nazar; 29.03.2015