local-exec:
data "template_file" "user_data" {
template = < /tmp/debug"
]
connection {
type = "ssh"
host = openstack_networking_floatingip_v2.floatingip_1.address
user = "ubuntu"
private_key = file(pathexpand("~/.ssh/id_rsa"))
}
}
provisioner "local-exec" {
command = "TF_STATE=terraform.tfstate ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i inventory install-nginx.yml"
}
depends_on = [openstack_networking_floatingip_v2.floatingip_1]
}
resource "local_file" "hosts_cfg" {
content = templatefile("inventory.tmpl",
{
ubuntu_hosts = openstack_networking_floatingip_v2.floatingip_1.*.address
}
)
filename = "inventory"
depends_on = [openstack_networking_floatingip_associate_v2.instance_fip_association]
}
Links
https://github.com/knetsolutions/learn-terraform-with-openstack/blob/master/provisioner/README.md
https://www.digitalocean.com/community/tutorials/how-to-use-ansible-with-terraform-for-configuration-management
subnetpool
# DEV only
# resource "openstack_networking_subnetpool_v2" "subnetpool_1" {
# # count = var.env == "dev" ? 1 : 0
# name = "subnetpool_1"
# # prefixes = ["10.0.0.0/16"]
# prefixes = [var.test_subnet_cidr]
# # address_scope_id = "1a68b969-b6d1-43ba-8bd0-4c6b770e3012" # DEV only
# }
resource "openstack_networking_subnet_v2" "subnet_1" {
network_id = openstack_networking_network_v2.network_1.id
name = var.test_subnet
cidr = var.test_subnet_cidr
# DEV only
# subnetpool_id = openstack_networking_subnetpool_v2.subnetpool_1.id
# depends_on = [openstack_networking_subnetpool_v2.subnetpool_1]
}
# show sensitive variable
terraform output -raw my_password
# run specific task
terraform apply -auto-approve -replace=terraform_data.foo_api_keyDNS loockup
data "dns_a_record_set" "google" {
host = "google.com"
}
output "google_addrs" {
value = join(",", data.dns_a_record_set.google.addrs)
}