【发布时间】:2019-05-23 09:25:50
【问题描述】:
您好,我正在 atm 尝试使用 aws 掌握 ansible 的窍门,到目前为止我真的很喜欢它的灵活性。
可悲的是,现在我的实验开始碰壁了。我正在尝试使用标签 environment: test 标记特定实例的卷 environment: test 和 backup: true 。如果我在 with_items 循环中指定数组的每个索引,则剧本按预期工作。到目前为止,这是我的剧本:
---
- name: Tag the EBS Volumes
hosts: tag_environment_test
gather_facts: False
tags: tag
vars_files:
- /etc/ansible/vars/aws.yml
tasks:
- name: Gather instance instance_ids
local_action:
module: ec2_remote_facts
region: '{{ aws_region }}'
filters:
instance-state-name: running
"tag:environment": test
register: test_id
- name: Gather volume information for instance
local_action:
module: ec2_vol
region: '{{ aws_region }}'
instance: "{{ item.id }}"
state: list
with_items:
- "{{ test_id.instances }}"
register: ec2_volumes
- debug:
var: ec2_volumes
- name: Do some actual tagging
local_action:
module: ec2_tag
region: '{{ aws_region }}'
resource: "{{ item.id }}"
args:
tags:
environment: test
backup: true
with_items:
- "{{ ec2_volumes.results[0].volumes }}"
# - "{{ ec2_volumes.results[1].volumes }}"
我现在的问题是可以遍历 ec2_volumes.results 中的整个数组,而无需指定数组中的每个值。例如 _ec2_volumes.results[X].volumes X=X+1_ 所以每次他通过循环时,他都会迭代 +1 直到数组的末尾。
剧本其余部分的每个输入都会非常受欢迎(就像我说的那样,仍在尝试掌握 ansible 的窍门。:)
问候 德雷斯
【问题讨论】:
-
ec2_volumes.results的内容是什么样的?请使用debug: var=ec2_volums.results的输出更新您的问题。 -
ec2_volumes.results 实际上提供了有关具有上述标签的 ec2_instances 的所有数据。 ec2_volumes.results[0].volumes 返回第一个实例的音量。我可以使用 ec2_volumes.results[1].volumes 等来处理其他实例。发布输出需要付出很多努力,因为它包含很多我需要编辑的敏感数据。
标签: amazon-web-services amazon-ec2 ansible