Статьи

Настройка непрерывного развертывания в Amazon OpsWorks

Это переизданное гостевое сообщение в блоге Эдгарса Лаздинса. Он директор Novo IT — Латвийского агентства веб-разработок. Вы можете найти его оригинальную статью здесь .

Развертывание кода в Amazon OpsWorks с использованием Codeship

Здесь, в Novo IT, мы любим использовать Amazon OpsWorks для развертывания наших внутренних проектов. С OpsWorks мы можем легко разделить наши среды разработки в стеках и контролировать, как каждый проект создается с помощью рецептов Chef . OpsWorks связывается напрямую с выбранным вами хранилищем кода. Когда вы начинаете новую сборку, она извлекает последние изменения и собирает их для вас.

Одной из задач, которая не сразу очевидна, как решить, является запуск сборки OpsWorks удаленно из командной строки или с сервера сборки. В этой статье объясняется, как мы делаем именно это, используя отличную службу непрерывной интеграции и развертывания Codeship .

Настройка нового пользователя IAM в AWS

Мы будем использовать функцию AWS Identity and Access Management (IAM), чтобы создать нового пользователя для наших развертываний. Это предпочтительнее использования, скажем, вашей корневой учетной записи, поскольку новая учетная запись будет иметь только достаточные разрешения для развертывания OpsWorks.

Сначала мы идем в IAM, нажимаем на группы, а затем создаем новую группу . Это поднимает следующий экран:

Создание новой группы AWS IAM

Создание новой группы AWS IAM

Эта группа предоставит всем своим членам доступ к OpsWorks. Имя, похожее на «opsworks-users», имеет смысл. После того, как вы выбрали имя, нажмите « Продолжить», и у нас появится экран выбора политики. На данный момент мы можем выбрать из списка доступных политик или создать полностью настраиваемую политику. В нашем случае существующая политика «Полный доступ AWS OpsWorks» — это то, что нам нужно, поэтому давайте выберем ее:

Выберите политику полного доступа AWS OpsWorks

Выберите политику полного доступа AWS OpsWorks

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

Создать нового пользователя AWS IAM

Создать нового пользователя AWS IAM

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

Наконец, добавьте нового пользователя в нашу группу opsworks-users , которая предоставит учетной записи доступ к нашим развертываниям OpsWorks. Это можно сделать, сначала щелкнув пользователя, затем перейдя на вкладку Группы и нажав кнопку Добавить пользователя в группы .

Соберите информацию из своего аккаунта AWS

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

Сначала нам нужно записать идентификатор стека для стека OpsWorks, который мы будем развертывать. Нам нужно перейти в наш стек и нажать на кнопку « Настройки стека» :

Настройки стека

Настройки стека

На следующем экране идентификатор стека будет показан под меткой OpsWorks ID , давайте запишем его:

ID стека

ID стека

После этого нам потребуется идентификатор приложения для приложения, которое мы будем развертывать. Это можно найти на странице приложения OpsWorks:

Идентификатор приложения

Идентификатор приложения

Наконец, мы переходим к экземпляру OpsWorks, к которому мы будем развертывать, и записываем его идентификатор OpsWorks:

ID экземпляра

ID экземпляра

На данный момент мы должны иметь наши:

  • Ключ доступа AWS
  • Секретный ключ доступа
  • Идентификатор стека OpsWorks
  • Идентификатор приложения OpsWorks
  • Идентификатор экземпляра OpsWorks

Развертывание в Amazon OpsWorks из командной строки

Прежде чем мы перейдем к развертыванию из Codeship, давайте попробуем запустить удаленное развертывание OpsWorks локально из нашей командной строки.

Первое, что нам нужно сделать, это установить интерфейс командной строки AWS . Как упоминается на странице, нам просто нужно выполнить следующее:

1
pip install awscli

После установки интерфейса командной строки нам нужно инициализировать переменную среды AWS_ACCESS_KEY_ID с нашим ключом доступа AWS, а переменную AWS_SECRET_ACCESS_KEY — с нашим секретным ключом доступа. В Linux мы делаем следующее:

1
2
export AWS_ACCESS_KEY_ID=[Our AWS Access Key]
export AWS_SECRET_ACCESS_KEY=[Our Secret Access Key]

Это гарантирует, что после запуска команд CLI AWS инструмент сможет автоматически войти в нашу учетную запись AWS. Наконец, мы можем запустить наше развертывание следующим образом:

1
2
3
aws --region='us-east-1' opsworks create-deployment --stack-id='[Our Stack ID]'
--app-id='[Our Application ID]' --instance-ids='["[Our Instance ID]"]'
--command='{"Name": "deploy"}

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

Развертывание в Amazon OpsWorks с Codeship

Как только мы доберемся до этого, развертывание из Codeship будет действительно легким. Сначала нам нужно перейти в раздел « Окружающая среда » нашего проекта Codeship и указать там две переменные среды:

1
2
AWS_ACCESS_KEY_ID=[Our AWS Access Key]
AWS_SECRET_ACCESS_KEY=[Our Secret Access Key]
Сконфигурируйте свои переменные Codeship Environment

Сконфигурируйте свои переменные Codeship Environment

После этого мы переходим на вкладку « Развертывание », создаем новый метод развертывания сценария и добавляем в него следующие две строки:

1
2
3
4
pip install awscli
aws --region='us-east-1' opsworks create-deployment --stack-id='[Our Stack ID]'
--app-id='[Our Application ID]' --instance-ids='["[Our Instance ID]"]'
--command='{"Name": "deploy"}'
Добавить метод развертывания

Добавить метод развертывания

Codeship по умолчанию не имеет интерфейса командной строки AWS, поэтому первая строка установит его на наш сервер сборки (это займет всего несколько секунд). Вторая строка инициирует новое развертывание в нашем стеке OpsWorks.

Мы хотим поблагодарить Edgars за размещение этой статьи в нашем блоге. Как вы развертываете с Codeship и как вы используете наш метод развертывания сценариев?

Ссылка: Настройте непрерывное развертывание в Amazon OpsWorks от нашего партнера по JCG Флориана Мотлика в блоге Codeship Blog .