Как выполнить автоматическое развертывание с помощью Bitbucket Pipelines и AWS CodeDeploy?
Пошаговое руководство по автоматическому развертыванию приложения:
Предварительные требования: - репозиторий BitBucket - учетная запись AWS - Putty
ШАГ 1. Создайте нового пользователя IAM
Войдите в свою учетную запись AWS. Посетите https://console.aws.amazon.com/iam/.
Пользователи> Добавить пользователя> введите имя пользователя> установите оба флажка Тип доступа> выберите переключатель «Пользовательский пароль»> снимите флажок «Требовать сброса пароля»> нажмите Далее: Разрешения> Прикрепить существующие политики напрямую> найдите «s3» и выберите AmazonS3FullAccess
![введите описание изображения здесь](https://i.stack.imgur.com/ioK7G.png)
Attach Existing Policies- search for “codedeploy” and select AmazonEC2RoleforAWSCodeDeploy, AWSCodeDeployDeployerAccess, AWSCodeDeployFullAccess, AWSCodeDeployRole
![введите описание изображения здесь](https://i.stack.imgur.com/ojQtM.png)
Next: Review > Create user-IMPORTANT NOTE:
1. Download CSV
2. Note Down Access Key ID
3. Note Down Secret access key
![введите описание изображения здесь](https://i.stack.imgur.com/DtIEI.png)
ШАГ 2. Создайте роль для приложения CodeDeploy
Its is service role for Code Deploy. This service role you assign to the code deploy application that you will create in the later steps.
Войдите в свою учетную запись AWS. Посетите https://console.aws.amazon.com/iam/.
Роли> Создать роль> щелкните Сервис AWS>
![введите описание изображения здесь](https://i.stack.imgur.com/kxwio.png)
Below Select CodeDeploy >
![введите описание изображения здесь](https://i.stack.imgur.com/SHRoA.png)
Next: permissions > Next Review > enter Role name (e.g CodeDeployServiceRole) > enter description (not compulsory) > Create role.
ШАГ 3. Создайте роль для экземпляра EC2
Это роль, которая назначается экземпляру EC2, который вы создадите на более поздних этапах.
Войдите в свою учетную запись AWS. Посетите https://console.aws.amazon.com/iam/.
Шаг A. Создайте политику для этой роли. Политики> Создать политику> Выберите «Создать собственную политику»> Имя политики: «CodeDeploy-EC2-Permissions»> Описание: «политика для роли, назначенной экземпляру EC2. »> Документ политики: вставьте следующее в поле ввода.
{«Версия»: «2012–10–17», «Заявление»: [{«Действие»: [«s3: Get *», «s3: List *»], «Эффект»: «Разрешить», «Ресурс» : «*»}]}
![введите описание изображения здесь](https://i.stack.imgur.com/t3ZRL.png)
Validate Policy > Create Policy.
Шаг 2. Создание роли. Роли> Создать роль> Сервис AWS> EC2> Выберите вариант использования> Нажмите EC2> Далее: Разрешения> найдите «ec2» и выберите «CodeDeploy-EC2-Permissions», который вы создали на шаге A>
![введите описание изображения здесь](https://i.stack.imgur.com/HBZmX.png)
Next: Review > Name: “CodeDeploy-EC2-Instance-Profile” > Role Description: “CodeDeploy-EC2-Instance-Profile” > Create Role
ШАГ 4. Создайте экземпляр EC2.
Войдите в свою учетную запись AWS. Сервисы> EC2> Запуск экземпляра> Amazon Linux AMI (или выберите в соответствии с вашими потребностями)> Выберите тип экземпляра> Далее: Настройка сведений об экземпляре> Роль IAM> в раскрывающемся списке выберите роль, созданную на шаге 3, шаг B (CodeDeploy- EC2-Instance-Profile)>
![введите описание изображения здесь](https://i.stack.imgur.com/mT6Ag.png)
Next: Add Storage > Next: Add Tags > Add Tag > (Important step!! note down name & key you assign) Input Key: Name, Value: staging-auto-deploy (or anything you prefer) >
![введите описание изображения здесь](https://i.stack.imgur.com/ivpf4.jpg)
Next: Configure Security Group > select existing security group or create new > Review and Launch > Launch > Select existing key pair or create new > Launch Instances > View Instances > Note down IPv4 Public IP
ШАГ 5. Установите агент CodeDeploy на экземпляр EC2.
Откройте Putty на вашем локальном компьютере> введите общедоступный IP-адрес, который вы получили на шаге 4> порт 22> в подключении> SSH> Auth> файл закрытого ключа для аутентификации> просмотрите> свяжите файл пары ключей для вашего экземпляра на шаге 4> откройте> войти как: введите ваше имя пользователя
Теперь установите агент CodeDeploy в соответствии с типом вашего экземпляра.
Сервер Linux: http://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-linux.html
Сервер Ubuntu: http://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-ubuntu.html
Windows Server: http://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install-windows.html
Убедитесь, что агент запущен.
![введите описание изображения здесь](https://i.stack.imgur.com/cN3Ln.png)
ШАГ 6. Добавьте аддон CodeDeploy в BitBucket
Login to your BitBucket Account
Integrations > Search AWS CodeDeploy > Add AWS CodeDeploy
![введите описание изображения здесь](https://i.stack.imgur.com/lOEjZ.png)
ШАГ 7. Создайте приложение CodeDeploy на AWS
Login to your AWS Account.
Services > search CodeDeploy > select CodeDeploy > If this is your first time select “get started now” or Create Application > Custom deployment > skip walkthrough > enter details >
Application Name: staging-deployment (Important: note it down)
Deployment group name: staging-deployment (Important: note it down)
Select “In-place deployment”
Environment configuration > Amazon EC2 isntance > Key: Name, Value: staging-auto-deploy (these are the key, value which you created when you created instance in Step 4) >
![введите описание изображения здесь](https://i.stack.imgur.com/S71QA.png)
Deployment Configuration > CodeDeployDefault.OneAtTime > Service Role ARN: select the role that you created in step 2 (CodeDeployServiceRole) >
![введите описание изображения здесь](https://i.stack.imgur.com/LP5GZ.png)
Create Application
ШАГ 8. Создайте том S3
Войдите в свою учетную запись AWS> Services> S3> Create bucket> Bucket name: staging-deployment-bucket> Create.
ШАГ 9. Настройки CodeDeploy для репозитория
Войдите в свое репо> Настройки> Настройки CodeDeploy> Настроить надстройку> Следуйте инструкциям на экране.
Шаг A. Войдите в свою учетную запись AWS> Services> IAM> Policy> Create Policy> Create Your Own Policy> (Эта политика создана для надстройки развертывания кода битбакета, используйте ее, чтобы создать роль для надстройки Bitbucket codeDeploy ) Имя политики: BitBucketCodeDeployAddOnPolicy. Документ политики: вставьте следующее в поле ввода.
{«Версия»: «2012–10–17», «Заявление»: [{«Эффект»: «Разрешить», «Действие»: [«s3: ListAllMyBuckets», «s3: PutObject»], «Ресурс»: « arn: aws: s3 ::: ”}, {« Эффект »:« Разрешить »,« Действие »: [« codedeploy: »],« Ресурс »:« * »}]}
Создать политику
Шаг B. Войдите в свою учетную запись AWS> Сервисы> IAM> Роли> создать роль> другую учетную запись AWS>
![введите описание изображения здесь](https://i.stack.imgur.com/sdfld.png)
account ID: copy paste the AWS Account ID given on the bitbucket codeDeploy on screen instruction > check require external ID checkbox then: copy paste the External ID given on the bitbucket codeDeploy on screen instruction >
![введите описание изображения здесь](https://i.stack.imgur.com/Hul42.png)
![введите описание изображения здесь](https://i.stack.imgur.com/rga62.png)
далее: Разрешения> Прикрепите политики разрешений> найдите политику, созданную на шаге A> далее: просмотрите Имя ролика: "BitbucketCodeDeployAddon"> Создать роль, щелкните только что созданную роль, скопируйте ARN роли и вставьте его в «Your Role ARN» на странице настроек развертывания кода битбакета> нажмите «Сохранить и продолжить». На следующей странице Приложение: выберите приложение CodeDeploy, созданное на шаге 7> S3 Bucket: выберите сегмент S3, созданный на шаге 8> сохранить
ШАГ 10. Включите конвейер Bitbucket
Войдите в свою учетную запись BitBucket Настройки репо> Конвейеры> настройки> Включите Включить конвейер
Для шагов 11, 12, 13 и 14 необходимые файлы доступны для справки в источнике этого репо: https://bitbucket.org/bhushanTPL/bitbucket-pipeline-and-aws-codedeploy
ШАГ 11. Создайте bitbucket-pipelines.yml
Скопируйте файл bitbucket-pipelines.yml. (Внесите в этот файл изменения в соответствии с требованиями вашего проекта) Добавьте этот файл в корень вашего проекта.
Документы: https://confluence.atlassian.com/bitbucket/configure-bitbucket-pipelines-yml-792298910.html?_ga=2.162970750.315484667.1509451697-1615374000.1508921669#Configurebitlines.yml-ci_imageimage(необязательно)
ШАГ 12. Создайте codedeploy_deploy.py
Скопируйте файл codedeploy_deploy.py. Добавьте этот файл в корень вашего проекта.
Документы и исходный код: https://bitbucket.org/awslabs/aws-codedeploy-bitbucket-pipelines-python.
ШАГ 13. Создайте appspec.yml
Перейдите к источнику этого репо: https://bitbucket.org/bhushanTPL/bitbucket-pipeline-and-aws-codedeploy и скопируйте файл appspec.yml. (внесите изменения в этот файл в соответствии с требованиями вашего проекта) Добавьте его в корень вашего проекта.
Документы: http://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html
ШАГ 14. Создание скриптов
Создайте папку сценариев в корне вашего проекта
Создайте файл startApp.sh в папке сценариев в корне ваших проектов, который будет запускать команды после того, как ваша сборка будет перенесена в ваш экземпляр EC2.
ШАГ 15. Добавьте переменные среды
Войдите в свою учетную запись BitBucket> Настройки репо> Переменные среды Добавьте следующие переменные среды
AWS_SECRET_ACCESS_KEY: секретный ключ для пользователя с необходимыми разрешениями.
AWS_ACCESS_KEY_ID: ключ доступа для пользователя с необходимыми разрешениями.
AWS_DEFAULT_REGION: регион, в котором находится целевое приложение AWS CodeDeploy.
APPLICATION_NAME: имя приложения AWS CodeDeploy.
DEPLOYMENT_CONFIG: конфигурация развертывания AWS CodeDeploy (CodeDeployDefault.OneAtATime | CodeDeployDefault.AllAtOnce | CodeDeployDefault.HalfAtATime | Custom).
DEPLOYMENT_GROUP_NAME: имя группы развертывания в приложении.
S3_BUCKET: имя сегмента S3, в котором хранится исходный код для развертывания.
Документы и ссылки: https://bitbucket.org/awslabs/aws-codedeploy-bitbucket-pipelines-python.
Теперь вы настроили все необходимые шаги. Теперь, когда вы фиксируете и отправляете изменения в свою ветку, запускается процесс автоматического развертывания. Обратите внимание, что в следующем примере конфигурации bitbucket-pipeline.yml процесс развертывания будет запускаться всякий раз, когда вы отправляете свои изменения в «промежуточную» ветвь.
![введите описание изображения здесь](https://i.stack.imgur.com/206aj.png)
You can check progress of your pipeline by clicking on Pipelines in your repo.
![введите описание изображения здесь](https://i.stack.imgur.com/0qptF.png)
You can view deployment related logs. For more info visit : http://docs.aws.amazon.com/codedeploy/latest/userguide/deployments-view-logs.html
Вы можете отслеживать развертывания из AWS, войдя в свою учетную запись AWS, Сервисы> CodeDeploy> Развертывания.
person
BeeBee8
schedule
16.05.2018