Действия GitHub, как правило, доступны в конце 2019 года. Благодаря открытому рынку действий GitHub, его используют все больше и больше проектов.
Независимо от того, находитесь ли вы в команде разработчиков или OPS, вы должны быть знакомы с инфраструктурой в качестве кода. Однако, если у вас нет хорошего трубопровода, процесс развертывания может быть головной болью.
В этой статье вы узнаете, как использовать действия GitHub для развертывания стеков CloudFormation.
- Учетная запись GitHub (нажмите здесь , чтобы увидеть бесплатную информацию о уровне)
- Программный доступ IAM пользователь в AWS
- Облачная формация и разрешения S3
Создайте шаблоны CFN
Давайте создадим простой шаблон облачной информации для создания ведра S3.
Имя файла S3.yml .
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
Тогда мы хотели бы назвать наше собственное ведро S3, и для того, чтобы наш шаблон был повторно используемым, мы хотим передать параметры в стеки облачныхформ.
Parameters:
BucketName:
Description: Name your Bucket
Type: String
Resources:
S3Bucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: Private
BucketName: !Ref BucketName
BucketEncryption:
ServerSideEncryptionConfiguration:
- ServerSideEncryptionByDefault:
SSEAlgorithm: AES256
Наконец, мы можем добавить описания и версию формата и проверить шаблон в нашем репозитории. Нажмите Здесь Чтобы просмотреть полный шаблон.
Создайте рабочие процессы GitHub
Создать .github/workflows/main.yml Под нашим каталогом GIT ROOT. Давайте напишем наш первый рабочий процесс.
Настройте учетные данные AWS
Мы используем это действие для настройки учетных данных AWS.
«Настройка учетных данных AWS» для действий GitHub — Github Marketplace
Мы можем написать шаг в соответствии с ReadMe.
- name: Configure AWS Credentials
id: creds
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: "ap-southeast-2"
В консоли AWS IAM получите свой идентификатор ключа доступа и ключ секретного доступа.
Учетная запись AWS и ключи доступа
Затем перейдите на главную страницу репозитория GitHub> Нажмите Настройка > На левой боковой панели нажмите Секреты > Нажмите Новый репозиторий секрет > Создать AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY .
Создать действия развертывания
Мы используем это действие для развертывания стеков CFN.
AWS CloudFormation «Развертывание стека CloudFormation Stack» для действий GitHub — Github Marketplace
Мы можем написать шаг в соответствии с ReadMe.
- Когда я пишу эту статью, последняя версия
v1.0.3Анкет
- name: Deploy to AWS CloudFormation
uses: aws-actions/aws-cloudformation-github-deploy@v1.0.3
with:
name: S3Bucket
template: s3.yml
Нам также нужно передать входной параметр BucketName Анкет
# Controls when the action will run.
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
BucketName:
description: "Name your Bucket"
required: true
default: "demo-bucket"
Тогда мы добавляем Параметр-переверды в Развертывание в AWS CloudFormation шаг.
- name: Deploy S3 Buckets CloudFormation Stacks
uses: aws-actions/aws-cloudformation-github-deploy@v1.0.3
with:
name: s3-buckets
template: s3.yml
parameter-overrides: >-
BucketName=${{ github.event.inputs.bucketName }}
Давайте наконец -то организуем наш файл действия main.yml Анкет
name: Deploy CloudFormation Stacks
# Controls when the action will run.
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
region:
description: "AWS Region"
required: true
default: "ap-southeast-2"
bucketName:
description: "S3 Bucket Name"
required: true
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
cfn-deployment:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Configure AWS credentials
id: creds
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ github.event.inputs.region }}
- name: Deploy S3 Buckets CloudFormation Stacks
id: s3-buckets
uses: aws-actions/aws-cloudformation-github-deploy@v1.0.3
with:
name: s3-buckets
template: s3.yml
parameter-overrides: >-
BucketName=${{ github.event.inputs.bucketName }}
Используйте рабочие процессы GitHub
Убедитесь, что вы выдвинули все файлы. Так же, как следующий репо.
Yunpengeric/Cloudformation-GitHub-Actions-Demo
Затем перейдите на главную страницу репозитория GitHub> Нажмите Действия > На левой боковой панели нажмите Развернуть стеки CloudFormation > Нажмите Запустить рабочий процесс .
Вы должны увидеть следующие предварительно заполненные данные> Введите имя своего ковша S3 (обратите внимание, что имя ведра S3 глобально уникальное)> Запустить рабочий процесс
Примерно через минуту вы увидите, что наше ведро S3 было успешно развернуто. Если вы видите какие -либо ошибки, пожалуйста, используйте журналы GitHub и консоль облачной информации для устранения неполадок.
Мы все еще далеки от этого, если наша цель — создать хороший конвейер в производственной среде. Вы также должны принять эти вещи.
- Как вы можете повернуть ключи, чтобы обеспечить безопасность.
- Как изменить свои шаблоны CFN, чтобы при развертывании второго ведра вы не удаляете первое.
Оригинал: «https://dev.to/ericyi/using-github-actions-to-deploy-cloudformation-stacks-3c4g»