Como modificar recursos existentes com Terraform na Google Cloud
Então, continuando com a nossa infraestrutura anterior…
Vamos realizar pequenos ajustes na máquina virtual que foi provisionada na GCP.
resource "google_compute_instance" "default" {
name = "linux-vm-1"
machine_type = "f1-micro"
zone = "us-central1-a"
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
labels = {
environment = "development"
distro = "debian-9"
}
network_interface {
network = "default"
}
}
$ terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
google_compute_instance.default: Refreshing state... [id=projects/projeto-1/zones/us-central1-a/instances/linux-vm-1]
------------------------------------------------------------------------
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
~ update in-place
Terraform will perform the following actions:
# google_compute_instance.default will be updated in-place
~ resource "google_compute_instance" "default" {
can_ip_forward = false
cpu_platform = "Intel Haswell"
deletion_protection = false
enable_display = false
guest_accelerator = []
id = "projects/projeto-1/zones/us-central1-a/instances/linux-vm-1"
instance_id = "3724819701104257360"
label_fingerprint = "42WmSpB8rSM="
~ labels = {
+ "company" = "4Linux"
+ "environment" = "development"
+ "os-system" = "debian-9"
}
machine_type = "f1-micro"
metadata = {}
metadata_fingerprint = "b20jSyLni-U="
......
......
......
......
Plan: 0 to add, 1 to change, 0 to destroy.
......
......
......
O sumário final nos apresenta o que será criado, neste caso 0 recursos serão adicionados, 1 recurso será alterado e 0 recursos serão destruídos. Perceba que logo no início do output também é mostrado na saída do terminal que já existe esta máquina e em seguida o seguinte trecho de aviso:
An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: ~ update in-place
Ou seja, o Terraform está informando que todas modificações são mostradas com um ~ (sinal de til) no inicio da linha.
Em nosso caso o recurso da instância está sendo alterado mais precisamente onde adicionamos o novo código (labels).
Para prosseguir com a modificação, execute de fato o Terraform para aplicar o código.
$ terraform apply -auto-approve
google_compute_instance.default: Refreshing state... [id=projects/projeto-1/zones/us-central1-a/instances/linux-vm-1] google_compute_instance.default: Modifying... [id=projects/projeto-1/zones/us-central1-a/instances/linux-vm-1] google_compute_instance.default: Modifications complete after 8s [id=projects/projeto-1/zones/us-central1-a/instances/linux-vm-1] Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
O procedimento para qualquer recurso é basicamente o mesmo para alterar de forma incremental.
- Você cria o recurso inicial que precisa;
- Faz o plano de execução;
- Faz aplicação deste recurso;
- Quando for necessário alterar qualquer atributo deste código, faça o plano de execução;
- Verifique se a saída está de acordo;
- Faça aplicação deste novo código.
About author
Você pode gostar também
IA Local com Qwen: um modelo pequeno, na sua máquina, resolvendo problema de verdade
Salve salve pessoal! Tudo bem com vocês? Espero que sim! Hoje trago um assunto que tem aparecido em quase toda conversa que tenho com empresas que já adotaram IA: a
Gerenciando entradas de DNS com Terraform e Protocolo TSIG
Terraform é uma ferramenta da Hashicorp focada em Bootstrapping e inicialização de recursos. Em comparação com Puppet , este é responsável por gerenciar a configuração de uma infraestrutura existente, já o
GitLab CI – Integração Contínua sem sair do repositório
Ferramentas de CI/CD hoje em dia andam de mãos dadas com os nossos projetos – dificilmente vemos um repositório no GitHub, GitLab, Bitbucket, Gitea… sem alguma configuração de integração contínua.





