From a6aee928623afb15c9a6014f1885c99e7f5c6a06 Mon Sep 17 00:00:00 2001 From: John Studarus Date: Tue, 21 Apr 2020 19:41:57 -0700 Subject: [PATCH] generate file to setup provider networking --- ExternalNetwork.tf | 12 ------------ ProviderNetwork.tf | 23 +++++++++++++++++++++++ templates/ProviderNetworks.sh | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 12 deletions(-) create mode 100644 templates/ProviderNetworks.sh diff --git a/ExternalNetwork.tf b/ExternalNetwork.tf index f0d76b0..8b13789 100644 --- a/ExternalNetwork.tf +++ b/ExternalNetwork.tf @@ -1,13 +1 @@ -resource "null_resource" "controller-external-network" { - - connection { - host = packet_device.controller.access_public_ipv4 - private_key = file(var.cloud_ssh_key_path) - } - - provisioner "file" { - source = "ExternalNetwork.sh" - destination = "ExternalNetwork.sh" - } -} diff --git a/ProviderNetwork.tf b/ProviderNetwork.tf index f608601..8c8a392 100644 --- a/ProviderNetwork.tf +++ b/ProviderNetwork.tf @@ -36,3 +36,26 @@ resource "packet_ip_attachment" "controller_public_ipv6" { cidr_notation = cidrsubnet(data.packet_precreated_ip_block.public_ipv6.cidr_notation,8,1) } + +data "template_file" "provider-networks" { + + template = file("templates/ProviderNetworks.sh") + + vars = { + provider_ipv4_cidr = packet_ip_attachment.controller_private_ipv4.cidr_notation + provider_ipv6_cidr = packet_ip_attachment.controller_public_ipv6.cidr_notation + } +} + +resource "null_resource" "controller-provider-networks" { + + connection { + host = packet_device.controller.access_public_ipv4 + private_key = file(var.cloud_ssh_key_path) + } + + provisioner "file" { + content = data.template_file.provider-networks.rendered + destination = "ProviderNetworks.sh" + } +} diff --git a/templates/ProviderNetworks.sh b/templates/ProviderNetworks.sh new file mode 100644 index 0000000..0b50fff --- /dev/null +++ b/templates/ProviderNetworks.sh @@ -0,0 +1,35 @@ +# +# +# associate elastic IP subnet with the controller node via the Packet Web GUI +# +export OS_USERNAME=admin +export OS_PASSWORD=ADMIN_PASS +export OS_PROJECT_NAME=admin +export OS_USER_DOMAIN_NAME=Default +export OS_PROJECT_DOMAIN_NAME=Default +export OS_AUTH_URL=http://controller:5000/v3 +export OS_IDENTITY_API_VERSION=3 + +PROVIDER_4_CIDR="${provider_ipv4_cidr}" +PROVIDER_6_CIDR="${provider_ipv6_cidr}" + +export PROVIDER_4_ID=`openstack network create --share \ + --provider-physical-network provider \ + --provider-network-type flat provider \ + --external \ + -f value -c id` + +echo "Provider 4 ID is $PROVIDER_4_ID" + +export SUBNET_4_ID=`openstack subnet create \ + --network $PROVIDER_4_ID \ + --subnet-range $PROVIDER_4_CIDR \ + $PROVIDER_4_CIDR -f value -c id` + +echo "Subnet 4 ID is $SUBNET_4_ID" + +# assign this gateway to all routers +for ROUTER_ID in `openstack router list -f value -c ID` +do +openstack router set --external-gateway $PROVIDER_4_ID $ROUTER_ID +done