43 lines
1.4 KiB
Terraform
43 lines
1.4 KiB
Terraform
resource "random_password" "demo_pass" {
|
|
length = 16
|
|
special = true
|
|
}
|
|
|
|
resource "local_file" "ansible_inventory" {
|
|
filename = "${path.module}/inventory.ini"
|
|
file_permission = "0644"
|
|
content = <<-EOT
|
|
[all:vars]
|
|
ansible_ssh_extra_args='-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
|
|
private_ip_caddy='${gridscale_server.server_caddy.network[1].auto_assigned_ip}'
|
|
private_ip_monitoring='${gridscale_server.server_monitoring.network[1].auto_assigned_ip}'
|
|
private_ip_nginx='${gridscale_server.server_nginx.network[1].auto_assigned_ip}'
|
|
demo_pass="${random_password.demo_pass.result}"
|
|
demo_user="demo"
|
|
|
|
[caddy]
|
|
${var.caddy_hostname} ansible_host=${gridscale_ipv4.public_ipv4_caddy.ip} ansible_user=root
|
|
|
|
[monitoring]
|
|
${var.monitoring_hostname} ansible_host=${gridscale_ipv4.public_ipv4_monitoring.ip} ansible_user=root
|
|
|
|
[nginx]
|
|
${var.nginx_hostname} ansible_host=${gridscale_ipv4.public_ipv4_nginx.ip} ansible_user=root
|
|
EOT
|
|
}
|
|
|
|
resource "null_resource" "ansible_provisioner" {
|
|
depends_on = [
|
|
local_file.ansible_inventory,
|
|
gridscale_server.server_caddy,
|
|
gridscale_server.server_monitoring,
|
|
gridscale_server.server_nginx
|
|
]
|
|
|
|
provisioner "local-exec" {
|
|
# Added 60 seconds delay for the servers to boot up
|
|
command = "sleep 60 && uv run ansible-playbook -i ${local_file.ansible_inventory.filename} playbook.yml"
|
|
}
|
|
}
|
|
|