-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathprovisioning.tf
More file actions
78 lines (71 loc) · 2.58 KB
/
provisioning.tf
File metadata and controls
78 lines (71 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Locals
locals {
kafka_private_ip = var.include_kafka == "yes" ? aws_instance.kafka[0].private_ip: "localhost"
front_end_public_ip = var.include_load_balancer == "yes" ? aws_lb.public_lb[0].dns_name : aws_instance.haproxy[0].public_ip
front_end_private_ip = var.include_load_balancer == "yes" ? aws_lb.private_nlb[0].dns_name : aws_instance.haproxy[0].private_ip
}
# Dummy Resource (fallback)
resource "null_resource" "dummy" {}
# Conditional Resource Dependencies
resource "null_resource" "lb_dependencies" {
count = var.include_load_balancer == "yes" ? 1 : 0
depends_on = [
aws_lb.public_lb,
aws_lb.private_nlb
]
}
resource "null_resource" "validation_check" {
count = (
var.include_load_balancer == "yes" || var.include_ha_proxy == "yes" ? 0 : 1
)
provisioner "local-exec" {
command = "echo 'Validation Error: Either include_load_balancer or include_ha_proxy must be set to yes.' && exit 1"
}
}
# Null Resource for Provisioning
resource "null_resource" "provision" {
# only run the Ansible playbook if run_ansible = true
count = var.run_ansible ? 1 : 0
triggers = {
always_run = timestamp()
}
provisioner "local-exec" {
working_dir = var.playbook_working_directory
command = <<EOF
ansible-playbook \
-i ${var.playbook_instances_inventory_file} \
--private-key ${var.ssh_private_key} \
playbook.yml ${var.ansible_verbosity_switch} \
-e db_admin_user=${var.dbadmin_user_name} \
-e db_admin_password=${var.dbadmin_user_password} \
-e crdb_version=${var.crdb_version} \
-e region=${var.virtual_network_location} \
-e include_kafka=${var.include_kafka} \
-e setup_migration=${var.setup_migration} \
-e kafka_internal_ip=${local.kafka_private_ip} \
-e prometheus_string=${local.prometheus_string} \
-e prometheus_app_string=${local.prometheus_app_string} \
-e join_string=${local.join_string} \
-e full_path_license_directory=${var.full_path_license_directory} \
-e allow_non_tls=${var.allow_non_tls} \
-e crdb_file_location=${var.crdb_file_location} \
-e login_username=${local.admin_username} \
-e kafka_username=ubuntu \
-e include_app=${var.include_app} \
-e install_enterprise_keys=${var.install_enterprise_keys} \
-e load_balancer_public_ip=${local.front_end_public_ip} \
-e load_balancer_private_ip=${local.front_end_private_ip} \
-e bucket=${local.bucket_name} \
-e do_crdb_init=${var.do_crdb_init}
EOF
}
depends_on = [
local_file.instances_file,
aws_instance.haproxy,
aws_instance.app,
aws_instance.kafka,
aws_instance.crdb,
null_resource.lb_dependencies,
null_resource.dummy
]
}