Header Ads

Como usar o Terraform com CloudFlare

O Terraform é uma infraestrutura popular como ferramenta de código e, quando emparelhado com o CloudFlare, torna o gerenciamento de configurações complexas dentro do CloudFlare muito mais fácil. Para quem não está familiarizado, o Terraform usa a linguagem de configuração HCL para definir uma configuração de infraestrutura que pode ser usada para aplicar as configurações solicitadas ao provedor. A CloudFlare oferece serviços de DNS, segurança e serviços de computação de ponta que combinam perfeitamente com a ferramenta Terraform.

Instalando o Terraform

O Terraform pode ser usado no Windows ou no Linux. O binário do Terraform em si é um único executável e só precisa ser baixado e colocado no caminho do sistema.

Instalação do Windows

Primeiro, você precisará baixar o executável Terraform para Windows. Depois de baixado, coloque o executável em um local de caminho do Windows. Se você precisar colocar o executável em um local diferente, mas quiser que ele esteja acessível a qualquer momento, você pode usar o seguinte código do PowerShell para modificar a variável de ambiente PATH do usuário.

 [System. Environment] :: SetEnvironmentVariable ("PATH", (($ Env: PATH, "C: \\ Tools") -Join ";"), "User") 

Isso pode ser usado para modificar o PATH do sistema, alterando o usuário para a máquina. Você precisará de direitos administrativos para fazer isso.

Instalação do Linux

Muito parecido com o Windows, você fará o download da versão mais recente do Terraform. Como você pode nem sempre usar uma GUI, pode fazer isso por meio do seguinte código de shell. Substitua pela versão do código, como 0.13.0.

 wget < https: //releases. hashicorp. com/terraform//terraform__linux_amd64. zip> descompacte terraform__linux_amd64. zip mv terraform / usr / bin / 

Configurando Terraform para CloudFlare

Para conter a configuração do Terraform, vamos criar um diretório para armazenar os arquivos . tf, que são a extensão dos arquivos de configuração do Terraform. Crie um novo diretório para manter a configuração.

PowerShell 7 no Windows

 Novo-Item -Nome 'CF_Terraform' -Tipo 'Diretório' Definir-Localização -Path 'CF_Terraform' 

Bash Shell no Linux

 mkdir cf_terraform cd cf_terraform 

Depois de criar e navegar até o diretório, precisaremos inicializar a configuração do Terraform. Primeiro precisamos criar nosso arquivo de configuração. Estamos optando por não codificar nossas credenciais no arquivo de configuração. Em vez disso, um arquivo passará as credenciais que são excluídas do controle de versão. Falando nisso, Git é altamente recomendado para acompanhar as mudanças.

cloudflare. tf

 variável "api_token" {} provedor "cloudflare" {version = "~ > 2.9" api_token = var. api_token} 

O seguinte arquivo . auto. tfvars conterá os segredos que passamos para o Terraform, mas não queremos comprometer com o histórico de controle de versão.

cloudflare. auto. tfvars

 # Zone. DNS Permissions # Exemplo de token abaixo api_token = "as3uo7WkxL6asdfasdfaME7IdLofKBG9C_Zi-gf" 

O motivo da seção . auto do nome do arquivo . tfvars é que essa pasta variável será lida automaticamente pelo Terraform nas operações, em vez de passá-la explicitamente por meio de -var-file = "cloudflare. tfvars".

Agora que temos ambos os nossos arquivos configurados, é hora de inicializar nossa configuração. Isso instalará todos os provedores especificados na seção de provedores de nosso arquivo de configuração Terraform.

 terraform init 

Definindo a configuração do Terraform CloudFlare

Agora que nos conectamos com sucesso ao nosso domínio, precisamos criar nossa configuração. A primeira coisa que precisamos fazer é modificar nosso arquivo cloudflare. auto. tfvars para incluir o zone_id para o qual iremos direcionar as modificações de registros DNS. Adicione a seguinte linha ao arquivo cloudflare. auto. tfvars.

 # Zone. DNS Permissions api_token = "as3uo7WkxL6asdfasdfaME7IdLofKBG9C_Zi-gf" # ID de zona de domínio específico zone_id = "fddd89b6e1d52ebdfdasdc8bc02186333" 

Em seguida, precisamos definir os registros que vamos adicionar ao CloudFlare. Para fazer isso, vamos usar o recurso cloudflare_record para criar os registros. O formato disso é o seguinte: recurso. O tipo será cloudflare_record, e para o nome usaremos a_mydomain_com e cname_www. No entanto, esses nomes são arbitrários e podem ser o que você quiser.

 recurso "cloudflare_record" "a_mydomain_com" {zone_id = var. zone_id name = "mydomain. com" value = "133.145.220.110" type = "A" ttl = 1 proxied = true} recurso "cloudflare_record" " cname_www "{zone_id = var. zone_id name =" www "value =" mydomain. com "type =" CNAME "ttl = 1 proxied = true} 

Uma advertência sobre os nomes. Se você quiser usar a importação de terraform para importar o estado em um determinado registro, terá que combinar o nome com o registro de importação da seguinte forma:

terraform import cloudflare_record.a_mydomain_com /

Planejando as mudanças do Terraform

Agora que temos nossa configuração definida, podemos executar o comando terraform plan, que irá gerar as mudanças entre o que é conhecido pelo Terraform via arquivo . tfstate e o ambiente CloudFlare. Se os recursos não foram importados, ou esta é a primeira vez que executa o comando, o Terraform não terá conhecimento do ambiente e todas as alterações serão novas.

 plano de terreno 

Aplicação das alterações do Terraform

Assim que estiver confiante em sua configuração, basta usar o comando aplicar. Isso solicitará uma confirmação, onde você precisa digitar sim. A saída mostrará a configuração a ser aplicada e o estado.

 aplicação de terraform 

Use o comando aplicar. Isso solicitará uma confirmação, onde você precisa digitar sim. A saída mostrará a configuração a ser aplicada e o estado.

Conclusão

Combinar CloudFlare e Terraform é uma combinação potente. Quando você consegue arquitetar seu ambiente em código e rastrear mudanças ao longo do tempo (usando o controle de versão), você desbloqueia novas eficiências e controle. No caso de uma configuração estar incorreta, é normal reverter para uma configuração anterior, o que torna a recuperação de erros muito rápida e indolor.

Nenhum comentário