Рубрики
Uncategorized

AWS DEVOPS PRO Сертификация Блог Post Серия: развертывание кода

Фото Katherine McCormack на Unsplash Alught Empotor с использованием AWS стоит денег, некоторые из … Теги с AWS, изучением, сертификацией, дежопами.

AWS DevOps Pro Сертификация (23 части серии)

Фото Кэтрин Маккормака на Бессмысленно

Пусть покупатель будет бдителен

Использование AWS стоит денег, некоторые из этих услуг не могут быть частью AWS Свободный уровень Отказ Вы можете сохранить расходы, разрывая все, что вы создали, в то время как обучение, но все еще можно запустить огромный счет, поэтому обратите внимание на приведенные вами экземпляры!

Мне очень повезло, что я смог использовать учетную запись AWS моего работодателя. Вы должны задать свое место работы, если аналогичное договоренность может быть сделано как часть вашего исследования.

Velocius Quam Asparagi Conquantur

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

Какие?

Code Build — это управляемая служба развертывания.

Почему?

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

Когда?

SDLC Автоматизация: CodeCommit -> CodeBuild -> [Кодеде работы]

Как?

Это основано вокруг Учебное пособие Для развертывания в группу масштабирования EC2. Ключевое отличие состоит в том, что я конденсировал его, чтобы включить только инструкции для использования на машине на основе Linux/MacOS, используя Amazon V2 AMI.

Создание роли обслуживания кодовой работы и Профиль экземпляра EC2 IAM

Это часть Начало работы руководство.

N.B. Мы решили использовать управляемую политику для развертывания платформы Compute Compute для Compute.

Скопируйте объект JSON ниже и вставьте в новый файл под названием Кодеде работыdemo-trust.json.

{
  "Version": "2012-10-17",
  "Statement": [
      {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
              "Service": [
                  "codedeploy.amazonaws.com"
              ]
          },
          "Action": "sts:AssumeRole"
      }
  ]
}
aws iam create-role \
  --role-name CodeDeployServiceRole \
  --assume-role-policy-document file://CodeDeployDemo-Trust.json

aws iam attach-role-policy \
  --role-name CodeDeployServiceRole \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole

Скопируйте объект JSON ниже и вставьте в файл под названием Кодеде работыdemo-EC2-Trust.json

{
  "Version": "2012-10-17",
  "Statement": [
      {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
              "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
      }
  ]
}

Скопируйте объект JSON ниже и вставьте в файл под названием Кодеде работыДемо-EC2-Permissions.json

{
  "Version": "2012-10-17",
  "Statement": [
      {
          "Action": [
              "s3:Get*",
              "s3:List*"
          ],
          "Effect": "Allow",
          "Resource": "*"
      }
  ]
}
aws iam create-role \
  --role-name CodeDeployDemo-EC2-Instance-Profile \
  --assume-role-policy-document file://CodeDeployDemo-EC2-Trust.json

aws iam put-role-policy \
  --role-name CodeDeployDemo-EC2-Instance-Profile 
  --policy-name CodeDeployDemo-EC2-Permissions 
  --policy-document file://CodeDeployDemo-EC2-Permissions.json

aws iam create-instance-profile \
  --instance-profile-name CodeDeployDemo-EC2-Instance-Profile

aws iam add-role-to-instance-profile \
  --instance-profile-name CodeDeployDemo-EC2-Instance-Profile \
  --role-name CodeDeployDemo-EC2-Instance-Profile

Создайте автоскалинговую группу (ASG)

Скопируйте скрипт ниже и вставьте в новый файл под названием instance-setup.sh Отказ Это будет установлена кодовой агент, будет работать развертывание приложения к экземплярам, связанным с группой развертывания (через ASG).

#!/bin/bash
yum -y update
yum install -y ruby
cd /home/ec2-user
curl -O https://aws-codedeploy-????.s3.amazonaws.com/latest/install
chmod +x ./install
./install auto

Редактировать ???? Чтобы отразить ваш регион I.E. Если ваш регион Paris, то значение будет ЕС-Запад-3 Отказ

