Tutorial: Criar um pipeline com as ações de implantação do AWS CloudFormation StackSets - AWS CodePipeline

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tutorial: Criar um pipeline com as ações de implantação do AWS CloudFormation StackSets

Neste tutorial, você vai usar o console do AWS CodePipeline para criar um pipeline com ações de implantação para a criação de um conjunto de pilhas e de instâncias de pilha. Quando o pipeline é executado, o modelo cria um conjunto de pilhas e também cria e atualiza as instâncias em que o conjunto de pilhas é implantado.

Importante

Como parte da criação de um pipeline, um bucket de artefatos do S3 fornecido pelo cliente será usado pelo CodePipeline para artefatos. (Este bucket não é o mesmo utilizado para uma ação de origem do S3.) Se o bucket de artefatos do S3 estiver em uma conta diferente da conta do pipeline, garanta que o bucket de artefatos do S3 seja de propriedade de Contas da AWS seguras e confiáveis.

Há duas maneiras de gerenciar permissões para um conjunto de pilhas: perfis do IAM gerenciados da AWS e autogerenciados. Este tutorial fornece exemplos de permissões autogerenciadas.

Para usar os Stacksets com mais eficiência no CodePipeline, é necessário ter uma compreensão clara dos conceitos por trás dos CloudFormation StackSets e de como eles funcionam. Consulte Conceitos do StackSets no Guia do usuário do AWS CloudFormation.

Pré-requisitos

Para operações de conjunto de pilhas, você vai usar duas contas diferentes: uma conta de administração e uma conta de destino. Você vai criar conjuntos de pilhas na conta de administrador. Na conta de destino, vai criar pilhas individuais pertencentes a um conjunto de pilhas.

Como criar um perfil de administrador com a conta de administrador
Como criar um perfil de serviço na conta de destino

Etapa 1: Fazer upload do modelo do AWS CloudFormation de exemplo e o arquivo de parâmetros

Crie um bucket de origem para os arquivos de parâmetros e modelos de conjunto de pilhas. Baixe o arquivo de modelo do AWS CloudFormation, configure um arquivo de parâmetros e, depois, compacte os arquivos antes de fazer upload para o bucket de origem do S3.

nota

Compacte os arquivos de origem antes de fazer upload para o bucket de origem do S3, mesmo que o único arquivo de origem seja o modelo.

Como criar um bucket de origem do S3
  1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em https://console.aws.amazon.com/s3/.

  2. Escolha Criar bucket.

  3. Em Nome do bucket, insira um nome para o bucket.

    Em Região, selecione a região onde você deseja criar o pipeline. Escolha Criar bucket.

  4. Depois que o bucket é criado, um banner de sucesso é exibido. Escolha Go to bucket details (Ir para detalhes do bucket).

  5. Na guia Properties (Propriedades) escolha Versioning (Versionamento). Escolha Enable versioning (Ativar versionamento) e escolha Save (Salvar).

Como criar o arquivo de modelo do AWS CloudFormation
  1. Baixe o seguinte arquivo de modelo de exemplo para gerar a configuração do CloudTrail para conjuntos de pilhas: https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml.

  2. Salve o arquivo como template.yml.

Como criar o arquivo parameters.txt
  1. Crie um arquivo com os parâmetros para a implantação. Os parâmetros são valores que você deseja atualizar na pilha em runtime. O arquivo de exemplo a seguir atualiza os parâmetros do modelo do conjunto de pilhas para permitir a validação do registro em log e eventos globais.

    [ { "ParameterKey": "EnableLogFileValidation", "ParameterValue": "true" }, { "ParameterKey": "IncludeGlobalEvents", "ParameterValue": "true" } ]
  2. Salve o arquivo como parameters.txt.

Como criar o arquivo accounts.txt
  1. Crie um arquivo com as contas nas quais você deseja criar instâncias, conforme mostrado no arquivo de exemplo a seguir.

    [ "111111222222","333333444444" ]
  2. Salve o arquivo como accounts.txt.

Como criar e fazer upload de arquivos de origem
  1. Combine os arquivos em um único arquivo ZIP. Os arquivos devem ter a aparência a seguir no arquivo ZIP.

    template.yml parameters.txt accounts.txt
  2. Faça upload do arquivo ZIP no bucket do S3. Esse arquivo é o artefato de origem gerado pelo assistente Criar pipeline para a ação de implantação no CodePipeline.

Etapa 2: Criar o pipeline

Nesta seção, você criará um pipeline com as seguintes ações:

  • Estágio de origem com uma ação de origem do S3 em que o artefato de origem é o arquivo de modelo e todos os arquivos de origem de apoio.

  • Um estágio de implantação com uma ação de implantação do conjunto de pilhas do CloudFormation que cria o conjunto de pilhas.

  • Um estágio de implantação com uma ação de implantação de instâncias da pilha do CloudFormation que cria as pilhas e as instâncias nas contas de destino.

