2015-06-17 194 views
1

我试图使用Ansible EC2模块启动ECS容器实例。AWS 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:堆栈ID
  • AWS:cloudformation:堆栈名称

此外,我可以在ECS仪表板上找到这两个实例。

enter image description here

但其仅适用于集群“默认”可见和不可见的其他集群。


我真正想要做的是;

  • 推出ECS容器实例
  • 容器实例注册到集群

它的更好,如果我能做到以上AWS-CLI的过程,但首先我应该明白的奇怪行为容器实例并手动执行。

+0

的问题也发生在我从EC2仪表板手动启动的实例,而不是Ansible的。 – ai0307

回答

4

要在ECS集群注册一个EC2容器实例,你有几个选择:

  1. 使用特殊亚马逊ECS优化 AMI手动启动与自定义用户数据EC2实例与awscli或AWS控制台(阅读更多关于Launching an Amazon ECS Container Instance):

     
        #!/bin/bash  
        echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config 
    
  2. 使用AWS OpsWorks创造ECS集群层AWS OpsWorks Supports Managing Amazon ECS Container Instances。在这种情况下,OpsWoks将使层中的任何EC2实例与特定的ECS群集一起工作。

有一些限制:

  1. 每个OpsWorks堆栈只能有一个精英集群层
  2. 每个EC2实例可以只分配到一个精英集群
1

你可以还要手动将EC2实例添加到ECS群集:

  1. 这一行创建/etc/ecs/ecs.config文件:

    ECS_CLUSTER={{ name }} 
    

    凡{{名}}是你想要的群集名称。

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

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