Это переизданное гостевое сообщение в блоге Эдгарса Лаздинса. Он директор Novo IT — Латвийского агентства веб-разработок. Вы можете найти его оригинальную статью здесь .
Развертывание кода в Amazon OpsWorks с использованием Codeship
Здесь, в Novo IT, мы любим использовать Amazon OpsWorks для развертывания наших внутренних проектов. С OpsWorks мы можем легко разделить наши среды разработки в стеках и контролировать, как каждый проект создается с помощью рецептов Chef . OpsWorks связывается напрямую с выбранным вами хранилищем кода. Когда вы начинаете новую сборку, она извлекает последние изменения и собирает их для вас.
Одной из задач, которая не сразу очевидна, как решить, является запуск сборки OpsWorks удаленно из командной строки или с сервера сборки. В этой статье объясняется, как мы делаем именно это, используя отличную службу непрерывной интеграции и развертывания Codeship .
Настройка нового пользователя IAM в AWS
Мы будем использовать функцию AWS Identity and Access Management (IAM), чтобы создать нового пользователя для наших развертываний. Это предпочтительнее использования, скажем, вашей корневой учетной записи, поскольку новая учетная запись будет иметь только достаточные разрешения для развертывания OpsWorks.
Сначала мы идем в IAM, нажимаем на группы, а затем создаем новую группу . Это поднимает следующий экран:
Эта группа предоставит всем своим членам доступ к OpsWorks. Имя, похожее на «opsworks-users», имеет смысл. После того, как вы выбрали имя, нажмите « Продолжить», и у нас появится экран выбора политики. На данный момент мы можем выбрать из списка доступных политик или создать полностью настраиваемую политику. В нашем случае существующая политика «Полный доступ AWS OpsWorks» — это то, что нам нужно, поэтому давайте выберем ее:
Теперь, когда у нас есть группа IAM, давайте создадим пользователя, которого мы будем использовать для развертывания. На главном экране IAM нажмите « Пользователи» и « Создать новых пользователей» , откроется следующий экран:
Выберите разумное имя и создайте нового пользователя. Очень важно загрузить учетные данные для вашего нового пользователя. Они понадобятся нам для развертывания, а именно: идентификатор ключа доступа и секретный ключ доступа .
Наконец, добавьте нового пользователя в нашу группу opsworks-users , которая предоставит учетной записи доступ к нашим развертываниям OpsWorks. Это можно сделать, сначала щелкнув пользователя, затем перейдя на вкладку Группы и нажав кнопку Добавить пользователя в группы .
Соберите информацию из своего аккаунта AWS
Есть некоторые дополнительные детали, которые нам понадобятся, прежде чем мы сможем приступить к развертыванию.
Сначала нам нужно записать идентификатор стека для стека OpsWorks, который мы будем развертывать. Нам нужно перейти в наш стек и нажать на кнопку « Настройки стека» :
На следующем экране идентификатор стека будет показан под меткой OpsWorks ID , давайте запишем его:
После этого нам потребуется идентификатор приложения для приложения, которое мы будем развертывать. Это можно найти на странице приложения OpsWorks:
Наконец, мы переходим к экземпляру OpsWorks, к которому мы будем развертывать, и записываем его идентификатор OpsWorks:
На данный момент мы должны иметь наши:
- Ключ доступа 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] |
После этого мы переходим на вкладку « Развертывание », создаем новый метод развертывания сценария и добавляем в него следующие две строки:
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 и как вы используете наш метод развертывания сценариев?