Como criar um pipeline com uma ação CloudFormationStackSet
  1. Faça login no Console de gerenciamento da AWS e abra o console do CodePipeline em http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Na página Welcome (Bem-vindo), Getting started (Conceitos básicos) ou Pipelines, selecione Create pipeline (Criar pipeline).

  3. Na página Etapa 1: Escolher opção de criação, em Opções de criação, selecione a opção Criar pipeline personalizado. Escolha Próximo.

  4. Em Etapa 2: Escolher as configurações do pipeline, em Nome do pipeline, insira MyStackSetsPipeline.

  5. Em Tipo de pipeline, selecione V1 para os fins deste tutorial. Também é possível selecionar V2; no entanto, observe que os tipos de pipeline diferem em características e preços. Para obter mais informações, consulte Tipos de pipeline.

  6. Em Perfil de serviço, selecione Novo perfil de serviço para permitir que o CodePipeline crie um perfil de serviço no IAM.

  7. No Armazenamento de artefatos, deixe os padrões.

    nota

    Este não é o bucket de origem para seu código-fonte. Este é o armazenamento de artefatos para o pipeline. Um armazenamento de artefatos separado, como um bucket do S3, é necessário para cada pipeline. Ao criar ou editar um pipeline, é necessário ter um bucket de artefatos na região do pipeline e um bucket de artefatos por região da AWS na qual você está executando uma ação.

    Para obter mais informações, consulte Artefatos de entrada e saída e CodePipeline referência de estrutura de tubulação.

    Escolha Próximo.

  8. Na página Etapa 3: Adicionar etapa de origem, em Provedor de origem, escolha Amazon S3.

  9. Em Bucket, insira o bucket de origem do S3 que você criou para este tutorial, como BucketName. Em Chave de objeto do S3, insira o caminho e o nome do arquivo ZIP, como MyFiles.zip.

  10. Escolha Próximo.

  11. Em Etapa 4: Adicionar etapa de compilação, escolha Ignorar etapa de compilação e aceite a mensagem de aviso escolhendo Ignorar novamente.

    Escolha Próximo.

  12. Em Etapa 5: Adicionar etapa de teste, escolha Ignorar etapa de teste e aceite a mensagem de aviso escolhendo Ignorar novamente.

    Escolha Próximo.

  13. Em Etapa 6: Adicionar etapa de implantação:

    1. No Provedor de implantação, selecione Conjunto de pilhas do AWS CloudFormation.

    2. Em Nome do conjunto de pilhas, insira um nome para o conjunto de pilhas. Esse é o nome do conjunto de pilhas que será criado pelo modelo.

      nota

      Anote o nome do conjunto de pilhas. Você o usará ao adicionar a segunda ação de implantação do StackSets ao pipeline.

    3. Em Caminho do modelo, insira o nome do artefato e o caminho do arquivo onde você fez upload do arquivo de modelo. Por exemplo, insira o comando a seguir usando o nome SourceArtifact do artefato de origem padrão.

      SourceArtifact::template.yml
    4. Em Destinos de implantação, insira o nome do artefato e o caminho do arquivo onde você fez upload do arquivo da conta. Por exemplo, insira o comando a seguir usando o nome SourceArtifact do artefato de origem padrão.

      SourceArtifact::accounts.txt
    5. Em Destino de implantação Regiões da AWS, insira uma região para implantação da instância de pilha inicial, como us-east-1.

    6. Expanda Opções de implantação. Em Parâmetros, insira o nome do artefato e o caminho do arquivo onde você fez upload do arquivo de parâmetros. Por exemplo, insira o comando a seguir usando o nome SourceArtifact do artefato de origem padrão.

      SourceArtifact::parameters.txt

      Para inserir os parâmetros como uma entrada literal em vez de um caminho de arquivo, digite o seguinte:

      ParameterKey=EnableLogFileValidation,ParameterValue=true ParameterKey=IncludeGlobalEvents,ParameterValue=true
    7. Em Recursos, escolha CAPABILITY_IAM e CAPABILITY_NAMED_IAM.

    8. Em Modelo de permissão, selecione SELF_MANAGED.

    9. Em Porcentagem de tolerância a falhas, insira 20.

    10. Em Porcentagem máxima simultânea, insira 25.

    11. Escolha Próximo.

    12. Em Etapa 7: Revisar, escolha Criar pipeline. O pipeline é exibido.

    13. Deixe que o pipeline seja executado.

Etapa 3: Visualizar a implantação inicial

Visualize os recursos e o status da implantação inicial. Depois de verificar se a implantação criou com êxito o conjunto de pilhas, é possível adicionar a segunda ação ao estágio de implantação.

