我有几个ansible脚本为各种服务提供EC2实例,例如consul,kong和一些ECS任务。我目前可以使用ec2_remote_facts:
过滤掉实例,以收集需要额外存储空间并使用ec2_vol:.
- name: Gather EC2 Facts
ec2_remote_facts:
region: "{{ region }}"
filters:
"things"
register: info
- name: ec2-ebs
ec2_vol:
instance: "{{ item.id }}"
volume_size: 5
volume_type: gp2
device_name: xvdd
region: "{{ region }}"
name: "ebs-{{ environmentName }}-{{ item.id }}"
register: volumes
with_items: "{{ info.instances }}"
- name: ecs-tag
ec2_tag:
resource: "{{ item.volume_id }}"
region: "{{ region }}"
state: present
tags:
Environment: "{{ environmentName }}"
with_items: "{{ volumes.results }}"
我的解决方案是继续使用shell:
单独ssh到每台计算机上,并在每台计算机上运行相当于vgcreate blah xvdd; lvcreate blah-volume blah; format
的脚本。但是,如果没有大量的工作,我不知道如何使它成为幂等的,如果我们扩展,那么自定义shell脚本的灵活性就会降低。
我找到了ansible lvol:
,但它要求我在新的ec2机器上运行。我们正在执行hosts:localhost
,我认为这意味着我们只是在我的机器上通过ansible使用aws-cli,这意味着我实际上无法访问ec2实例。
答案 0 :(得分:0)
您可以使用add_host
动态地将tge生成的主机添加到广告资源中
比在新库存主机/组上运行一个playbook来执行所需的配置。
注意:格式文件系统的模块以及安装磁盘的模块。