Экземпляр контейнера AWS ECS

Я попытался запустить экземпляр контейнера ECS с помощью модуля Ansible EC2.

Моя инструкция такова.

- 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: логический идентификатор
  • aws: cloudformation: stack-id
  • aws: cloudformation: имя-стека

Кроме того, я могу найти эти два экземпляра на панели управления ECS.

введите описание изображения здесь

Но он виден только для кластера «по умолчанию» и невидим для других кластеров.


Что я действительно хочу делать:

  • Запустить экземпляр контейнера ECS
  • Зарегистрируйте экземпляр контейнера в кластере

Лучше, если я смогу выполнить описанный выше процесс с помощью aws-cli, но сначала я должен понять странное поведение экземпляров контейнера и сделать это вручную.


person ai0307    schedule 17.06.2015    source источник
comment
Проблема также возникает, когда я запускаю экземпляр вручную с панели управления EC2 вместо Ansible.   -  person ai0307    schedule 17.06.2015


Ответы (3)


Чтобы зарегистрировать экземпляр контейнера EC2 в кластере ECS, у вас есть несколько вариантов:

  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 может быть только один слой кластера ECS.
  2. Каждый экземпляр EC2 можно назначить только одному кластеру ECS.
person RomanMinkin    schedule 29.09.2015

Вы также можете добавить экземпляр EC2 в кластер ECS вручную:

  1. Создайте файл в /etc/ecs/ecs.config со следующей строкой:

    ECS_CLUSTER={{ name }}
    

    Где {{name}} - желаемое имя кластера.

  2. Установите агент ecs (имя пакета - «ecs-init») и запустите его.

Экземпляр создаст кластер, если он еще не существует.

person Gareth Harcombe-Minson    schedule 27.01.2016

Вы можете попробовать использовать поле user_data модуля ec2.

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

Перед запуском агента ecs вам потребуется ecs.config следующее.

#! / bin / bash
echo ECS_CLUSTER = ваше_имя_кластера >> /etc/ecs/ecs.config

person shsu    schedule 14.04.2016