Terraform Ansible Integration: GCP Example & Multiple VMs YouTube Tutorial
Run the following command to generate elliptic curve ssh key pair ssh-keygen -t ed25519 -f ~ /.ssh/ansbile_ed25519 -C ansible Optionally , you can generate RSA key pair ssh-keygen -t rsa -f ~ /.ssh/ansbile -C ansible -b 2048 Add SSH Key to GCP Project Go to compute engine section Click Metadata Select SSH KEYS tab and click ADD SSH KEY Upload public ansbile_ed25519.pub key cat ~/.ssh/ansbile_ed25519.pub Create Ansible Playbook for Nginx Installation Create roles/nginx/tasks/main.yaml task Create nginx.yaml playbook Create Ansible config ansible.cfg to skip host key verification Create Terraform Ansible Integration Example Create terraform file 1-example.tf Open default firewall rules Verify that you have Terraform and Ansible installed command -v terraform command -v ansible-playbook Run terraform init to download provider and plugins Run terraform apply to create Nginx instance in GCP Destroy previous example terraform destroy Copy 1-example.tf -> 2-example.tf Rename 1-example.tf -> 1-example.tf.bac Add local variable web_servers = { nginx-000-staging = { machine_type = "e2-micro" zone = "us-central1-a" } nginx-001-staging = { machine_type = "e2-micro" zone = "us-central1-b" } } for_each = local.web_servers name = each.key machine_type = each.value.machine_type zone = each.value.zone host = self.network_interface.0.access_config.0.nat_ip command = "ansible-playbook -i ${self.network_interface.0.access_config.0.nat_ip}, --private-key ${local.private_key_path} nginx.yaml" output "nginx_ips" { value = { for k, v in google_compute_instance.nginx : k => "http://${v.network_interface.0.access_config.0.nat_ip}" } } terraform destroy rm ~/.ssh/ansbile* Delete SSH public key from GCP project