Terraform Continuous Delivery com GitHub 작업

GitHub 작업: O que é?



GitHub Actions 및 자동화된 자동화 도구 플럭소스의 개인화 개인 정보 저장소 GitHub의 간단한 형식. Existemvarias Actions já feitas, criadas por desenvolvedores em todo o mundo, que você pode usar. No entanto, se você não conseguir encontrar uma Actions para seu caso de uso, poderá criar a sua própria. E se você quiser, sinta-se à vontade para compartilhá-lo no GitHub Marketplace para melhorar a vida de outros desenvolvedores.

O que é um 워크플로?



Um workflow é um processo automatizado e configurável. Cada 워크플로 없음 GitHub Actions 및 escrito em um arquivo YAML (Yet Another Markup Language) sintaxe YAML을 사용합니다. Todos os fluxos de Trabalho podem ser acionados por eventos que acontecem dentro ou para o seu repositório. 예를 들면 다음을 포함합니다. 푸시 아웃 풀.

Actions e Workflow, mas qual a diferença?



as definições parecem muito semelhantes, então qual é a diferença?

A resposta é que você pode usar uma actions em um workflow!

Actions são comandos autonomos que são combinados em etapas para criar um workflow. 작업 são o menor bloco de construção portátil de um workflow. Você pode criar suas próprias ações ou usar actions criadas pela comunidade GitHub. Para usar uma ação em um fluxo de trabalho, você deve incluí-la como uma etapa.

Chega de teoria, vamos pra prática!



Se essa é sua Primeira vez com o GitHub Actions vale muito você começar pelo quickstart eu não conseguiria fazer algo melhor para começar então depois do quickstart volta para aqui =D

GitHub에서 사용할 수 있는 예제가 없습니다actions oficial da hashicorp.

최신 Terraform CLI 및 구성 Terraform CLI에 대한 최신 버전 설치
Terraform Cloud(app.terraform.io)에 대한 API 토큰. Em eventos de solicitação pull, este fluxo de trabalho será executadoterraform init , terraform fmt , 전자 terraform plan . Em eventos push para o branch main, terraform apply será executado.

문서 문서hashicorp/setup-terraform está localizado aqui::https://github.com/hashicorp/setup-terraform

사용자 정의 워크플로에 따라 구성 설정에 대한 자세한 내용을 확인할 수 있습니다.

1- Crie um arquivo main.tf na raiz deste repositório com o backend remote e um ou mais recursos definidos.

terraform { 
  backend "remote" { 
    organization = "example-organization"
    workspaces { 
      name = "example-workspace" 
    }
  }
}

resource "null_resource" "example" {
  triggers = {
    value = "A example resource that does nothing!"
  }
}


2- 사용 가능한 API 토큰Terraform Cloud 및 armazene-o como um segredo GitHub(예제, TF_API_TOKEN) 중첩 저장소.

문서:


  • https://www.terraform.io/docs/cloud/users-teams-organizations/api-tokens.html
  • https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets

  • 3- Faça Referência ao segredo do GitHub na etapa anterior usando a action do GitHub hashicorp/setup-terraform .

         - name: Setup Terraform
           uses: hashicorp/setup-terraform@v1
           with:
             cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }}
    


    Terraform Continuous Delivery com GitHub 작업



    워크플로 완료에 대한 결론입니다.
    Ele deve ser usado junto com as configurações de setup e incluindo ele no diretorio.github/worflow/terraform.yml

    name: 'Terraform'
    
    on:
      push:
        branches:
        - main
      pull_request:
    
    jobs:
      terraform:
        name: 'Terraform'
        runs-on: ubuntu-latest
        environment: production
    
        # Use o shell Bash independentemente do executor GitHub Actions ser ubuntu-latest, macos-latest ou windows-latest
        defaults:
          run:
            shell: bash
    
        steps:
        # Faça check-out do repositório para o executar o GitHub Actions
        - name: Checkout
          uses: actions/checkout@v2
    
        # Instale a versão mais recente do Terraform CLI e configure o arquivo de configuração Terraform CLI com um token de API de usuário do Terraform Cloud
        - name: Setup Terraform
          uses: hashicorp/setup-terraform@v1
          with:
            cli_config_credentials_token: ${{ secrets.TF_API_TOKEN }}
    
        # Inicialize um diretório de trabalho novo ou existente do Terraform criando arquivos iniciais, carregando qualquer estado remoto, baixando módulos, etc.
        - name: Terraform Init
          run: terraform init
    
        # Verifica se todos os arquivos de configuração do Terraform seguem um formato canônico
        - name: Terraform Format
          run: terraform fmt -check
    
        # Gera um plano de execução para Terraform
        - name: Terraform Plan
          run: terraform plan
    
          # No push do main, construa ou altere a infraestrutura de acordo com os arquivos de configuração do Terraform
          # Nota: É recomendado configurar uma verificação de status "estrita" necessária em seu repositório para "Terraform Cloud". Consulte a documentação sobre verificações de status "estritas" exigidas para obter mais informações: https://help.github.com/en/github/administering-a-repository/types-of-required-status-checks
        - name: Terraform Apply
          if: github.ref == 'refs/heads/main' && github.event_name == 'push'
          run: terraform apply -auto-approve
    


    포르 호제 에 이소.
    Dev.to e contribua com conteúdos como esses에 참여하십시오.

    ㅋㅋㅋㅋ

    좋은 웹페이지 즐겨찾기