diff --git a/Taskfile.yaml b/Taskfile.yaml index 8fc6236..5a3e63e 100644 --- a/Taskfile.yaml +++ b/Taskfile.yaml @@ -55,7 +55,7 @@ tasks: TF_COMMAND: destroy plan: - desc: get remote_fqdn + desc: plan deps: - task: run_tf_command vars: @@ -69,7 +69,7 @@ tasks: TF_COMMAND: output -raw REMOTE_FQDN get_remote_user: - desc: get remote_fqdn + desc: get remote_user deps: - task: run_tf_command vars: diff --git a/data__openstack_blockstorage_volume_v3.tf b/data__openstack_blockstorage_volume_v3.tf deleted file mode 100644 index 092cb21..0000000 --- a/data__openstack_blockstorage_volume_v3.tf +++ /dev/null @@ -1,4 +0,0 @@ -data openstack_blockstorage_volume_v3 persistent-volumes { - for_each = local.PERSISTENT_VOLUMES_NAME - name = each.value -} \ No newline at end of file diff --git a/data__openstack_images_image_v2.tf b/data__openstack_images_image_v2.tf index d0f6a76..0a82186 100644 --- a/data__openstack_images_image_v2.tf +++ b/data__openstack_images_image_v2.tf @@ -1,4 +1,4 @@ data openstack_images_image_v2 base_image { name = var.BASE_IMAGE most_recent = true -} \ No newline at end of file +} diff --git a/data__openstack_networking_floatingip_v2.tf b/data__openstack_networking_floatingip_v2.tf deleted file mode 100644 index 9973ac7..0000000 --- a/data__openstack_networking_floatingip_v2.tf +++ /dev/null @@ -1,3 +0,0 @@ -data openstack_networking_floatingip_v2 instance { - description = local.INSTANCE_FQDN -} \ No newline at end of file diff --git a/data__openstack_networking_network_v2.tf b/data__openstack_networking_network_v2.tf index 3b22158..2663b05 100644 --- a/data__openstack_networking_network_v2.tf +++ b/data__openstack_networking_network_v2.tf @@ -1,3 +1,9 @@ data openstack_networking_network_v2 private { - name = "private" -} \ No newline at end of file + name = local.INSTANCE_NETWORK +} + + +data "openstack_networking_subnet_ids_v2" "intra_subnets" { + network_id = openstack_networking_network_v2.intra_network.id +} + diff --git a/resources__openstack_compute_instance_v2.tf b/resources__openstack_compute_instance_v2.tf index 289c1a7..7180eab 100644 --- a/resources__openstack_compute_instance_v2.tf +++ b/resources__openstack_compute_instance_v2.tf @@ -1,3 +1,13 @@ +resource openstack_blockstorage_volume_v3 persistent-volumes { + for_each = local.PERSISTENT_VOLUMES_NAME + name = each.value + size = 77 +} + +resource openstack_networking_floatingip_v2 instance { + pool = "public-2" +} + resource openstack_compute_instance_v2 instance { name = var.INSTANCE_FQDN image_id = data.openstack_images_image_v2.base_image.id @@ -9,30 +19,15 @@ resource openstack_compute_instance_v2 instance { port = openstack_networking_port_v2.instance.id } - #user_data = templatefile("${path.module}/user_data.tmpl", { - # fqdn = local.INSTANCE_FQDN - # timezone = local.TIMEZONE - # ntp_servers = local.NTP_SERVERS - # ssh_authorized_keys = data.external.ssh_authorized_keys.result - # ssh_host_keys = data.external.ssh_host_keys.result - #}) connection { type = "ssh" agent = true - host = data.openstack_networking_floatingip_v2.instance.address + host = openstack_networking_floatingip_v2.instance.address user = var.REMOTE_USER } provisioner remote-exec { inline = [ "hostname" ] } - #provisioner "local-exec" { - # environment = { - # REMOTE_USER = var.REMOTE_USER - # REMOTE_FQDN = data.openstack_networking_floatingip_v2.instance.address - # } - # working_dir = dirname(abspath(path.root)) - # command = "pwd && task provisioner:install" - # - #} -} \ No newline at end of file +} + diff --git a/resources__openstack_compute_volume_attach_v2.tf b/resources__openstack_compute_volume_attach_v2.tf index 270c8a5..19094cf 100644 --- a/resources__openstack_compute_volume_attach_v2.tf +++ b/resources__openstack_compute_volume_attach_v2.tf @@ -1,5 +1,6 @@ + resource openstack_compute_volume_attach_v2 persistent-volumes { - for_each = data.openstack_blockstorage_volume_v3.persistent-volumes + for_each = openstack_blockstorage_volume_v3.persistent-volumes instance_id = openstack_compute_instance_v2.instance.id volume_id = each.value.id -} \ No newline at end of file +} diff --git a/resources__openstack_networking_floatingip_associate_v2.tf b/resources__openstack_networking_floatingip_associate_v2.tf index 360ef58..ecf46d5 100644 --- a/resources__openstack_networking_floatingip_associate_v2.tf +++ b/resources__openstack_networking_floatingip_associate_v2.tf @@ -1,4 +1,6 @@ + + resource openstack_networking_floatingip_associate_v2 instance { - floating_ip = data.openstack_networking_floatingip_v2.instance.address + floating_ip = openstack_networking_floatingip_v2.instance.address port_id = openstack_networking_port_v2.instance.id -} \ No newline at end of file +} diff --git a/resources__openstack_networking_network_v2.tf b/resources__openstack_networking_network_v2.tf new file mode 100644 index 0000000..70c2bf5 --- /dev/null +++ b/resources__openstack_networking_network_v2.tf @@ -0,0 +1,31 @@ + + +resource "openstack_networking_network_v2" "intra_network" { + name = "jup-ng-staging" +} + + +resource "openstack_networking_subnet_v2" "intra_subnet" { + network_id = openstack_networking_network_v2.intra_network.id + name = "main" + cidr = "192.168.0.0/24" + gateway_ip = "192.168.0.254" + dns_nameservers = ["8.8.8.8"] +} + +resource "openstack_networking_router_v2" "jup_ng_router" { + name = "jup-ng" + external_network_id = data.openstack_networking_network_v2.private.id +} + +resource "openstack_networking_router_interface_v2" "jup_ng_interface" { + router_id = openstack_networking_router_v2.jup_ng_router.id + subnet_id = openstack_networking_subnet_v2.intra_subnet.id +} + +resource "openstack_networking_router_route_v2" "router_route_1" { + depends_on = [openstack_networking_router_interface_v2.jup_ng_interface] + router_id = openstack_networking_router_v2.jup_ng_router.id + destination_cidr = "157.136.248.0/21" + next_hop = "157.136.248.1" +} diff --git a/resources__openstack_networking_port_v2.tf b/resources__openstack_networking_port_v2.tf index 989bba0..d5517d0 100644 --- a/resources__openstack_networking_port_v2.tf +++ b/resources__openstack_networking_port_v2.tf @@ -1,6 +1,17 @@ + +resource "openstack_networking_subnet_route_v2" "subnet_route_1" { + subnet_id = openstack_networking_subnet_v2.intra_subnet.id + destination_cidr = "157.136.248.0/21" + next_hop = "157.136.248.1" +} + resource openstack_networking_port_v2 instance { name = local.INSTANCE_FQDN - network_id = data.openstack_networking_network_v2.private.id + network_id = openstack_networking_network_v2.intra_network.id admin_state_up = "true" -} \ No newline at end of file + + fixed_ip { + subnet_id = openstack_networking_subnet_v2.intra_subnet.id + } +} diff --git a/resources__terraform_data.tf b/resources__terraform_data.tf index e129f2b..f20db87 100644 --- a/resources__terraform_data.tf +++ b/resources__terraform_data.tf @@ -9,7 +9,7 @@ resource terraform_data setup-base { connection { type = "ssh" agent = true - host = data.openstack_networking_floatingip_v2.instance.address + host = openstack_networking_floatingip_v2.instance.address user = var.REMOTE_USER } provisioner file { @@ -31,12 +31,12 @@ resource terraform_data setup-persistent-volume { terraform_data.setup-base ] - for_each = data.openstack_blockstorage_volume_v3.persistent-volumes + for_each = openstack_blockstorage_volume_v3.persistent-volumes connection { type = "ssh" agent = true - host = data.openstack_networking_floatingip_v2.instance.address + host = openstack_networking_floatingip_v2.instance.address user = var.REMOTE_USER } diff --git a/terraform__locals.tf b/terraform__locals.tf index 521fe38..d6131ba 100644 --- a/terraform__locals.tf +++ b/terraform__locals.tf @@ -4,6 +4,7 @@ locals { #NTP_SERVERS = jsondecode(var.NTP_SERVERS) #INSTANCE_FLAVOR = var.INSTANCE_FLAVOR INSTANCE_FQDN = var.INSTANCE_FQDN + INSTANCE_NETWORK = var.INSTANCE_NETWORK INSTANCE_SECGROUP = var.INSTANCE_SECGROUP DEFAULT_SECGROUP = var.DEFAULT_SECGROUP #INSTANCE_ROLE = var.INSTANCE_ROLE diff --git a/terraform__outputs.tf b/terraform__outputs.tf index 946b52e..4253845 100644 --- a/terraform__outputs.tf +++ b/terraform__outputs.tf @@ -1,5 +1,5 @@ output REMOTE_FQDN { - value = data.openstack_networking_floatingip_v2.instance.address + value = openstack_networking_floatingip_v2.instance.address } output REMOTE_USER { value = var.REMOTE_USER diff --git a/terraform__variables.tf b/terraform__variables.tf index 3772ce0..fc7a2a3 100644 --- a/terraform__variables.tf +++ b/terraform__variables.tf @@ -22,6 +22,9 @@ variable SSH_HOST_KEYS_DIR { variable INSTANCE_FQDN { type = string } +variable INSTANCE_NETWORK { + type = string +} variable INSTANCE_SECGROUP { type = string }