From e1ce3432d044fd0e416598fee5dc939b5ee3dff0 Mon Sep 17 00:00:00 2001 From: Jacob Wagner Date: Thu, 30 Aug 2018 10:43:42 -0500 Subject: [PATCH] Add ability to deploy Octavia load balancer service This commit enables the openstack Octavia load balancing service if the option is enabled. The Octavia service replaced the legacy Neutron LBAAS service. Change-Id: Ib820ec3c4a7f6c9116608140b59332d03cf4c451 --- multi-node-aio/playbooks/group_vars/all.yml | 6 ++++++ .../playbooks/host_vars/compute1.yml | 5 +++++ .../playbooks/host_vars/compute2.yml | 5 +++++ .../host_vars/example-host1.yml.example | 5 +++++ multi-node-aio/playbooks/host_vars/infra1.yml | 5 +++++ multi-node-aio/playbooks/host_vars/infra2.yml | 5 +++++ multi-node-aio/playbooks/host_vars/infra3.yml | 5 +++++ .../playbooks/osa/openstack_user_config.yml | 20 +++++++++++++++++++ .../pxe/configs/eni/vm-bridges.cfg.j2 | 8 ++++++++ 9 files changed, 64 insertions(+) diff --git a/multi-node-aio/playbooks/group_vars/all.yml b/multi-node-aio/playbooks/group_vars/all.yml index 7ae32dd9..25c21b03 100644 --- a/multi-node-aio/playbooks/group_vars/all.yml +++ b/multi-node-aio/playbooks/group_vars/all.yml @@ -141,11 +141,17 @@ mnaio_host_networks: inet_type: 'static' address: '10.0.244.1/22' iface_port: none + lbaas: + iface: 'vm-br-eth6' + inet_type: 'static' + address: '10.0.232.1/22' + iface_port: none osa_enable_infra: true osa_enable_identity: true osa_enable_block_storage: true osa_enable_image: true +osa_enable_lbaas: false osa_enable_compute: true osa_enable_orchestration: true osa_enable_dashboard: true diff --git a/multi-node-aio/playbooks/host_vars/compute1.yml b/multi-node-aio/playbooks/host_vars/compute1.yml index 325d43b7..f81a0af3 100644 --- a/multi-node-aio/playbooks/host_vars/compute1.yml +++ b/multi-node-aio/playbooks/host_vars/compute1.yml @@ -46,3 +46,8 @@ server_networks: inet_type: 'static' address: '10.0.244.120/22' vm_int_iface: vm-br-eth5 + lbaas: + iface: 'eth6' + inet_type: 'static' + address: '10.0.232.120/22' + vm_int_iface: vm-br-eth6 \ No newline at end of file diff --git a/multi-node-aio/playbooks/host_vars/compute2.yml b/multi-node-aio/playbooks/host_vars/compute2.yml index 7e0ddab7..e650f1f7 100644 --- a/multi-node-aio/playbooks/host_vars/compute2.yml +++ b/multi-node-aio/playbooks/host_vars/compute2.yml @@ -46,3 +46,8 @@ server_networks: inet_type: 'static' address: '10.0.244.121/22' vm_int_iface: vm-br-eth5 + lbaas: + iface: 'eth6' + inet_type: 'static' + address: '10.0.232.121/22' + vm_int_iface: vm-br-eth6 \ No newline at end of file diff --git a/multi-node-aio/playbooks/host_vars/example-host1.yml.example b/multi-node-aio/playbooks/host_vars/example-host1.yml.example index 28d63520..fae64f1b 100644 --- a/multi-node-aio/playbooks/host_vars/example-host1.yml.example +++ b/multi-node-aio/playbooks/host_vars/example-host1.yml.example @@ -57,3 +57,8 @@ server_networks: # dict - required, hash of networks, can inet_type: 'manual' # str - required, iface type [static, dhcp, manual] address: '10.0.244.200/22' # str - not required, must be in CIDR format vm_int_iface: vm-br-eth5 # str - not Required, used to specify an integration networks interface when provisioning a VM + lbaas: + iface: 'eth6' # str - required, interface name + inet_type: 'static' # str - required, iface type [static, dhcp, manual] + address: '10.0.232.200/22' # str - not required, must be in CIDR format + vm_int_iface: vm-br-eth6 # str - not Required, used to specify an integration networks interface when provisioning a VM \ No newline at end of file diff --git a/multi-node-aio/playbooks/host_vars/infra1.yml b/multi-node-aio/playbooks/host_vars/infra1.yml index 96c050b2..5bd40a14 100644 --- a/multi-node-aio/playbooks/host_vars/infra1.yml +++ b/multi-node-aio/playbooks/host_vars/infra1.yml @@ -46,3 +46,8 @@ server_networks: # dict - required, hash of networks, can inet_type: 'static' # str - required, iface type [static, dhcp, manual] address: '10.0.244.100/22' # str - not required, must be in CIDR format vm_int_iface: vm-br-eth5 # str - not Required, used to specify an integration networks interface when provisioning a VM + lbaas: + iface: 'eth6' # str - required, interface name + inet_type: 'static' # str - required, iface type [static, dhcp, manual] + address: '10.0.232.100/22' # str - not required, must be in CIDR format + vm_int_iface: vm-br-eth6 # str - not Required, used to specify an integration networks interface when provisioning a VM diff --git a/multi-node-aio/playbooks/host_vars/infra2.yml b/multi-node-aio/playbooks/host_vars/infra2.yml index fa9641f2..b5c2ccf9 100644 --- a/multi-node-aio/playbooks/host_vars/infra2.yml +++ b/multi-node-aio/playbooks/host_vars/infra2.yml @@ -46,3 +46,8 @@ server_networks: inet_type: 'static' address: '10.0.244.101/22' vm_int_iface: vm-br-eth5 + lbaas: + iface: 'eth6' + inet_type: 'static' + address: '10.0.232.101/22' + vm_int_iface: vm-br-eth6 diff --git a/multi-node-aio/playbooks/host_vars/infra3.yml b/multi-node-aio/playbooks/host_vars/infra3.yml index 62c9002d..c2cab051 100644 --- a/multi-node-aio/playbooks/host_vars/infra3.yml +++ b/multi-node-aio/playbooks/host_vars/infra3.yml @@ -46,3 +46,8 @@ server_networks: inet_type: 'static' address: '10.0.244.102/22' vm_int_iface: vm-br-eth5 + lbaas: + iface: 'eth6' + inet_type: 'static' + address: '10.0.232.102/22' + vm_int_iface: vm-br-eth6 \ No newline at end of file diff --git a/multi-node-aio/playbooks/osa/openstack_user_config.yml b/multi-node-aio/playbooks/osa/openstack_user_config.yml index 6b950710..3cb70479 100644 --- a/multi-node-aio/playbooks/osa/openstack_user_config.yml +++ b/multi-node-aio/playbooks/osa/openstack_user_config.yml @@ -1,11 +1,13 @@ --- cidr_networks: + lbaas: 10.0.232.0/22 container: 10.0.236.0/22 tunnel: 10.0.240.0/22 storage: 10.0.244.0/22 flat: 10.0.248.0/22 used_ips: + - "10.0.232.0,10.0.232.200" - "10.0.236.0,10.0.236.200" - "10.0.240.0,10.0.240.200" - "10.0.244.0,10.0.244.200" @@ -69,6 +71,19 @@ global_overrides: - cinder_volume - nova_compute - swift_proxy + - network: + container_bridge: "br-lbaas" + container_type: "veth" + container_interface: "eth13" + ip_from_q: "lbaas" + type: "flat" + net_name: "lbaas" + group_binds: + - "neutron_linuxbridge_agent" + - "octavia-worker" + - "octavia-housekeeping" + - "octavia-health-monitor" + swift: part_power: 8 storage_network: 'br-storage' @@ -191,6 +206,11 @@ storage_hosts: *cinder_block image_hosts: *infra_block {% endif %} +{% if osa_enable_lbaas | bool %} +# octavia +octavia-infra_hosts: *infra_block +{% endif %} + {% if osa_enable_compute | bool %} # nova api, conductor, etc services compute-infra_hosts: *infra_block diff --git a/multi-node-aio/playbooks/pxe/configs/eni/vm-bridges.cfg.j2 b/multi-node-aio/playbooks/pxe/configs/eni/vm-bridges.cfg.j2 index 2a622bed..d3bebb82 100644 --- a/multi-node-aio/playbooks/pxe/configs/eni/vm-bridges.cfg.j2 +++ b/multi-node-aio/playbooks/pxe/configs/eni/vm-bridges.cfg.j2 @@ -24,6 +24,14 @@ iface br-{{ key }} inet {{ value.inet_type }} # Delete veth pair on DOWN post-down ip link del br-vlan-veth || true bridge_ports {{ value.iface }} br-veth-{{ key }} +{% elif value.iface is defined and key == "lbaas" %} + pre-up ip link add lb-veth-inbr type veth peer name lb-veth-ovrd || true + # Set both ends UP + pre-up ip link set lb-veth-inbr up + pre-up ip link set lb-veth-ovrd up + # Delete veth pair on DOWN + post-down ip link del br-vlan-veth || true + bridge_ports {{ value.iface }} lb-veth-inbr {% elif value.iface is defined %} bridge_ports {{ value.iface | default('none') }} {% else %}