如何使用Ansible的amazon.aws集合获取最新Amazon Linux 2 AMI
用Ansible amazon.aws.ec2_ami_info模块获取最新Amazon Linux 2 AMI(无需硬编码OwnerID)
你可以直接利用amazon.aws.ec2_ami_info模块的owners参数支持别名的特性,不需要硬编码数字OwnerID,再通过Ansible过滤器实现按创建时间排序取最新AMI的逻辑,完全替代你给出的AWS CLI命令。
完整Playbook示例
- name: 获取最新Amazon Linux 2 AMI hosts: localhost gather_facts: false collections: - amazon.aws tasks: - name: 收集符合条件的Amazon Linux 2 AMI列表 amazon.aws.ec2_ami_info: region: us-east-1 owners: amazon # 使用官方账户别名,无需硬编码OwnerID filters: name: "amzn2-ami-hvm-2.0.*-x86_64-gp2" register: amzn2_amis - name: 提取最新的AMI ID set_fact: latest_amzn2_ami_id: "{{ amzn2_amis.images | sort(attribute='creation_date', reverse=true) | first | json_query('image_id') }}" - name: 打印最新AMI ID(可选) debug: msg: "最新Amazon Linux 2 AMI ID: {{ latest_amzn2_ami_id }}"
关键说明
owners: amazon:该参数支持AWS官方账户的别名(如amazon、self),无需手动获取或硬编码数字OwnerID,完美适配你的需求。- 排序取最新:通过
sort(attribute='creation_date', reverse=true)对AMI列表按创建时间倒序排列,| first取第一个元素,再用json_query提取image_id,和你CLI命令中的reverse(sort_by(Images, &CreationDate))[:1]逻辑完全一致。 - 后续使用:后续部署EC2实例时,直接引用变量
{{ latest_amzn2_ami_id }}即可。
内容的提问来源于stack exchange,提问作者Chris King-Parra
相关产品推荐
相关产品推荐

