1

我尝试使用 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

结果,启动了两个实例;其中一个按我的意图配置,但另一个有以下我不打算设置的标签。

  • aws:自动缩放:组名
  • aws:cloudformation:逻辑 ID
  • aws:cloudformation:stack-id
  • aws:cloudformation:stack-name

另外,我可以在 ECS Dashboard 上找到这两个实例。

在此处输入图像描述

但它只对集群“默认”可见,对其他集群不可见。


我真正想做的是;

  • 启动 ECS 容器实例
  • 将容器实例注册到集群

如果我可以使用 aws-cli 完成上述过程会更好,但首先我应该了解容器实例的奇怪行为并手动执行。

4

3 回答 3

4

要在 ECS 集群中注册 EC2 容器实例,您有几个选项:

  1. 使用特殊的 amazon-ecs-optimized AMI 手动启动 EC2 实例,使用自定义用户数据awscli或 AWS 控制台(阅读有关启动 Amazon ECS 容器实例的更多信息):

        #!/bin/bash    
        echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
    
  2. 使用AWS OpsWorks并创建ECS 集群层,因为AWS OpsWorks 支持管理 Amazon ECS 容器实例。在这种情况下,OpsWoks 将层内的任何 EC2 实例与特定的 ECS 集群一起工作。

有几个限制:

  1. 每个 OpsWorks Stack 只能有一个 ECS 集群层
  2. 每个 EC2 实例只能分配给一个 ECS 集群
于 2015-09-29T14:56:06.547 回答
1

您也可以手动将 EC2 实例添加到 ECS 集群:

  1. 使用以下行在 /etc/ecs/ecs.config 中创建一个文件:

    ECS_CLUSTER={{ name }}
    

    其中 {{ name }} 是您想要的集群名称。

  2. 安装 ecs 代理(包名为“ecs-init”)并启动它。

如果集群尚不存在,该实例将创建集群。

于 2016-01-27T22:16:44.923 回答
0

您可以尝试查看user_dataec2 模块的 using 字段。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

ecs.config在 ecs 代理启动之前,您需要拥有以下内容。

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

于 2016-04-14T22:10:19.790 回答