Files
tree-sitter-jhcl/example/real_world_stuff/oracle/oracle%isv-single-tenant-vcn-isolation%examples%full-deployment%peering%routing%pacemaker.tf
2021-06-23 20:30:30 +02:00

59 lines
2.3 KiB
HCL

// Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
/*
* Configure the HA routing instances with Pacemaker
*/
locals {
# TODO dynamically get the list of routing instances
instances = [
module.routing_instance_1.instance_a.private_ip,
module.routing_instance_1.instance_b.private_ip,
]
}
# Routing Instance 1
module router_instance_1_pacemaker_config {
source = "../../../../modules/pacemaker_config"
hostname = "gateway1"
instance_a_primary_vnic_id = module.routing_instance_1.instance_vnics[0]
instance_a_secondary_vnic_id = module.routing_instance_1_peering_1_vnic_attachement.routing_secondary_vnic_id
instance_b_primary_vnic_id = module.routing_instance_1.instance_vnics[1]
instance_b_secondary_vnic_id = module.routing_instance_1b_peering_1_vnic_attachement.routing_secondary_vnic_id
floating_ip = module.routing_instance_1.routing_ip.ip_address
floating_secondary_ip = oci_core_private_ip.routing_instance_1_peering_1_floating_ip.ip_address
}
# configure the fail-over actions
resource null_resource pacemaker_config {
# TODO use for_each?
count = length(local.instances)
triggers = {
instance_a_primary_vnic_id = module.routing_instance_1.instance_vnics[0]
instance_a_secondary_vnic_id = module.routing_instance_1_peering_1_vnic_attachement.routing_secondary_vnic_id
instance_b_primary_vnic_id = module.routing_instance_1.instance_vnics[1]
instance_b_secondary_vnic_id = module.routing_instance_1b_peering_1_vnic_attachement.routing_secondary_vnic_id
floating_ip = module.routing_instance_1.routing_ip.ip_address
floating_secondary_ip = oci_core_private_ip.routing_instance_1_peering_1_floating_ip.ip_address
}
connection {
type = "ssh"
host = local.instances[count.index]
user = "opc"
private_key = file(var.remote_ssh_private_key_file) # TODO
bastion_host = local.bastion_ip
bastion_user = "opc"
bastion_private_key = file(var.bastion_ssh_private_key_file) #TODO
}
provisioner remote-exec {
inline = module.router_instance_1_pacemaker_config.config
}
}