Neste tutorial, vai aprender a começar a usar o Terraform através do Terraform para criar um servidor Web básico no Compute Engine.
Neste tutorial, vai fazer o seguinte:
- Use o Terraform para criar uma VM no Trusted Cloud.
- Inicie um servidor Python Flask básico.
Custos
Neste documento, usa os seguintes componentes faturáveis do Trusted Cloud by S3NS:
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Antes de começar
Prepare-se para iniciar o tutorial.
Selecione ou crie um projeto
-
In the Trusted Cloud console, go to the project selector page.
-
Select or create a Trusted Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
Configure as autorizações
Certifique-se de que tem as autorizações do Compute Engine necessárias na sua conta de utilizador:
compute.instances.*
compute.firewalls.*
Saiba mais acerca das funções e autorizações.
Ative a API
Enable the Compute Engine API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin
), which
contains the serviceusage.services.enable
permission. Learn how to grant
roles.
Instale a CLI gcloud
Para usar o Terraform a partir de um ambiente de desenvolvimento local, instale e inicialize a CLI Google Cloud e, em seguida, configure as credenciais predefinidas da aplicação com as suas credenciais de utilizador:
- Instale a CLI gcloud.
-
Inicialize a CLI gcloud:
gcloud init
- Crie credenciais de autenticação local para a sua conta:
gcloud auth application-default login
Crie a VM do Compute Engine
Primeiro, define as definições da VM num ficheiro de configuração do Terraform. Em seguida, execute comandos do Terraform para criar a VM no seu projeto.
Crie o diretório
Crie um novo diretório. No novo diretório, crie um ficheiro
main.tf
para a configuração do Terraform. O conteúdo deste ficheiro descreve todos os Trusted Cloud recursos a criar no projeto.
mkdir tf-tutorial && cd tf-tutorial
nano main.tf
Crie a rede e a sub-rede da nuvem privada virtual
Nesta secção, cria uma rede da nuvem virtual privada (VPC) e uma sub-rede para a interface de rede da VM.
Adicione os seguintes recursos do Terraform ao ficheiro main.tf
que criou:
Crie o recurso de VM do Compute Engine
Nesta secção, cria uma única instância do Compute Engine que executa o Debian. Neste tutorial, usa o tipo de máquina mais pequeno disponível. Mais tarde, pode atualizar para um tipo de máquina maior.
Adicione o seguinte recurso do google_compute_instance
Terraform ao ficheiro main.tf
que criou.
O exemplo de código define a Trusted Cloud zona como us-west1-a
. Pode alterar
esta opção para uma zona diferente.
Inicialize o Terraform
Neste ponto, pode executar terraform init
para adicionar os plug-ins necessários e criar o diretório .terraform
.
terraform init
Saída:
Initializing the backend... Initializing provider plugins... ... Terraform has been successfully initialized!
Valide a configuração do Terraform
Opcionalmente, pode validar o código do Terraform que criou até agora. Executar
terraform plan
, que faz o seguinte:
- Verifica se a sintaxe de
main.tf
está correta - Mostra uma pré-visualização dos recursos que vão ser criados
terraform plan
Saída:
... Plan: 1 to add, 0 to change, 0 to destroy. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.
Aplique a configuração
Para criar a VM, execute o comando terraform apply
.
terraform apply
Quando lhe for pedido, introduza yes
.
O Terraform chama as Trusted Cloud APIs para configurar a nova VM. Consulte a página de instâncias de VM para ver a nova VM.
Execute um servidor Web em Trusted Cloud
Os passos seguintes consistem em criar uma aplicação Web, implementá-la na VM e criar uma regra de firewall para permitir pedidos de clientes à aplicação Web.
Adicione uma regra de firewall SSH personalizada
A regra de firewall default-allow-ssh
na rede default
permite-lhe usar o SSH para se ligar à VM. Se preferir usar a sua própria regra de firewall personalizada, pode adicionar o seguinte recurso no final do ficheiro main.tf
:
Execute terraform apply
para criar a regra de firewall.
Ligue-se à VM com SSH
Valide se tudo está configurado corretamente neste ponto ligando-se à VM com SSH.
Aceda à página Instâncias de VM.
Encontre a VM com o nome
flask-vm
.Na coluna Ligar, clique em SSH.
É aberta uma janela de terminal SSH no navegador para a VM em execução.
Para mais informações, consulte o artigo Estabelecer ligação a VMs.
Crie a app Flask
Para este tutorial, vai criar uma app Python Flask para que possa ter um único ficheiro que descreva o seu servidor Web e pontos finais de teste.
No terminal SSH no navegador, crie um ficheiro denominado
app.py
.nano app.py
Adicione o seguinte ao ficheiro
app.py
:from flask import Flask app = Flask(__name__) @app.route('/') def hello_cloud(): return 'Hello Cloud!' app.run(host='0.0.0.0')
Corrida
app.py
:python3 app.py
Por predefinição, o Flask envia tráfego em
localhost:5000
.Abra uma segunda ligação SSH:
- Aceda à página Instâncias de VM.
- Encontre a VM com o nome
flask-vm
e clique em SSH.
Na segunda ligação SSH, execute
curl
para confirmar que a saudação que configurou emapp.py
é devolvida.curl http://0.0.0.0:5000
O resultado deste comando é
Hello Cloud
.
Abra a porta 5000 na VM
Para estabelecer ligação ao servidor Web a partir do seu computador local, a VM tem de ter a porta 5000 aberta.O Trusted Cloud permite-lhe abrir portas ao tráfego através de regras de firewall.
Adicione o seguinte recurso do Terraform google_compute_firewall
no final do ficheiro main.tf
.
Execute terraform apply
para criar a regra de firewall.
Adicione uma variável de saída para o URL do servidor Web
No final de
main.tf
, adicione uma variável de saída do Terraform para emitir o URL do servidor Web:// A variable for extracting the external IP address of the VM output "Web-server-URL" { value = join("",["http://",google_compute_instance.default.network_interface.0.access_config.0.nat_ip,":5000"]) }
Corrida
terraform apply
.terraform apply
Quando lhe for pedido, introduza
yes
. O Terraform imprime o endereço IP externo da VM e a porta 5000 no ecrã, da seguinte forma:Web-server-URL = "http://IP_ADDRESS:5000"
Em qualquer altura, pode executar
terraform output
para devolver esta saída:terraform output
Clique no URL do passo anterior e veja a mensagem "Olá, nuvem!".
Isto significa que o seu servidor está em execução.
Resolução de problemas
Se uma API necessária não estiver ativada, o Terraform devolve um erro. A mensagem de erro inclui um link para ativar a API. Depois de ativar a API, pode executar novamente o comando
terraform apply
.Se não conseguir estabelecer ligação à sua VM através do SSH:
- Certifique-se de que adiciona a regra de firewall SSH.
- Certifique-se de que a VM inclui o argumento
tags = ["ssh"]
.
Limpar
Após concluir o tutorial, pode eliminar tudo o que criou para não incorrer em custos adicionais.
O Terraform permite-lhe remover todos os recursos definidos no ficheiro de configuração executando o comando terraform destroy
:
terraform destroy
Introduza yes
para permitir que o Terraform elimine os seus recursos.