

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á.

# Usando o Terraform como uma ferramenta IaC para o Nuvem AWS
<a name="terraform"></a>

[HashiCorp O Terraform](https://developer.hashicorp.com/terraform) é uma ferramenta de infraestrutura como código (IaC) que ajuda você a gerenciar sua infraestrutura em nuvem. Usando o Terraform, você pode definir recursos locais e na nuvem em arquivos de configuração que podem ser versionados, reutilizados e compartilhados. Em seguida, você pode usar um fluxo de trabalho consistente para provisionar e gerenciar toda a sua infraestrutura durante todo o ciclo de vida.

Os desenvolvedores usam uma linguagem de configuração de alto nível chamada linguagem [Terraform](https://developer.hashicorp.com/terraform/language). A sintaxe nativa de baixo nível da linguagem Terraform é a Linguagem de [HashiCorpConfiguração (HCL](https://developer.hashicorp.com/terraform/language/syntax/configuration)). A linguagem Terraform foi projetada para ser fácil para os humanos lerem e escreverem. Você usa a linguagem Terraform para descrever o estado final desejado da nuvem ou da infraestrutura local. O Terraform então gera um plano para atingir esse estado final e você executa o plano para provisionar a infraestrutura.

**Vantagens de usar o Terraform:**
+ O Terraform é independente de plataforma. Você pode usá-lo com qualquer provedor de serviços em nuvem. Você pode configurar, testar e implantar infraestrutura em AWS vários outros provedores de nuvem. Se sua organização usa vários provedores de nuvem, o Terraform pode ser uma solução única, unificada e consistente para gerenciar a infraestrutura em nuvem. Para obter mais informações sobre o suporte a várias nuvens, consulte [Provisionamento em várias nuvens](https://www.terraform.io/use-cases/multi-cloud-deployment) no site do Terraform.
+ O Terraform não tem agente. Não é necessário instalar nenhum software na infraestrutura gerenciada.
+ Os módulos do Terraform são uma maneira poderosa de reutilizar código e seguir o princípio *Don't Repeat Yourself (DRY)*. Por exemplo, você pode ter uma configuração específica para um aplicativo que contém uma instância do Amazon Elastic Compute Cloud (Amazon EC2), volumes do Amazon Elastic Block Store (Amazon EBS) e outros recursos agrupados logicamente. Se precisar criar várias cópias dessa configuração ou aplicativo, você pode empacotar os recursos em um módulo do Terraform e criar várias instâncias do módulo em vez de copiar o código inteiro várias vezes. Esses módulos podem ajudá-lo a organizar, encapsular e reutilizar configurações. Eles também fornecem consistência e garantem as melhores práticas.
+ O Terraform é capaz de [detectar e gerenciar desvios](https://www.hashicorp.com/blog/detecting-and-managing-drift-with-terraform) (postagem no blog do Terraform) em sua infraestrutura. Por exemplo, se os recursos gerenciados pelo Terraform forem modificados fora do Terraform, você poderá detectar o desvio e restaurá-los ao estado desejado usando a CLI do Terraform.

**Desvantagens de usar o Terraform:**
+ Support para novos recursos ou novos recursos relacionados a qualquer provedor de nuvem pode não estar disponível.
+ O Terraform não gerencia automaticamente seu estado da mesma forma AWS CloudFormation. Ele é armazenado por padrão em um arquivo local, mas você também pode armazená-lo remotamente em um bucket do [Amazon S3](https://developer.hashicorp.com/terraform/language/settings/backends/s3) ou [por meio](https://developer.hashicorp.com/terraform/enterprise) do Terraform Enterprise.
+ O estado do Terraform pode conter dados confidenciais, como senhas de bancos de dados, o que pode causar problemas de segurança. É uma prática recomendada criptografar seu arquivo de estado, armazená-lo remotamente, ativar o controle de versão de arquivos nele e usar o mínimo de privilégios para operações de leitura e gravação nele. Para obter mais informações, consulte [Protegendo dados confidenciais usando o AWS Secrets Manager HashiCorp Terraform](https://docs.aws.amazon.com/prescriptive-guidance/latest/secure-sensitive-data-secrets-manager-terraform/introduction.html).
+ Em agosto de 2023, a Hashicorp anunciou que não seria mais licenciada como código aberto sob a Licença Pública [Mozilla](https://www.mozilla.org/en-US/MPL/). Em vez disso, agora está licenciado sob a [Business Source License](https://github.com/hashicorp/terraform/blob/b145fbcaadf0fa7d0e7040eac641d9aef2a26433/LICENSE).