【发布时间】:2016-07-19 13:09:23
【问题描述】:
我可以创建实例、安装和创建 AMI。当我想将该 AMI 复制到所有可用区域时,我遇到了困难。
类似:forEach (region in regions):
copy-ami to region
done
我有什么:
- 创建实例
- 安装东西
- 根据“创建实例”返回的值创建 AMI
- 根据“创建 AMI”将 AMI 复制到所有区域 --(不工作!)
这是正确的做法吗? 我该如何正确地做到这一点?
(我知道这不是正确的方法,寻求学习如何去做)
剧本示例:- hosts: local
connection: local
gather_facts: no
roles:
- { role: copy_ami, ec2_region: [ "ap-south-1" ]}
错误信息:fatal: [localhost]: FAILED! => {"failed": true, "msg": "'dict object' has no attribute 'region'"}
角色长什么样:- ec2_ami_copy:
source_region: "{{ item.region }}"
region: "{{ ec2_region }}"
source_image_id: "{{ item.image_id }}"
wait: yes
tags:
Name: "{{ item.tags.Name }}"
description: "{{ item.tags.Name }}"
with_items: "{{ec2_storm_ami}}"
register: ec2_ami_copy
谢谢,
【问题讨论】:
-
你能显示剧本中复制 ami 的部分以及你得到的错误吗?
-
当然。我知道我做得不对。我想知道正确的方法。我尝试使用嵌套循环,但遇到了死胡同。主要是因为我缺乏理解我敢肯定。
-
您能否编辑您的帖子(不是评论)以显示剧本和错误。
-
您的问题是您使用的是“{{ ec2_region }}”而不是“{{ item }}”,因为根据我的回答,您正在使用 with_items 循环模块。
-
嗯,抱歉,这是一个较旧的代码 sn-p。我已经尝试了很多方法......但显然我不能这样做?第一个循环 - 区域 第二个循环 - AMI 可以完成吗?
标签: amazon-ec2 amazon ansible ansible-playbook amazon-ami