amazon-ec2 - 当计数大于 1 时如何使用 ansible 提取 ec2 实例启动的单个 ip
问题描述
我正在使用 count:2 使用 ansible 启动 aws ec2 2 实例,请查看下面的剧本
- name: Create an EC2 instance
ec2:
aws_access_key: "{{ access_key }}"
aws_secret_key: "{{ key }}"
key_name: "{{ keypair }}"
region: "{{ region }}"
group: "{{ security_group }}"
instance_type: "{{ instance_type }}"
image: "{{ image }}"
wait: yes
count: 2
vpc_subnet_id: "{{ vpc_subnet_id }}"
assign_public_ip: "{{ assign_public_ip }}"
register: ec2
- name: Add the newly created 1 EC2 instance(s) to webserver group
lineinfile: dest=inventory
insertafter='^\[webserver\]$'
line="{{ item.private_ip }} {{hoststring}}"
state=present
with_items: "{{ ec2.instances }}"
- name: add newly created remaining ec2 instance to db group
lineinfile: dest=inventory
insertafter='^\[db-server\]$'
line="{{ item.private_ip }} {{hoststring}}"
state=present
with_items: "{{ ec2.instances }}"
在这里,我想将一个 ip 添加到 webserver 主机组并剩余到 db 主机组,但它不能与上面的 playbook 一起使用,请帮我实现同样的目标?
我不想在这里使用 add_host。
解决方案
由于您使用的是 AWS,您是否考虑过使用aws_ec2插件进行动态清单?
只要您正确标记了您的实例,并且您设置了 yaml 文件,它就会按照您的意愿行事。
否则,你register: ec2
有两个元素。您循环的方式(如果有效)ec2
会将两者都添加到每个组中。您需要添加一个when
条件来匹配标签/子网/cidr 之类的内容,以了解将哪个服务器添加到哪个组。
帮助查看返回值的一种方法是打印出ec2
变量:
- debug: var=ec2
推荐阅读
- python - Django orm查询到多个表子查询
- python - 如何用已知坐标对图像区域进行轮廓化?
- excel - 有没有一种方法可以创建邮件合并,自动向具有给定条件的列表的人员发送电子邮件?
- docker - 从 INSIDE DOCKER CONTAINER 设置主机 -> IP 映射
- php - 第一个关系的 Laravel 6.x 关系默认值
- jekyll - 如何解决 Jekyll-Include-Cache 问题?
- amazon-web-services - AWS s3 同步从 s3 复制到 EMR 很慢
- vb.net - VB.NET 列表视图委托
- node.js - 如何确定 NPM 包是实现 ES5 还是 ES6 模块?
- docker - dotnet restore 使用 docker Jenkins 容器失败