Назад | Перейти на главную страницу

Как мне установить beanstalk .ebextensions .config «sources», ключ «target directory» в текущий каталог пакета

Я работаю в среде эластичного бобового стебля python 2.7.

Я пытаюсь использовать источники введите файл .ebextensions .config, чтобы скопировать архив tgz в каталог в корне моего приложения - /opt/python/current/app/utility. Я делаю это, потому что файлы в этой папке слишком велики для включения в мой репозиторий github.

Однако похоже, что ключ источников выполняется до того, как будет создана символическая ссылка ondeck на текущий каталог пакета, поэтому я не могу ссылаться /opt/python/ondeck/app при использовании команды sources, поскольку она создает папку, а затем выдает ошибки beanstalk при попытке создать символическую ссылку ondeck.

Вот копии .ebextensions/utility.config файлы, которые я пробовал:

sources:
  /opt/python/ondeck/app/utility: http://[bucket].s3.amazonaws.com/utility.tgz

Выше успешно копируется в / opt / python / ondec / app / utility, но затем возникают ошибки beanstalk, поскольку он не может создать символическую ссылку из / opt / python / bundle / x -> / opt / python / ondeck.

sources:
  utility: http://[bucket].s3.amazonaws.com/utility.tgz

Выше копирует папку в / utility сразу в корень параллельно с / etc.

Я смог сделать это с другим ключом:

container_commands:
  001_get_utility_dir:
    command: "cd /opt/python/ondeck/app/utility && curl http://[bucket].s3.amazonaws.com/elasticbeanstalk/utility.tgz | tar xz"

Это немного помогло, но в моей среде (php) нет временного ondeck каталог и current Каталог, в котором в конечном итоге развертывается мое приложение, воссоздается после выполнения команд.

Поэтому мне нужно было запустить сценарий после развертывания. Поиск показал, что я могу вставить скрипт в /opt/elasticbeanstalk/hooks/appdeploy/post/ и он запустится после развертывания.

Поэтому я загружаю / извлекаю файлы из S3 во временный каталог самым простым способом, используя sources. Затем я создаю файл, который скопирует мои файлы после развертывания и помещаю его в каталог обработчиков после развертывания.

sources:
  /some/existing/directory: https://s3-us-west-2.amazonaws.com/my-bucket/vendor.zip
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_move_my_files_on_deploy.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      mv /some/existing/directory /var/app/current/where/the/files/belong