Já pensou em como automatizar ou até mesmo melhorar o tempo que você provisiona os recursos em qualquer Cloud? Bom, o Terraform é o cara ideal para esse trabalho. Com o Terraform, você é capaz de provisionar qualquer recurso e até mesmo mesclar os recursos entre si. Neste artigo veremos um pouco de como o Terraform funciona. Para começar, precisamos instalar ele em nossa máquina.
Link para instalação do terraform: https://developer.hashicorp.com/terraform/downloads Realizada a instalação do Terraform agora iremos organizar nossos arquivos. Em uma pasta de sua escolha crie os seguintes arquivos:
Main.tf: nesse arquivo ficará todo o nosso código que irá provisionar os recursos que queremos.
Terraform.tfvars: aqui será onde informamos os valores das nossas variáveis.
Variables.tf: arquivo onde definimos quais as variáveis que queremos.
Criados os arquivos necessários, agora iremos para o arquivo principal: main.tf. Para iniciarmos o provisionamento dos recursos, precisamos primeiro especificar qual o provider que iremos utilizar. Para esse caso vamos utilizar o da Azure.
O provider nada mais é que o provedor de serviços cloud que iremos utilizar.
Podemos observar que temos 3 parâmetros dentro do nosso provider e 2 deles utilizam variáveis que iremos declarar dentro do nosso variables.tf mais tarde. A seguir o significado de cada parâmetro:
Features: permite especificar funcionalidades da plataforma Azure que podem não estar disponíveis por padrão e queira ativá-las.
Subscription_id: serve para especificar o id da assinatura Azure que você deseja usar para criar e gerenciar recursos.
Tenant_id: serve para especificar o id do locatário, que nada mais é uma instância do serviço de diretório do Azure que armazena informações sobre os usuários. Cada locatário tem um id único.
Após especificarmos o provider desejado e os parâmetros necessários, agora vamos executar o comando "terraform init" para que sejam baixados os provedores necessários e inicializar um backend de armazenamento remoto, para manter o estado do Terraform e configurar outras opções necessárias para a execução do projeto. Após ser feito isso, vamos ver como funciona o "bloco" para o provisionamento de recursos para qualquer cloud:
Observando como funciona o "bloco" para criar os recursos, vamos agora criar os seguintes recursos: Resouce Group, Storage Account e um Data Factory.
Vamos iniciar criando o nosso resource group:
Podemos observar que o recurso que estamos provisionando se chama "azurerm_resource_group" e dissemos que esse recurso tem o nome de "azure_demo_resource_group". Assim, fica fácil chamar esse recurso dentro de outros recursos, como iremos observar nos próximos passos. Temos dois parâmetros para este recurso, são eles:
Name: nome do nosso resource group
Location: localização do nosso resource group
Podemos observar também que os valores desses parâmetros estão armazenados em variáveis, isto nós iremos definir por último.
Agora vamos criar o recurso Storage Account:
Vemos que sempre será o mesmo padrão para a criação do bloco do recurso. Para este recurso teremos mais parâmetros, são eles:
Name: nome da nossa storage account.
Resource_group_name: aqui podemos observar que estamos resgatando nosso resource group e pegando a partir dele, o nome.
Location: local onde irá ser provisionado e podemos observar que utilizamos o nosso resource group para resgatar a localização dele.
Account_tier: especifica a camada de conta de armazenamento que deve ser usada.
Account_replication_type: especifica o tipo de replicação a ser usado para a conta de armazenamento.
Depends_on: significa que este recurso depende de outro recurso.
Agora que criamos nossa Storage Account, vamos para o último recurso: Data Factory.
Para o Data Factory teremos que informar os seguintes parâmetros:
Name: nome do nosso Data Factory.
Location: local onde será criado o nosso recurso.
Resouce_group_name: nome do nosso grupo de recursos.
Identity: usado para especificar a identidade gerenciada (Managed Identity).
Depends_on: ignifica que este recurso depende de outro recurso.
Informados todos os recursos que queremos, vamos agora para o arquivo variables.tf, para informar quais as variáveis que iremos utilizar. Para isso, segue o seguinte padrão:
Visto como funciona para criar as variáveis, o nosso arquivo ficará assim com todas as variáveis que declaramos dentro do nosso main.tf:
Após informar quais as variáveis que queremos criar, vamos para o arquivo terraform.tfvars para informar o valor das nossas variáveis:
Após realizar todas essas ações, basta ir para o terminal e executar os seguintes comandos, dentro da pasta onde está seu código: terraform plan e terraform apply.
Terraform plan: usado para criar um plano de execução para a configuração do Terraform. Ele examina o arquivo de configuração e exibe o que o Terraform fará se o terraform apply for executado. Ele mostra a lista de recursos que serão criados, modificados ou excluídos e também exibe uma estimativa dos custos envolvidos. O terraform plan é um comando útil para verificar as mudanças que serão aplicadas antes de realmente aplicá-las.
Terraform apply: irá aplicar todas as configurações do Terraform. Ele aplica todo o plano que foi gerado pelo terraform plan e cria, exclui ou modifica os recursos definidos no arquivo de configuração.
Após ter executado o terraform plan e depois o terraform apply podemos observar que foi criado os recursos que informamos:
Agora para desprovisionar todos os recursos que provisionamos basta executar o comando terraform destroy que será excluído todos os recursos. Até o próximo artigo!