O Terraform é uma ferramenta prática para provisionamento rápido e gerenciamento da infraestrutura em nuvem usando arquivos de configuração.
Quando os arquivos de configuração mudam, o Terraform os lê novamente e cria, atualiza ou deleta os recursos conforme descrito pelo administrador.
Neste artigo, vamos mostrar como começar a trabalhar com Terraform e criar infraestrutura em nuvem no Hostman.
Mais detalhes sobre o uso do Hostman Terraform provider estão disponíveis em nosso perfil do GitHub.
Primeiro, vamos aprender a instalar o Terraform no Linux, Windows e macOS.
Você pode executar os comandos como root ou como usuário com privilégios sudo.
Atualize a lista de pacotes:
apt update
Instale wget e unzip, que serão usados depois, navegue até o diretório onde o Terraform será instalado e baixe o pacote:
apt install wget unzip
cd ~
wget https://releases.hashicorp.com/terraform/1.12.2/terraform_1.12.2_linux_amd64.zip
No último comando, especificamos a versão mais recente no momento da escrita — 1.12.2. Você pode conferir as últimas versões aqui.
Descompacte o arquivo:
unzip terraform_1.12.2_linux_amd64.zip
Mova o arquivo para o diretório:
mv terraform /usr/local/bin/
Pronto! Agora você pode verificar se o Terraform foi instalado corretamente:
terraform -v
Saída esperada:
Terraform v1.12.2
on linux_amd64
Existem duas formas de instalar o Terraform no Windows: via Chocolatey ou manualmente.
O método mais simples é usando o Chocolatey.
Se você ainda não o tem, abra o PowerShell como administrador e execute:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
Depois, instale o Terraform:
choco install terraform
Verifique se a instalação foi bem-sucedida:
terraform -v
Para instalar a versão mais recente do Terraform:
C:\Terraform.Nesse ponto, o Terraform está instalado, mas só pode ser usado especificando o caminho completo no terminal:
C:\Windows\system32>C:\Terraform\terraform -v
Terraform v1.12.2
on windows_amd64
Se tentar acessar apenas pelo nome, ocorrerá um erro:
C:\Windows\system32>terraform -v
'terraform' is not recognized as an internal or external command,
operable program or batch file.
Para poder chamar o Terraform de qualquer lugar, adicione-o à variável de ambiente PATH:
Verifique se tudo funciona executando:
terraform -v
Saída esperada:
Terraform v1.12.2
on windows_amd64
Assim como no Windows, existem duas formas de instalar o Terraform no macOS: via Homebrew ou manualmente.
Primeiro, instale o repositório oficial da HashiCorp:
brew tap hashicorp/tap
Em seguida, instale o Terraform:
brew install hashicorp/tap/terraform
Verifique se a instalação foi bem-sucedida:
terraform -v
PATH com o comando:echo $PATH
Copie o executável do Terraform para um dos diretórios listados:
mv ~/current/terraform/location /one/of/PATH/locations/
Por exemplo, se o executável estiver em Downloads e seu PATH incluir /usr/local/bin, o comando ficará:
mv ~/Downloads/terraform /usr/local/bin/
Arquivos de configuração do Terraform têm a extensão .tf. O nome do arquivo é arbitrário, o programa consegue ler de qualquer forma.
Crie um novo diretório chamado hostman_project e coloque nele um arquivo de configuração, que chamaremos de hm_project.tf.
Para criar o arquivo .tf, você pode primeiro criar um arquivo de texto simples e depois mudar a extensão para .tf.
Um diretório pode ter vários arquivos de configuração pertencentes ao mesmo projeto. Por exemplo, vars.tf para variáveis, nginx.tf para configurar um servidor Nginx, etc. Ao executar terraform plan, todos os arquivos .tf serão combinados.
Neste artigo, utilizaremos apenas um arquivo: hm_project.tf.
Agora, vamos configurar o Terraform provider no arquivo de configuração.
No início do arquivo hm_project.tf, adicione:
terraform {
required_providers {
hm = {
source = "hostman-cloud/hostman"
}
}
required_version = ">= 0.13"
}
No campo source, insira a URL do provider, neste caso, o Hostman.
Depois, no diretório com o arquivo de configuração, execute:
terraform init
Para trabalhar com o provider, você precisará de um token de API, que pode ser obtido na seção API do painel de controle.
Por exemplo, usamos o token: fb246030216d5g30b1g6228e3071037g.
Adicione-o ao arquivo hm_project.tf assim:
provider "hm" {
token = "fb246030216d5g30b1g6228e3071037g"
}
Substitua fb246030216d5g30b1g6228e3071037g pelo seu token.
Com o Terraform, você pode gerenciar diversos recursos na nuvem Hostman, como servidores em nuvem, bancos de dados, VPC, IPs públicos etc.
Exemplo: criar um servidor em nuvem com as seguintes especificações:
Chamaremos o servidor de my-hostman-server, mas você pode escolher seu próprio nome.
Adicione a configuração ao arquivo hm_project.tf:
data "hm_configurator" "configurator" {
location = "us-2"
}
data "hm_os" "os" {
name = "ubuntu"
version = "22.04"
}
resource "hm_server" "my-hostman-server" {
name = "My Hostman Server"
os_id = data.hm_os.os.id
configuration {
configurator_id = data.hm_configurator.configurator.id
disk = 1024 * 80
cpu = 2
ram = 1024 * 4
}
}
Se o Terraform não criar o servidor, verifique se o token foi inserido corretamente.
Preste atenção nos erros exibidos pelo Terraform; geralmente indicam o que está errado.
Além disso, você pode configurar autenticação via chave SSH. Gere as chaves usando o guia em nossa documentação e copie a chave pública para o servidor adicionando ao arquivo hm_project.tf:
resource "hm_ssh_key" "your-key" {
name = "Your key"
body = file("~/.ssh/your-key.pub")
}
No bloco resource, adicione a linha ssh_keys_ids:
resource "hm_server" "my-hostman-server" {
name = "My Hostman Server"
os_id = data.hm_os.os.id
ssh_keys_ids = [hm_ssh_key.your-key.id]
}
O arquivo de configuração final ficará assim:
terraform {
required_providers {
hm = {
source = "hostman-cloud/hostman"
}
}
required_version = ">= 0.13"
}
provider "hm" {
token = "fb246030216d5g30b1g6228e3071037g"
}
data "hm_configurator" "configurator" {
location = "us-2"
}
data "hm_os" "os" {
name = "ubuntu"
version = "20.04"
}
resource "hm_ssh_key" "your-key" {
name = "Your key"
body = file("~/.ssh/your-key.pub")
}
resource "hm_server" "my-hostman-server" {
name = "My Hostman Server"
os_id = data.hm_os.os.id
ssh_keys_ids = [hm_ssh_key.your-key.id]
configuration {
configurator_id = data.hm_configurator.configurator.id
disk = 1024 * 80
cpu = 2
ram = 1024 * 4
}
}
Execute:
terraform validate
Se tudo estiver correto, você verá a mensagem indicando que a configuração é válida. Em caso de erros, revise o arquivo.
Primeiro, execute:
terraform plan
Este comando não aplica a configuração, apenas exibe todos os recursos planejados, permitindo revisar os ajustes.
Se estiver tudo certo, execute:
terraform apply
Este comando aplica a configuração e permite ao Terraform criar os recursos descritos. Confirme digitando yes e pressionando Enter.
Agora, você pode acessar o painel de controle e conferir se os recursos foram criados.
Para remover os recursos, use:
terraform destroy
Confirme a exclusão digitando yes.
Neste guia, mostramos como criar arquivos de configuração Terraform e criar/configurar recursos na nuvem Hostman.
Para saber mais sobre o Terraform, consulte a documentação oficial. Para mais informações sobre o Hostman Terraform provider, visite nosso GitHub.