Рубрики
Uncategorized

Использование действий GitHub для развертывания стеков CloudFormation

Фоновые действия GitHub, как правило, доступны в конце 2019 года. Спасибо открытому … Tagged with AWS, DevOps.

Действия 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»