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