Переменные среды Мы хотим определить:

  • Ami_id amazon v2 ami для вашего региона
  • Key_name ключевой пара для региона
  • AZ Доступные зоны (ы) для нашего региона

Вот несколько команд CLI AWS, чтобы помочь вам получить правильные значения для вашей собственной среды.

# Find the Amazon v2 AMI for your region
aws ec2 describe-images --owners amazon \
  --filters \
    'Name=name,Values=amzn2-ami-hvm-2.0.????????-x86_64-gp2' \
    'Name=state,Values=available' \
  --output json | \
jq -r '.Images | sort_by(.CreationDate) | last(.[]).ImageId')


# List key pairs in your region
aws ec2 describe-key-pairs | jq -r '.KeyPairs[].KeyName | sort_by(.CreationDate)'

# List availability zones for your region
aws ec2 describe-availability-zones

Создайте конфигурацию запуска:

AMI_ID=__FILL_ME_IN__
KEY_NAME=__FILE_ME_IN__
aws autoscaling create-launch-configuration \
  --launch-configuration-name CodeDeployDemo-AS-Configuration \
  --image-id $AMI_ID \
  --key-name $KEY_NAME \
  --iam-instance-profile CodeDeployDemo-EC2-Instance-Profile \
  --instance-type t2.micro \
  --user-data file://instance-setup.sh

Создайте автоскалинговую группу:

set AZ eu-west-3a
aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name CodeDeployDemo-AS-Group \
  --launch-configuration-name CodeDeployDemo-AS-Configuration \
  --min-size 1 \
  --max-size 1 \
  --desired-capacity 1 \
  --availability-zones $AZ

Запустите следующую команду, чтобы проверить состояние вашего ASG. Перейдите к следующему шагу, когда статус «Здоровый inservice»:

aws autoscaling describe-auto-scaling-groups \
  --auto-scaling-group-names CodeDeployDemo-AS-Group \
  --query "AutoScalingGroups[0].Instances[*].[HealthStatus, LifecycleState]" \
  --output text

Разверните приложение к ASG

Переменные среды Мы хотим определить:

  • Сервис_role_rarn Сервисная роль Мы создали в начале лаборатории
  • Регион области
SERVICE_ROLE_ARN=$(aws iam get-role --role-name CodeDeployServiceRole --query "Role.Arn" --output text)
REGION eu-west-3
BUCKET_NAME aws-codedeploy-$REGION

aws deploy create-application --application-name SimpleDemoApp

aws deploy create-deployment-group \
  --application-name SimpleDemoApp \
  --auto-scaling-groups CodeDeployDemo-AS-Group \
  --deployment-group-name SimpleDemoDG \
  --deployment-config-name CodeDeployDefault.OneAtATime \
  --service-role-arn $SERVICE_ROLE_ARN

DEPLOYMENT_ID=$(aws deploy create-deployment \
  --application-name SimpleDemoApp \
  --deployment-config-name CodeDeployDefault.OneAtATime \
  --deployment-group-name SimpleDemoDG \
  --s3-location bucket=$BUCKET_NAME,bundleType=zip,key=samples/latest/SampleApp_Linux.zip | jq -r .deploymentId)

Appspec file.

Давайте загружаем копию приложения образца и осмотрите содержимое:

 curl -LO https://s3.$REGION.amazonaws.com/$BUCKET_NAME/samples/latest/SampleApp_Linux.zip
 unzip SampleApp_Linux.zip
 tree # to see the structure of the app
 cat appspec.yml

Содержание архива:

  • Веб-страница Мы будем развертывать через кодеде
  • Сценарии для установки/остановки/запуска веб-сервера
  • AppSpec Файл, который является тем, что агент коде выполняет для развертывания веб-страницы для каждого экземпляра в группе развертывания.

Вернемся к нашему развертыванию.

Продолжайте проверять развертывание до тех пор, пока не выходы после следующих команд «успешно».

aws deploy get-deployment --deployment-id $DEPLOYMENT_ID \
  --query "deploymentInfo.status" \
  --output text

