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á.
Provisione um produto Terraform no AWS Service Catalog usando um repositório de código
Criado pelo Dr. Rahul Sharad Gaikwad (AWS) e Tamilselvan P (AWS)
Ambiente: PoC ou piloto | Tecnologias: Infraestrutura; DevOps | Workload: todas as outras workloads |
Serviços da AWS: AWS Service Catalog; Amazon EC2 |
Resumo
O AWS Service Catalog oferece suporte ao provisionamento de autoatendimento com governança para suas HashiCorp configurações do Terraform.
Esse padrão ajuda você a implantar recursos da AWS usando o código do Terraform. O código do Terraform no GitHub repositório é acessado por meio do Service Catalog. Usando essa abordagem, você integra os produtos aos seus fluxos de trabalho existentes do Terraform. Os administradores podem criar portfólios do Service Catalog e adicionar produtos do AWS Launch Wizard a eles usando o Terraform.
A seguir estão os benefícios dessa solução:
Devido ao recurso de reversão no Service Catalog, se ocorrer algum problema durante a implantação, você poderá reverter o produto para uma versão anterior.
Você pode identificar facilmente as diferenças entre as versões do produto. Isso ajuda você a resolver problemas durante a implantação.
Você pode configurar uma conexão de repositório no Service Catalog, como para GitHub GitLab, ou AWS. CodeCommit Você pode fazer alterações no produto diretamente por meio do repositório.
Para obter informações sobre os benefícios gerais do AWS Service Catalog, consulte O que é Service Catalog.
Pré-requisitos e limitações
Pré-requisitos
Uma conta AWS ativa
Um GitHub, BitBucket, ou outro repositório que contenha arquivos de configuração do Terraform no formato ZIP.
Interface de linha de comando do AWS Serverless Application Model (AWS SAM CLI), instalada.
AWS Command Line Interface (AWS CLI), instalada e configurada.
Vá, instalado
. Python versão 3.9, instalado.
A CLI do AWS SAM exige essa versão do Python. Permissões para escrever e executar funções do AWS Lambda e permissões para acessar e gerenciar produtos e portfólios do Service Catalog.
Arquitetura
Pilha de tecnologias de destino
AWS Service Catalog
AWS Lambda
Arquitetura de destino
![Diagrama de arquitetura do provisionamento de um produto Terraform no Service Catalog a partir de um repositório de código](images/pattern-img/7d0d76e8-9485-4b3f-915f-481b6a7cdcd9/images/e83fa44a-4ca6-4438-a0d1-99f09a3541bb.png)
O diagrama mostra o seguinte fluxo de trabalho:
Quando uma configuração do Terraform está pronta, um desenvolvedor cria um arquivo.zip que contém todo o código do Terraform. O desenvolvedor carrega o arquivo.zip no repositório de código conectado ao Service Catalog.
Um administrador associa o produto Terraform a um portfólio no Service Catalog. O administrador também cria uma restrição de lançamento que permite que os usuários finais provisionem o produto.
No Service Catalog, os usuários finais iniciam recursos da AWS usando a configuração do Terraform. Eles podem escolher a versão do produto a ser implantada.
Ferramentas
Ferramentas e serviços da AWS
O AWS Lambda é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
O AWS Service Catalog ajuda você a gerenciar de modo centralizado os catálogos de serviços de TI aprovados para a AWS. Os usuários finais podem implantar rapidamente somente os serviços de TI aprovados de que precisam, seguindo as restrições definidas pela organização.
Outros serviços
Repositório de código
Se você precisar de exemplos de configurações do Terraform que você possa implantar por meio do Service Catalog, você pode usar as configurações no repositório GitHub Amazon Macie Organization
Práticas recomendadas
Em vez de fornecer os valores das variáveis no arquivo de configuração do Terraform (
terraform.tfvars
), configure os valores das variáveis ao iniciar o produto por meio do Service Catalog.Conceda acesso ao portfólio somente para usuários ou administradores específicos.
Siga o princípio do privilégio mínimo e conceda as permissões mínimas necessárias para realizar uma tarefa. Para obter mais informações, consulte Concessão de privilégio mínimo e Práticas recomendadas de segurança na documentação do IAM.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
(Opcional) Instale o Docker. | Se você quiser executar as funções do AWS Lambda em seu ambiente de desenvolvimento, instale o Docker. Para obter mais informações, consulte Install Docker Engine | DevOps engenheiro |
Instale o AWS Service Catalog Engine para Terraform. |
| DevOps engenheiro, administrador da AWS |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie uma conexão com o GitHub repositório. |
| Administrador da AWS |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie o produto Service Catalog. |
| Administrador da AWS |
Crie um portfólio. |
| Administrador da AWS |
Adicione o produto Terraform ao portfólio. |
| Administrador da AWS |
Crie a política de acesso. |
| Administrador da AWS |
Crie uma política de confiança personalizada. |
| Administrador da AWS |
Adicione uma restrição de lançamento ao produto Service Catalog. |
| Administrador da AWS |
Conceda acesso ao produto. |
| Administrador da AWS |
Lance o produto. |
| DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Valide a implantação. | Há duas máquinas de estado do AWS Step Functions para o fluxo de trabalho de provisionamento do Service Catalog:
Você verifica os registros da máquina de
| DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Exclua produtos provisionados. |
| DevOps engenheiro |
Remova o AWS Service Catalog Engine para Terraform. |
| Administrador da AWS |
Recursos relacionados
Documentação da AWS
Documentação do Terraform
Mais informações
Política de acesso
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "*", "Condition": { "StringEquals": { "s3:ExistingObjectTag/servicecatalog:provisioning": "true" } } }, { "Action": [ "s3:CreateBucket*", "s3:DeleteBucket*", "s3:Get*", "s3:List*", "s3:PutBucketTagging" ], "Resource": "arn:aws:s3:::*", "Effect": "Allow" }, { "Action": [ "resource-groups:CreateGroup", "resource-groups:ListGroupResources", "resource-groups:DeleteGroup", "resource-groups:Tag" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "tag:GetResources", "tag:GetTagKeys", "tag:GetTagValues", "tag:TagResources", "tag:UntagResources" ], "Resource": "*", "Effect": "Allow" } ] }
Política de confiança
{ "Version": "2012-10-17", "Statement": [ { "Sid": "GivePermissionsToServiceCatalog", "Effect": "Allow", "Principal": { "Service": "servicecatalog.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account_id:root" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:PrincipalArn": [ "arn:aws:iam::accounti_id:role/TerraformEngine/TerraformExecutionRole*", "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogExternalParameterParserRole*", "arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogTerraformOSParameterParserRole*" ] } } } ] }