我尝试使用Ansible EC2模块启动ECS容器实例。
我的剧本如下。
- name: Launch ECS Container Instance
ec2:
key_name: "{{ ec2_keyname }}"
instance_type: t2.micro
image: ami-ca01d8ca
wait: yes
group: "{{ ec2_security_group }}"
region: ap-northeast-1
exact_count: 1
vpc_subnet_id: "{{ ec2_subnet_id }}"
count_tag:
docker-registry: 1
instance_profile_name: ecsInstanceRole
instance_tags:
Name: ECS_docker-registry
docker-registry: 1
assign_public_ip: yes
结果,发起了两个实例;其中一个按照我的意图配置,但另一个有以下我不打算设置的标签。
此外,我可以在ECS仪表板上找到这两个实例。
但它只能在群集中显示"默认",对其他群集不可见。
我真正想做的事情是;
如果我能用aws-cli完成上述过程会更好,但首先我应该理解容器实例的奇怪行为并手动完成。
答案 0 :(得分:4)
要在ECS群集中注册EC2容器实例,您有以下几个选项:
使用特殊的 amazon-ecs优化 AMI手动启动带有awscli
或AWS控制台的自定义用户数据的EC2实例(了解有关Launching an Amazon ECS Container Instance的更多信息):
#!/bin/bash echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
使用AWS OpsWorks并创建自AWS OpsWorks Supports Managing Amazon ECS Container Instances以来的 ECS群集层。在这种情况下,OpsWoks将层中的任何EC2实例与特定的ECS群集一起使用。
几乎没有限制:
答案 1 :(得分:1)
您也可以手动将EC2实例添加到ECS群集:
使用以下行在/etc/ecs/ecs.config中创建一个文件:
ECS_CLUSTER={{ name }}
其中{{name}}是您想要的群集名称。
如果群集尚未存在,该实例将创建群集。
答案 2 :(得分:0)
您可以尝试使用ec2模块的user_data
字段。
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html
在ecs代理启动之前,您需要在ecs.config
中拥有以下内容。
#!/斌/庆典
echo ECS_CLUSTER = your_cluster_name>> /etc/ecs/ecs.config