Подсказка: Если вы получите доступ отказанной ошибки на этапе загрузки, профиль экземпляра EC2 IAM может быть сконфигурирован неправильно или политика, чтобы разрешить доступ к S3 не был прикреплен.

Давайте проверим, что наше развертывание работало, получив общественный адрес нашего экземпляра.

INSTANCE_ID=$(aws autoscaling describe-auto-scaling-groups \
  --auto-scaling-group-names CodeDeployDemo-AS-Group \
  --query "AutoScalingGroups[0].Instances[*].InstanceId" --output text)

curl $(aws ec2 describe-instances \
  --instance-id $INSTANCE_ID \
  --query "Reservations[0].Instances[0].PublicDnsName" \
  --output text)

Увеличьте количество экземпляров в ASG

Мы увеличиваем счет экземпляра ASG, чтобы довести его в общее количество 2.

aws autoscaling update-auto-scaling-group \
  --auto-scaling-group-name CodeDeployDemo-AS-Group \
  --min-size 2 \
  --max-size 2 \
  --desired-capacity 2

Продолжайте проверять экземпляры в ASG, переходите только к следующему шагу, когда они оба «здоровое расширение».

aws autoscaling describe-auto-scaling-groups \
  --auto-scaling-group-names CodeDeployDemo-AS-Group \
  --query "AutoScalingGroups[0].Instances[*].[HealthStatus, LifecycleState]" \
  --output text

Теперь проверьте состояние развертывания, оно должно быть «успешно».

DEPLOYMENT_ID=$(aws deploy list-deployments \
  --application-name SimpleDemoApp \
  --deployment-group-name SimpleDemoDG \
  --query "deployments" | jq -r 'last(.[])')

aws deploy get-deployment \
  --deployment-id $DEPLOYMENT_ID \
  --query "deploymentInfo.[status, creator]" \
  --output text  

Далее давайте погибшим все экземпляры, чтобы убедиться, что у нас есть рабочий сайт.

INSTANCE_IDS=$(aws autoscaling describe-auto-scaling-groups \
  --auto-scaling-group-names CodeDeployDemo-AS-Group \
  --query "AutoScalingGroups[0].Instances[*].InstanceId" \
  --output text)

  --instance-ids $INSTANCE_IDS \
  --query "Reservations[0].Instances[0].PublicDnsName" \
  --output text

aws ec2 describe-instances \
  --instance-ids $INSTANCE_IDS \
  --query "Reservations[*].Instances[*].PublicDnsName" \
  | jq -r .[][] | xargs curl {}

Чистить

aws autoscaling delete-auto-scaling-group \
  --auto-scaling-group-name CodeDeployDemo-AS-Group \
  --force-delete

aws autoscaling delete-auto-scaling-group \
  --auto-scaling-group-name CodeDeployDemo-AS-Group \
  --force-delete

aws deploy delete-application \
  --application-name SimpleDemoApp

Особенности API и CLI и глаголы

Функции

  • Развертывание
    • Группы развертывания
    • Ревизия приложений
  • Приложения
  • Конфигурации развертывания
  • Дорожные экземпляры

Глаголы (CRUD)

  • Создайте
  • Batch-Get/Get/List/описать
  • Обновление/Поместить
  • Удалить

Выбросы

  • Регистрация включенного-экземпляра
  • Пакетные прессования-экземпляры
  • Add-tags-to-premises-экземпляры
  • Удалить-теги — от помещения — экземпляры
  • Дерегестер-включенный-экземпляр
  • Продолжайте развертывание
  • Стоп-развертывание
  • Удалить-github-account-токен
  • дерегент
  • установить
  • толкать
  • регистр
  • Регистрация-приложение-ревизия
  • Положить жизненный цикл-события-крючок-исполнение-статус

Чтобы перейти к следующей части серии, нажмите на серую точку ниже, которая рядом с текущим маркером (черная точка).

AWS DevOps Pro Сертификация (23 части серии)

Оригинал: «https://dev.to/booyaa/aws-devops-pro-certification-blog-post-series-code-deploy-2bcj»