Пользовательские данные начальной загрузки для экземпляров контейнера ECS для монтирования хранилища EFS - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь автоматически загрузить экземпляры контейнера ECS, чтобы при каждом запуске экземпляра он монтировался в хранилище EFS.

Я перешел в стек формирования облаков для своего кластера и попытался добавить свой скрипт начальной загрузки в пользовательские данные при обновлении стека. Следующие скрипты уже присутствуют:

#!/bin/bashecho ECS_CLUSTER=flask-ecs >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;

Attempt1 Скрипт начальной загрузки (я вставил команды, которые использовал для монтирования вручную):

#!/bin/bashecho ECS_CLUSTER=flask-ecs >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;sudo yum install -y amazon-efs-utils;cd /home/ec2-user/;mkdir efs;sudo mount -t efs fs-456665f:/ efs;

Attempt2 Скрипт начальной загрузки (добавлен со ссылкой на документацию Документация AWS )

#!/bin/bashecho ECS_CLUSTER=flask-ecs >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;  #cloud-config repo_update: true repo_upgrade: all  packages: - amazon-efs-utils  runcmd: - file_system_id_01=fs-456665f - efs_directory=/home/ec2-user/efs  - mkdir -p ${efs_directory} - echo "${file_system_id_01}:/ ${efs_directory} efs tls,_netdev" >> /etc/fstab - mount -a -t efs defaults

Ни одна из попыток не смонтировала EFS в экземплярах после входа в экземпляр. Теперь экземпляры контейнера не отображаются в консоли кластера ECS.

1 Ответ

0 голосов
/ 31 октября 2018

Допустим, вы используете шаблон YAML CloudFormation, и единственная проблема, которую я вижу, состоит в том, что оператор должен быть многострочным, как:

  UserData:
    "Fn::Base64": !Sub |
      #!/bin/bash
      echo ECS_CLUSTER=pidetodo-ecs >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;
      sudo yum install -y amazon-efs-utils
      mkdir /home/ec2-user/efs
      sudo mount -t efs fs-456665f:/ /home/ec2-user/efs 

Этого должно быть достаточно, и я не уверен в использовании bash-скрипта с операторами cloud-init. Я бы предложил сначала заполнить файл / etc / fstab информацией о файловой системе EFS, а затем попробовать монтировать, как упоминается в документе AWS.

Запомните два пробела в YAML.

...