2015-06-17 191 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」)並啓動它。

該實例將創建集羣,如果它尚不存在。