Зміст:
- Створення EC2 Ubuntu інстансу
- Встановлення пакетів на EC2 інстанс (Docker, AWS CLI)
- Налаштування AWS CLI на EC2, також на локальній машині
- Налаштування самохостингового (Self Hosted) рнера на EC2
- Створення секрету бази даних (пароль) в AWS Secret Manager з ім'ям ‘/dev/djangoapi/db/password’
- Створення ECR репозиторію в AWS
- Створення CI/CD конвеєра за допомогою Github Actions
- Github Actions (Збірка)
- Створення інфраструктури за допомогою Terraform
- Github Actions (Збірка та деплой)
- Додавання SSL та домену.
Весь код доступний в репозиторії GitHub → https://github.com/rahulwath/django-aws-ecs-terraform
1. Створення EC2 Ubuntu інстансу
Першим кроком для деплою Django застосунку на AWS є створення EC2 інстансу. EC2 інстанс — це віртуальний сервер, який працює в хмарі AWS. Щоб створити EC2 інстанс, потрібно увійти в свій акаунт AWS і перейти до панелі керування EC2.
Переконайтеся, що ви створюєте інстанс у тому ж регіоні, де будете створювати інфраструктуру.
2. Встановлення пакетів на EC2 інстанс (Docker, Terraform, AWS CLI)
Підключіться через SSH до інстансу Github-Ubuntu-runner (створеного на першому кроці) і виконайте наступні команди.
Встановлення Docker:
sudo apt-get update
sudo apt install docker.io -y
sudo usermod -aG docker ubuntu
newgrp docker
sudo chmod 777 /var/run/docker.sock
Встановлення AWS CLI:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
sudo apt-get install unzip -y
unzip awscliv2.zip
sudo ./aws/install
3. Налаштування AWS CLI на EC2
Перед тим, як налаштувати AWS, отримайте доступ до ключів доступу (access keys) з IAM користувача.
Також збережіть CSV файл для подальшого використання.
aws configure
4. Налаштування самохостингового (Self Hosted) рнера на EC2
Тепер перейдіть на GitHub репозиторій і натисніть на Налаштування (Settings) -> Дії (Actions) -> Рнери (Runners)
Натисніть на "New self-hosted runner"
Тепер виберіть Linux та архітектуру X64
Використовуйте наступні команди для додавання самохостингового рнера.
Примітка: На зображеннях команди належать моєму акаунту, використовуйте ваші команди, вони з'являться на вашій сторінці GitHub для самохостингового рнера.
Тепер підключіться через SSH до вашого AWS інстансу (Github-Ubuntu-runner), щоб з’єднати його з вашим інстансом, і вставте/виконайте надані команди.
Автоматичний перезапуск або автоматичне підключення до GitHub Action, якщо EC2 інстанс зупинено чи перезапущено.
Створіть файл служби systemd на EC2.
sudo nano /etc/systemd/system/run-script.service
Вставте наступний вміст:
[Unit]
Description=Script Runner Service
After=network.target
[Service]
Type=simple
Restart=always
User=ubuntu
WorkingDirectory=/home/ubuntu/actions-runner
ExecStart=/home/ubuntu/actions-runner/run.sh
[Install]
WantedBy=multi-user.target
Виконайте ці скрипти:
sudo systemctl daemon-reload
sudo systemctl enable run-script
sudo systemctl start run-script
sudo systemctl status run-script
Тепер ви побачите, що самохостинговий рнер присутній на GitHub Actions.
5. Створення секрету бази даних (пароль) в AWS Secret Manager з ім'ям ‘/dev/djangoapi/db/password’
Спочатку налаштуйте AWS CLI локально та виконайте команду.
aws ssm put-parameter --name "/dev/djangoapi/db/password" --value "admin123" --type String --tags '[{"Key":"Region","Value":"ap-south-1"},{"Key":"Environment", "Value":"Dev"},{"Key":"Service", "Value":"admin123"}]'
6.
Створення репозиторію ECR на AWS
Ми повинні створити репозиторій ECR з назвою django-app.
Перейдіть до ECR — → створіть репозиторій
Тепер оновіть URI репозиторію ECR у файлі root/main.tf
Перед тим, як створювати GitHub actions, додайте AWSACCESSKEYID та AWSSECRETACCESSKEY в змінні GitHub Actions.
Якщо у вас вже є ключ доступу та секретний ключ, то додайте їх туди.
7. Створення інфраструктури за допомогою Terraform
Переконайтеся, що Terraform встановлений на вашій локальній системі. Використовуйте посилання для встановлення відповідно до вашої системи.
terraform workspace new staging
terraform workspace select staging
terraform init
terraform plan
terraform apply -auto-approve
9. GitHub Actions (Збірка та деплой)
Завантажте весь код у репозиторій GitHub, і це запустить GitHub Action.
10. Доступ до Django застосунку через ALB DNS ім'я.
Залишайтеся з нами!
Обов'язково слідкуйте за нами та підписуйтесь для отримання оновлень і нових блогів.
Перекладено з: Deploy Dockerize Django App on AWS ECS Fargate using GitHub Actions and Terraform