ANSIBLE为每个项目在with_items循环中设置标签

我有这个剧本来创buildec2实例,并希望通过标签来定位每个ec2创build,但不工作…当我运行剧本我不会得到任何错误,但不会得到创build。

--- - name: Build or Check environment hosts: localhost connection: local become: yes vars_files: - ../vars/kafka-east.yml tasks: # name: launch kafka-east-1 ec2 instance - ec2: image: "{{ ami_id }}" key_name: "{{ key_name }}" instance_type: "{{ instance_type }}" instance_profile_name: "{{ instance_profile_name }}" region: us-east-1 network_interfaces: "{{ item.eni }}" with_items: - {eni: 'kafka_east_1', tag: 'kafka_east_1'} - {eni: 'kafka_east_2', tag: 'kafka_east_2'} volumes: - device_name: /dev/sda1 volume_size: "{{ ebs_size }}" device_type: "{{ ebs_type }}" delete_on_termination: true user_data: "{{ lookup('file', '../group_vars/kafka-east/user_data') }}" state: present 

我得到的错误,但只是张贴显示我想要完成。 任何人都知道如何正确实现? 并为with_items中的每个项目设置标签并循环

所以我可以运行的Playbook和目标这样的特定标签

 ansible-playbook launch_ec2.yml --extra-vars "items_tags=kafka_east_1" 

要么

 ansible-playbook launch_ec2.yml --tags "kafka_east_1" 

无论哪种方式是正确的。

谢谢!

首先: with_items循环的正确语法是:

 - name: task name module: parameter1: value1 parameter2: "{{ item }}" with_items: - item1 - item2 

所以这是错的,我想知道为什么Ansible没有把一个错误。

第二:您正在使用tags in Ansible tags in AWS中混合使用tags in AnsibleTags in AWS中的Tags in AWS用于标记Tags in AWS中的资源,Ansible AWS模块通常通过参数来设置它。 但这tags in Ansible不同。 这些被用来标记剧本中的任务,以便能够将由ansible-playbook执行的任务限制在ansible-playbook中的任务的一个子集。

在Ansible中标记一个任务,如下所示:

 - name: task name module: parameter1: value1 tags: - tag1 - tag2 

你可以像这样限制任务执行的任务:

 ansible-playbook --tags=tag1 play.yml