Skip to content

Instantly share code, notes, and snippets.

@kayrus
Last active March 25, 2019 05:49
Show Gist options
  • Save kayrus/28b91d0df292ba5d72425c952a701be4 to your computer and use it in GitHub Desktop.
Save kayrus/28b91d0df292ba5d72425c952a701be4 to your computer and use it in GitHub Desktop.
Terraform configuration for vlan on bonding automation for SLES12
provider "openstack" {
version = ">= 1.17.0"
}
variable "private_net" {
default = "private"
}
variable "backup_net" {
default = "private-backup"
}
variable "server" {
default = "my-baremetal"
}
data "openstack_networking_network_v2" "private" {
name = "${var.private_net}"
}
data "openstack_networking_network_v2" "backup" {
name = "${var.backup_net}"
}
locals {
lbrace = "{"
rbrace = "}"
}
data "openstack_networking_port_ids_v2" "bm_ports" {
dns_name = "${var.server}"
network_id = "${data.openstack_networking_network_v2.private.id}"
}
data "openstack_networking_port_v2" "bm_ports" {
count = "${length(data.openstack_networking_port_ids_v2.bm_ports.ids)}"
port_id = "${data.openstack_networking_port_ids_v2.bm_ports.ids[count.index]}"
}
data "null_data_source" "tmp" {
count = "${length(data.openstack_networking_port_ids_v2.bm_ports.ids)}"
inputs = {
profile = "${replace(data.openstack_networking_port_v2.bm_ports.*.binding.0.profile[count.index], "/^\\[|]$|^${local.lbrace}\"local_link_information\":\\[|\\]${local.rbrace}$/", "")}"
}
}
resource "openstack_networking_port_v2" "bm_backup_port" {
network_id = "${data.openstack_networking_network_v2.backup.id}"
device_id = "${data.openstack_networking_port_v2.bm_ports.*.device_id[0]}"
device_owner = "${data.openstack_networking_port_v2.bm_ports.*.device_owner[0]}"
admin_state_up = "true"
binding = {
host_id = "${data.openstack_networking_port_v2.bm_ports.*.binding.0.host_id[0]}"
vnic_type = "${data.openstack_networking_port_v2.bm_ports.*.binding.0.vnic_type[0]}"
profile = "${format("${local.lbrace}\"local_link_information\":[%s],\"vlan_type\":\"allowed\"${local.rbrace}", join(",",data.null_data_source.tmp.*.outputs.profile))}"
}
}
data "template_file" "bond0_backup" {
template = <<EOF
DEVICE='bond0.backup'
ETHERDEVICE=bond0
BOOTPROTO=dhcp
STARTMODE=auto
MTU=${data.openstack_networking_network_v2.private.mtu}
LLADDR=${openstack_networking_port_v2.bm_backup_port.mac_address}
VLAN_ID=${openstack_networking_port_v2.bm_backup_port.binding.0.vif_details.vlan}
EOF
}
output "ifcfg" {
value = "${data.template_file.bond0_backup.rendered}"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment