Перед тем, как начать:
Это неполный ответ. Не полное пошаговое руководство, но много подсказок и некоторый код, который поможет вам настроить определенные AWS вещи, такие как ALB и ваши файлы в репозитории, чтобы это работало. Этот ответ больше похож на несколько подсказок, собранных вместе из моего спринта, пытающегося заставить ECS работать прошлой ночью.
У меня также недостаточно очков, чтобы ни комментировать, ни болтать так ... вот лучшее, что я могу предложение.
Быстрые ссылки (хотя вам, вероятно, следует просто пропустить эти два пункта):
- Проверьте это: https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-ec2-configure.html
- У меня недостаточно очков, чтобы прокомментировать или поговорить ... Это тоже не будет полный ответ, поскольку я пытаюсь сначала завершить sh развертывание ECS из GH, прежде чем перейти к EC2 от GH. В любом случае ...
- Последнее изменение: это будет звучать как маркетинговый ход, но правильная реализация с действиями GitHub и workflow_dispatch находится в репозитории GitHub * Donate Anything . Вы найдете ту же работу ECS, расположенную ниже. Обратите внимание, что я изменил действие GitHub на использование Docker Hub, поскольку он был бесплатным (и для меня дешевле, если вы собираетесь использовать ECS, поскольку AWS ECR стоит дорого).
Изменить : Развертывание ECS сейчас работает. Скоро начну работу над развертыванием EC2.
Редактировать 2: Я добавил репозиторий Donate Anything. Кроме того, я не уверен, жизнеспособно ли прямое развертывание EC2, по крайней мере для меня, поскольку сценарии установки были бы странными. Однако я все еще не нашел времени, чтобы добраться до EC2. Опять же, если кто-то желает поделиться своим временем, пожалуйста, сделайте это и внесите свой вклад!
Я хочу предупредить всех, что ГРУППЫ БЕЗОПАСНОСТИ очень важны. Это забивало меня на долгое время, так что убедитесь, что вы понимаете их правильно. В учебнике ECS я научу вас, как я это делаю.
Полный неполный ответ:
Я работаю над этой проблемой прямо сейчас в этом репозитории и другом для ECS здесь с помощью действий GitHub. Я не слишком далеко начинал работу с EC2, но базовое c краткое изложение для тестирования таково:
CRUCIAL
- You сначала нужно попробовать выполнить развертывание из AWS CLI. Это связано с тем, что AWS Actions еще не имеет специального действия для развертывания в EC2.
- Запишите каждый из этих операторов. Они нам понадобятся позже для действия GitHub.
Некоторые подсказки при тестировании этой AWS настройки:
- Перед использованием CodeDeploy вам понадобится экземпляр EC2 , Application Load Balancer (вы найдете его в Elasti c Load Balancer) и целевой группы (которую вы создаете ВО ВРЕМЯ установки ALB). Go для целевых групп, щелкните группу правой кнопкой мыши и зарегистрируйте свой экземпляр.
- Для развертывания из CodeDeploy создайте новое приложение. Создайте новую группу развертывания. Я думаю, что для вашей настройки вам следует использовать тип развертывания на месте, а не тип развертывания Blue / Green.
- Наконец, при тестировании в интерфейсе командной строки вы должны запустить код, который вы видите здесь: https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-wordpress-deploy-application.html#tutorials -wordpress-deploy-application-create-deployment-cli
- Обратите внимание, вы можете начать отсюда (используя S3 как место для хранения вашего последнего кода. Вы можете удалить его в любом случае, поскольку я считаю, что запросы DELETE не влекут за собой плату): https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-wordpress-upload-application.html Я лично не знаю, работает ли эта интеграция GitHub OAuth. Я пробовал однажды раньше (правда, очень любитель, т.е. понятия не имел, что делал раньше), и ничего не произошло, так ... Я бы просто придерживался этого руководства.
Как будет выглядеть ваше тестовое изложение:
- Для моего репозитория ECS я потратил целых 10 часов, пытаясь настроить все правильно, шаг за шагом, как действие GitHub. Для вас вы должны сделать то же самое. Представьте, что вы - код: выясните, откуда вам нужно начать.
- Ага! Я, наверное, сначала должен разобраться в CodeDeploy. Давайте исправим приложение c. yaml файл первым! Файл appspe c - это то, как CodeDeploy будет работать с хуками для всего. К сожалению, я сейчас сталкиваюсь с этой проблемой здесь , но это потому, что синтаксис EC2 и ECS для файлов AppSpe c отличается. К счастью, в EC2 нет особых областей. Просто исправьте свои файлы и зацепки. Пример из моего теста:
version: 0.0
os: linux
files:
- source: /
destination: /code
hooks:
BeforeInstall:
- location: aws_scripts/install_dependencies
timeout: 300
runas: root
ApplicationStop:
- location: aws_scripts/start_server
runas: root
Действие GitHub:
Что вам понадобится как минимум:
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
# TODO Change your AWS region here!
aws-region: us-east-2
Проверка кода необходимо ... ну ... получить код.
Для настройки AWS учетных данных вам нужно добавить AWS_ACCESS_KEY_ID
и AWS_SECRET_ACCESS_KEY
в свои секреты GitHub с правильным IAM учетные данные. Для этого я считаю, что единственная роль IAM необходима для полного материала CodeDeploy.
Развертывание кода:
Это когда тот тестовый код, который вы должны были попробовать, прежде чем перейти на этот шаг, предназначен для . Теперь, когда ваш рабочий процесс настроен, давайте вставим код из интерфейса командной строки в ваше действие.
- name: Deploying with CodeDeploy
id: a-task
env:
an-environment-variable: anything you want
run: |
echo "Your CLI code should be placed here"
Извините, если это сбивает с толку, а не то, что вы ищете, или вам нужно полное руководство. Я тоже на самом деле не заставил это работать, но прошло некоторое время с тех пор, как я последний раз пытался, и в последний раз, когда я пытался, я даже не знал, что такое экземпляр EC2 ... Я только что сделал автономный EC2 instance и использовал rsyn c для передачи моих файлов. Надеюсь, что то, что я написал, было несколькими подсказками, которые помогут вам очень легко найти решение.
Если вы заставили его работать, поделитесь им здесь: https://github.com/Andrew-Chen-Wang/cookiecutter-django-ec2-gh-action, чтобы не было еще один должен страдать от AWS развертывания ...