Como visualizar os recursos
  1. Abra o console do CodePipeline em https://console.aws.amazon.com/codesuite/codepipeline/.

  2. Em Pipelines, selecione o pipeline e clique em View (Visualizar). O diagrama mostra os estágios de implantação e a origem do pipeline.

  3. Selecione a ação CloudFormation na ação CloudFormationStackSet no pipeline. O modelo, os recursos e os eventos do conjunto de pilhas são mostrados no console do CloudFormation.

  4. Na barra de navegação esquerda, selecione StackSets. Na lista, selecione o novo conjunto de pilhas.

  5. Escolha a guia Instâncias de pilha. Verifique se foi criada uma instância da pilha para cada conta fornecida na região us-east-1. Verifique se o status de cada instância da pilha é CURRENT.

Etapa 4: Adicionar uma ação CloudFormationStackInstances

Crie uma próxima ação no pipeline que permitirá que o CloudFormation StackSets crie as instâncias restantes da pilha.

Como criar uma próxima ação no pipeline
  1. Abra o console do CodePipeline em https://console.aws.amazon.com/codesuite/codepipeline/.

    Em Pipelines, selecione o pipeline e clique em View (Visualizar). O diagrama mostra os estágios de implantação e a origem do pipeline.

  2. Escolha editar o pipeline. O pipeline é exibido no modo de edição.

  3. No estágio de implantação, selecione Editar.

  4. Na ação de implantação do Conjunto de pilhas do AWS CloudFormation, selecione Adicionar grupo de ações.

  5. Na página Editar ação, adicione os detalhes da ação:

    1. Em Nome da ação, insira um nome para a ação.

    2. Em Provedor de ação, selecione Instâncias de pilhas do AWS CloudFormation.

    3. Em Artefatos de entrada, selecione SourceArtifact.

    4. Em Nome do conjunto de pilhas, insira o nome do conjunto de pilhas. Esse é o nome do conjunto de pilhas que você forneceu na primeira ação.

    5. Em Destinos de implantação, insira o nome do artefato e o caminho do arquivo onde você fez upload do arquivo da conta. Por exemplo, insira o comando a seguir usando o nome SourceArtifact do artefato de origem padrão.

      SourceArtifact::accounts.txt
    6. Em Destino de implantação Regiões da AWS, insira as regiões para implantação das instâncias de pilha restantes, como us-east-2 e eu-central-1, da seguinte forma:

      us-east2, eu-central-1
    7. Em Porcentagem de tolerância a falhas, insira 20.

    8. Em Porcentagem máxima simultânea, insira 25.

    9. Escolha Salvar.

    10. Lance manualmente uma alteração. O pipeline atualizado é exibido com duas ações no estágio de implantação.

Etapa 5: Visualizar os recursos do conjunto de pilhas para a implantação

É possível visualizar os recursos e o status da implantação do conjunto de pilhas.

Como visualizar os recursos
  1. Abra o console do CodePipeline em https://console.aws.amazon.com/codesuite/codepipeline/.

  2. Em Pipelines, selecione o pipeline e, depois, Visualizar. O diagrama mostra os estágios de implantação e a origem do pipeline.

  3. Selecione a ação do CloudFormation na ação AWS CloudFormation Stack Instances no pipeline. O modelo, os recursos e os eventos do conjunto de pilhas são mostrados no console do CloudFormation.

  4. Na barra de navegação esquerda, selecione StackSets. Na lista, selecione o conjunto de pilhas.

  5. Escolha a guia Instâncias de pilha. Verifique se todas as instâncias de pilha restantes de cada conta que você forneceu foram criadas ou atualizadas nas regiões esperadas. Verifique se o status de cada instância da pilha é CURRENT.

Etapa 6: Fazer uma atualização no conjunto de pilhas

Faça uma atualização no conjunto de pilhas e implante a atualização nas instâncias. Neste exemplo, você também vai fazer uma alteração nos destinos de implantação que deseja designar para atualização. As instâncias que não fazem parte da atualização passam para um status desatualizado.

  1. Abra o console do CodePipeline em https://console.aws.amazon.com/codesuite/codepipeline/.

  2. Em Pipelines, selecione o pipeline e, em seguida, escolha Visualizar. No estágio de implantação, selecione Editar.

  3. Opte por editar a ação Conjunto de pilhas do AWS CloudFormation no pipeline. Em Descrição, substitua a descrição existente do conjunto de pilhas.

  4. Opte por editar a ação Instâncias de pilha do AWS CloudFormation no pipeline. Em Destino de implantação Regiões da AWS, exclua o valor us-east-2 inserido quando a ação foi criada.

  5. Salve as alterações. Selecione Lançar alteração para executar o pipeline.

  6. Abra a ação no CloudFormation. Selecione a guia Informações do StackSet. Em Descrição do StackSet, verifique se a nova descrição é exibida.

  7. Escolha a guia Instâncias de pilha. Em Status, verifique se o status das instâncias de pilhas em us-east-2 é OUTDATED.