From ba30579b3b3e69536f5bd59e57d39ed4b63a2dd6 Mon Sep 17 00:00:00 2001 From: Daneyon Hansen Date: Tue, 10 May 2016 20:26:58 +0000 Subject: [PATCH] Adds Neutron LBaaS Support Previously, kolla did not support neutron lbaas functionality. Only Lbaasv2 is supported in Mitaka. Additional information can be found here: http://docs.openstack.org/mitaka/networking-guide/adv-config-lbaas.html Magnum uses Neutron Lbaas to provide high availability to COE API and Etcd endpoints within a bay. Therefore, Neutron Lbaas is required for Kolla to support Magnum. Co-Authored-By: Serguei Bezverkhi Partial-Bug: #1551992 Change-Id: I05360b7c447c601fcb3c2b6b2a913ef5cc0f3a1b --- ansible/group_vars/all.yml | 1 + ansible/inventory/all-in-one | 3 ++ ansible/inventory/multinode | 3 ++ ansible/roles/neutron/defaults/main.yml | 4 ++ .../roles/neutron/tasks/bootstrap_service.yml | 23 +++++++++ ansible/roles/neutron/tasks/config.yml | 14 +++++ ansible/roles/neutron/tasks/deploy.yml | 2 + .../roles/neutron/tasks/do_reconfigure.yml | 20 ++++++++ ansible/roles/neutron/tasks/reconfigure.yml | 1 + ansible/roles/neutron/tasks/start.yml | 17 +++++++ ansible/roles/neutron/tasks/upgrade.yml | 2 + .../neutron/templates/lbaas_agent.ini.j2 | 17 +++++++ .../templates/neutron-lbaas-agent.json.j2 | 17 +++++++ .../roles/neutron/templates/neutron.conf.j2 | 7 ++- ansible/site.yml | 1 + docker/neutron/neutron-base/Dockerfile.j2 | 2 + .../neutron/neutron-lbaas-agent/Dockerfile.j2 | 51 +++++++++++++++++++ .../neutron-lbaas-agent/extend_start.sh | 8 +++ docker/neutron/neutron-server/Dockerfile.j2 | 17 +++++++ etc/kolla/globals.yml | 1 + kolla/common/config.py | 4 ++ .../add-neutron-lbaas-dbb92dada9d34ceb.yaml | 3 ++ 22 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 ansible/roles/neutron/templates/lbaas_agent.ini.j2 create mode 100644 ansible/roles/neutron/templates/neutron-lbaas-agent.json.j2 create mode 100644 docker/neutron/neutron-lbaas-agent/Dockerfile.j2 create mode 100644 docker/neutron/neutron-lbaas-agent/extend_start.sh create mode 100644 releasenotes/notes/add-neutron-lbaas-dbb92dada9d34ceb.yaml diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 17e1f6897f..8aeabcaaaa 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -204,6 +204,7 @@ enable_manila: "no" enable_mistral: "no" enable_mongodb: "no" enable_murano: "no" +enable_neutron_lbaas: "no" enable_swift: "no" ironic_keystone_user: "ironic" diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one index a33dc4d5c4..dfa852985b 100644 --- a/ansible/inventory/all-in-one +++ b/ansible/inventory/all-in-one @@ -130,6 +130,9 @@ neutron [neutron-l3-agent:children] neutron +[neutron-lbaas-agent:children] +neutron + [neutron-metadata-agent:children] neutron diff --git a/ansible/inventory/multinode b/ansible/inventory/multinode index e3434ced85..a662fcf602 100644 --- a/ansible/inventory/multinode +++ b/ansible/inventory/multinode @@ -142,6 +142,9 @@ neutron [neutron-l3-agent:children] neutron +[neutron-lbaas-agent:children] +neutron + [neutron-metadata-agent:children] neutron diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml index a8660cab1f..80c6ed43ea 100644 --- a/ansible/roles/neutron/defaults/main.yml +++ b/ansible/roles/neutron/defaults/main.yml @@ -20,6 +20,10 @@ neutron_l3_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{ neutron_l3_agent_tag: "{{ openstack_release }}" neutron_l3_agent_image_full: "{{ neutron_l3_agent_image }}:{{ neutron_l3_agent_tag }}" +neutron_lbaas_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-neutron-lbaas-agent" +neutron_lbaas_agent_tag: "{{ openstack_release }}" +neutron_lbaas_agent_image_full: "{{ neutron_lbaas_agent_image }}:{{ neutron_lbaas_agent_tag }}" + neutron_linuxbridge_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-neutron-linuxbridge-agent" neutron_linuxbridge_agent_tag: "{{ openstack_release }}" neutron_linuxbridge_agent_image_full: "{{ neutron_linuxbridge_agent_image }}:{{ neutron_linuxbridge_agent_tag }}" diff --git a/ansible/roles/neutron/tasks/bootstrap_service.yml b/ansible/roles/neutron/tasks/bootstrap_service.yml index 534c451463..b654e56b2e 100644 --- a/ansible/roles/neutron/tasks/bootstrap_service.yml +++ b/ansible/roles/neutron/tasks/bootstrap_service.yml @@ -18,3 +18,26 @@ - "kolla_logs:/var/log/kolla/" run_once: True delegate_to: "{{ groups['neutron-server'][0] }}" + +- name: Running Neutron lbaas bootstrap container + kolla_docker: + action: "start_container" + common_options: "{{ docker_common_options }}" + detach: False + environment: + KOLLA_BOOTSTRAP: + KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" + image: "{{ neutron_lbaas_agent_image_full }}" + labels: + BOOTSTRAP: + name: "bootstrap_neutron_lbaas_agent" + restart_policy: "never" + volumes: + - "{{ node_config_directory }}/neutron-lbaas-agent/:{{ container_config_directory }}/:ro" + - "/etc/localtime:/etc/localtime:ro" + - "kolla_logs:/var/log/kolla/" + when: + - enable_neutron_lbaas | bool + - inventory_hostname in groups['neutron-lbaas-agent'] + run_once: True + delegate_to: "{{ groups['neutron-lbaas-agent'][0] }}" diff --git a/ansible/roles/neutron/tasks/config.yml b/ansible/roles/neutron/tasks/config.yml index 84dd3d5c71..e99e446c20 100644 --- a/ansible/roles/neutron/tasks/config.yml +++ b/ansible/roles/neutron/tasks/config.yml @@ -23,6 +23,7 @@ - "neutron-server" - "openvswitch-db-server" - "openvswitch-vswitchd" + - "neutron-lbaas-agent" - name: Copying over config.json files for services template: @@ -37,6 +38,7 @@ - "neutron-server" - "openvswitch-db-server" - "openvswitch-vswitchd" + - "neutron-lbaas-agent" - name: Copying over neutron.conf merge_configs: @@ -58,6 +60,7 @@ - "neutron-metadata-agent" - "neutron-openvswitch-agent" - "neutron-server" + - "neutron-lbaas-agent" - name: Copying over ml2_conf.ini merge_configs: @@ -126,3 +129,14 @@ dest: "{{ node_config_directory }}/{{ item }}/metadata_agent.ini" with_items: - "neutron-metadata-agent" + +- name: Copying over lbaas_agent.ini + merge_configs: + vars: + service_name: "{{ item }}" + sources: + - "{{ role_path }}/templates/lbaas_agent.ini.j2" + - "/etc/kolla/config/neutron/lbaas_agent.ini" + dest: "{{ node_config_directory }}/{{ item }}/lbaas_agent.ini" + with_items: + - "neutron-lbaas-agent" diff --git a/ansible/roles/neutron/tasks/deploy.yml b/ansible/roles/neutron/tasks/deploy.yml index 1c2f1161db..13d0d9d30c 100644 --- a/ansible/roles/neutron/tasks/deploy.yml +++ b/ansible/roles/neutron/tasks/deploy.yml @@ -12,6 +12,7 @@ or inventory_hostname in groups['neutron-l3-agent'] or inventory_hostname in groups['neutron-metadata-agent'] or inventory_hostname in groups['neutron-server'] + or inventory_hostname in groups['neutron-lbaas-agent'] - include: config-neutron-fake.yml when: @@ -28,3 +29,4 @@ or inventory_hostname in groups['neutron-l3-agent'] or inventory_hostname in groups['neutron-metadata-agent'] or inventory_hostname in groups['neutron-server'] + or inventory_hostname in groups['neutron-lbaas-agent'] diff --git a/ansible/roles/neutron/tasks/do_reconfigure.yml b/ansible/roles/neutron/tasks/do_reconfigure.yml index ebe2edee59..bd2f72ecad 100644 --- a/ansible/roles/neutron/tasks/do_reconfigure.yml +++ b/ansible/roles/neutron/tasks/do_reconfigure.yml @@ -10,6 +10,7 @@ - { name: neutron_server, group: neutron-server } - { name: neutron_dhcp_agent, group: neutron-dhcp-agent } - { name: neutron_l3_agent, group: neutron-l3-agent } + - { name: neutron_lbaas_agent, group: neutron-lbaas-agent } - { name: neutron_metadata_agent, group: neutron-metadata-agent } - name: Ensuring the neutron_openvswitch_agent container is up @@ -25,11 +26,13 @@ or (enable_manila | bool and inventory_hostname in groups['manila-share']) or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] and not enable_nova_fake | bool ) or ( inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] and enable_nova_fake | bool ) @@ -47,6 +50,7 @@ or (enable_manila | bool and inventory_hostname in groups['manila-share']) or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent']) - include: config.yml @@ -61,6 +65,7 @@ - { name: neutron_server, group: neutron-server } - { name: neutron_dhcp_agent, group: neutron-dhcp-agent } - { name: neutron_l3_agent, group: neutron-l3-agent } + - { name: neutron_lbaas_agent, group: neutron-lbaas-agent } - { name: neutron_metadata_agent, group: neutron-metadata-agent } - name: Check the configs in the neutron_openvswitch_agent container @@ -75,11 +80,13 @@ or (enable_manila | bool and inventory_hostname in groups['manila-share']) or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] and not enable_nova_fake | bool ) or ( inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] and enable_nova_fake | bool ) @@ -96,6 +103,7 @@ or (enable_manila | bool and inventory_hostname in groups['manila-share']) or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent']) # NOTE(jeffrey4l): when config_strategy == 'COPY_ALWAYS' @@ -111,6 +119,7 @@ - { name: neutron_server, group: neutron-server } - { name: neutron_dhcp_agent, group: neutron-dhcp-agent } - { name: neutron_l3_agent, group: neutron-l3-agent } + - { name: neutron_lbaas_agent, group: neutron-lbaas-agent } - { name: neutron_metadata_agent, group: neutron-metadata-agent } - name: Container config strategy for the neutron_openvswitch_agent container @@ -126,11 +135,13 @@ or (enable_manila | bool and inventory_hostname in groups['manila-share']) or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] ) or ( enable_nova_fake | bool and inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] ) ) @@ -146,6 +157,7 @@ or (enable_manila | bool and inventory_hostname in groups['manila-share']) or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent']) - name: Remove the containers running neutron-server and neutron agents @@ -161,6 +173,7 @@ - [{ name: neutron_server, group: neutron-server }, { name: neutron_dhcp_agent, group: neutron-dhcp-agent }, { name: neutron_l3_agent, group: neutron-l3-agent }, + { name: neutron_lbaas_agent, group: neutron-lbaas-agent }, { name: neutron_metadata_agent, group: neutron-metadata-agent }] - neutron_container_envs.results - neutron_check_results.results @@ -178,11 +191,13 @@ or (enable_manila | bool and inventory_hostname in groups['manila-share']) or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] ) or ( enable_nova_fake | bool and inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] ) ) @@ -200,6 +215,7 @@ or inventory_hostname in groups['manila-share'] or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent']) - config_strategy == "COPY_ONCE" or linuxbridge_agent_envs['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE' - linuxbridge_agent_check_results['rc'] == 1 @@ -222,6 +238,7 @@ - [{ name: neutron_server, group: neutron-server }, { name: neutron_dhcp_agent, group: neutron-dhcp-agent }, { name: neutron_l3_agent, group: neutron-l3-agent }, + { name: neutron_lbaas_agent, group: neutron-lbaas-agent }, { name: neutron_metadata_agent, group: neutron-metadata-agent }] - neutron_container_envs.results - neutron_check_results.results @@ -238,11 +255,13 @@ or (enable_manila | bool and inventory_hostname in groups['manila-share']) or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] and not enable_nova_fake | bool ) or ( inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] and enable_nova_fake | bool ) @@ -261,6 +280,7 @@ or (enable_manila | bool and inventory_hostname in groups['manila-share']) or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent']) - linuxbridge_agent_envs['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE' - linuxbridge_agent_check_results['rc'] == 1 diff --git a/ansible/roles/neutron/tasks/reconfigure.yml b/ansible/roles/neutron/tasks/reconfigure.yml index e51969c572..0cac05ddad 100644 --- a/ansible/roles/neutron/tasks/reconfigure.yml +++ b/ansible/roles/neutron/tasks/reconfigure.yml @@ -6,4 +6,5 @@ or inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] diff --git a/ansible/roles/neutron/tasks/start.yml b/ansible/roles/neutron/tasks/start.yml index 2463eb927d..ee37e8d15f 100644 --- a/ansible/roles/neutron/tasks/start.yml +++ b/ansible/roles/neutron/tasks/start.yml @@ -185,6 +185,23 @@ when: - inventory_hostname in groups['neutron-l3-agent'] +- name: Starting neutron-lbaas-agent container + kolla_docker: + action: "start_container" + common_options: "{{ docker_common_options }}" + image: "{{ neutron_lbaas_agent_image_full }}" + name: "neutron_lbaas_agent" + privileged: True + volumes: + - "{{ node_config_directory }}/neutron-lbaas-agent/:{{ container_config_directory }}/:ro" + - "/run:/run" + - "/run/netns/:/run/netns/:shared" + - "neutron_metadata_socket:/var/lib/neutron/kolla/" + - "kolla_logs:/var/log/kolla/" + when: + - enable_neutron_lbaas | bool + - inventory_hostname in groups['neutron-lbaas-agent'] + - name: Starting neutron-metadata-agent container kolla_docker: action: "start_container" diff --git a/ansible/roles/neutron/tasks/upgrade.yml b/ansible/roles/neutron/tasks/upgrade.yml index 08f57269df..a904606dac 100644 --- a/ansible/roles/neutron/tasks/upgrade.yml +++ b/ansible/roles/neutron/tasks/upgrade.yml @@ -3,6 +3,7 @@ when: inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] or inventory_hostname in groups['neutron-server'] @@ -19,5 +20,6 @@ when: inventory_hostname in groups['compute'] or inventory_hostname in groups['neutron-dhcp-agent'] or inventory_hostname in groups['neutron-l3-agent'] + or inventory_hostname in groups['neutron-lbaas-agent'] or inventory_hostname in groups['neutron-metadata-agent'] or inventory_hostname in groups['neutron-server'] diff --git a/ansible/roles/neutron/templates/lbaas_agent.ini.j2 b/ansible/roles/neutron/templates/lbaas_agent.ini.j2 new file mode 100644 index 0000000000..182e26d3e5 --- /dev/null +++ b/ansible/roles/neutron/templates/lbaas_agent.ini.j2 @@ -0,0 +1,17 @@ +[DEFAULT] +debug = {{ neutron_logging_debug }} +verbose = True + +output_file = /etc/neutron/lbaas_agent.ini +wrap_width = 79 + +{% if neutron_plugin_agent == "openvswitch" %} +interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver +{% elif neutron_plugin_agent == "linuxbridge" %} +interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver +{% endif %} + +device_driver = neutron_lbaas.drivers.haproxy.namespace_driver.HaproxyNSDriver + +[haproxy] +user_group = haproxy diff --git a/ansible/roles/neutron/templates/neutron-lbaas-agent.json.j2 b/ansible/roles/neutron/templates/neutron-lbaas-agent.json.j2 new file mode 100644 index 0000000000..541a25524b --- /dev/null +++ b/ansible/roles/neutron/templates/neutron-lbaas-agent.json.j2 @@ -0,0 +1,17 @@ +{ + "command": "neutron-lbaasv2-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/lbaas_agent.ini", + "config_files": [ + { + "source": "{{ container_config_directory }}/neutron.conf", + "dest": "/etc/neutron/neutron.conf", + "owner": "neutron", + "perm": "0600" + }, + { + "source": "{{ container_config_directory }}/lbaas_agent.ini", + "dest": "/etc/neutron/lbaas_agent.ini", + "owner": "neutron", + "perm": "0600" + } + ] +} diff --git a/ansible/roles/neutron/templates/neutron.conf.j2 b/ansible/roles/neutron/templates/neutron.conf.j2 index 6a8d7ab73c..a15a0007df 100644 --- a/ansible/roles/neutron/templates/neutron.conf.j2 +++ b/ansible/roles/neutron/templates/neutron.conf.j2 @@ -32,7 +32,12 @@ host = {{ ansible_hostname }}_{{ item }} allow_overlapping_ips = true core_plugin = ml2 -service_plugins = router +service_plugins = router{% if enable_neutron_lbaas | bool %},neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2{% endif %} + +{% if enable_neutron_lbaas | bool %} +[service_providers] +service_provider = LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default +{% endif %} [nova] auth_url = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_admin_port }} diff --git a/ansible/site.yml b/ansible/site.yml index a23196204c..aca74fe0f0 100644 --- a/ansible/site.yml +++ b/ansible/site.yml @@ -119,6 +119,7 @@ - neutron-server - neutron-dhcp-agent - neutron-l3-agent + - neutron-lbaas-agent - neutron-metadata-agent - compute - manila-share diff --git a/docker/neutron/neutron-base/Dockerfile.j2 b/docker/neutron/neutron-base/Dockerfile.j2 index b89a9ad46f..44d761d4ad 100644 --- a/docker/neutron/neutron-base/Dockerfile.j2 +++ b/docker/neutron/neutron-base/Dockerfile.j2 @@ -8,6 +8,7 @@ RUN yum -y install \ openstack-neutron \ openstack-neutron-ml2 \ openvswitch \ + openstack-neutron-lbaas \ && yum clean all {% elif base_distro in ['ubuntu'] %} @@ -16,6 +17,7 @@ RUN apt-get -y install --no-install-recommends \ neutron-plugin-ml2 \ neutron-server \ openvswitch-switch \ + neutron-lbaas \ && apt-get clean \ && mkdir -p /usr/share/neutron \ && ln -s /etc/neutron/api-paste.ini /usr/share/neutron/api-paste.ini diff --git a/docker/neutron/neutron-lbaas-agent/Dockerfile.j2 b/docker/neutron/neutron-lbaas-agent/Dockerfile.j2 new file mode 100644 index 0000000000..2965309b2b --- /dev/null +++ b/docker/neutron/neutron-lbaas-agent/Dockerfile.j2 @@ -0,0 +1,51 @@ +FROM {{ namespace }}/{{ image_prefix }}neutron-base:{{ tag }} +MAINTAINER {{ maintainer }} + +{% if base_distro in ['centos', 'fedora', 'oraclelinux', 'rhel'] %} + +RUN yum -y install \ + haproxy \ + && yum clean all + +{% elif base_distro in ['ubuntu'] %} + +RUN apt-get -y install --no-install-recommends \ + haproxy \ + && apt-get clean + +{% endif %} + +{% if install_type == 'binary' %} + {% if base_distro in ['centos', 'fedora', 'oraclelinux', 'rhel'] %} + +RUN yum -y install \ + openstack-neutron-lbaas \ + && yum clean all + + {% elif base_distro in ['ubuntu'] %} + +RUN apt-get -y install --no-install-recommends \ + neutron-lbaas-common \ + neutron-lbaasv2-agent \ + python-neutron-lbaas \ + && apt-get clean \ + + {% endif %} + +{% elif install_type == 'source' %} + +ADD neutron-lbaas-agent-archive /neutron-lbaas-agent-source +RUN ln -s neutron-lbaas-agent-source/* neutron_lbaas \ + && /var/lib/kolla/venv/bin/pip --no-cache-dir install --upgrade -c requirements/upper-constraints.txt /neutron_lbaas \ + && cp -r /neutron_lbaas/etc/* /etc/neutron/ \ + && cp -r /neutron_lbaas/etc/neutron/* /etc/neutron/ \ + && sed -i 's|^exec_dirs.*|exec_dirs=/var/lib/kolla/venv/bin,/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin,/usr/local/sbin|g' /etc/neutron/rootwrap.conf + +{% endif %} + +COPY extend_start.sh /usr/local/bin/kolla_neutron_extend_start +RUN chmod 755 /usr/local/bin/kolla_neutron_extend_start + +{{ include_footer }} + +USER neutron diff --git a/docker/neutron/neutron-lbaas-agent/extend_start.sh b/docker/neutron/neutron-lbaas-agent/extend_start.sh new file mode 100644 index 0000000000..6a1f960363 --- /dev/null +++ b/docker/neutron/neutron-lbaas-agent/extend_start.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases +# of the KOLLA_BOOTSTRAP variable being set, including empty. +if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then + neutron-db-manage --service lbaas --config-file /etc/neutron/neutron.conf upgrade head + exit 0 +fi diff --git a/docker/neutron/neutron-server/Dockerfile.j2 b/docker/neutron/neutron-server/Dockerfile.j2 index 6fbfb2e2df..18edabe129 100644 --- a/docker/neutron/neutron-server/Dockerfile.j2 +++ b/docker/neutron/neutron-server/Dockerfile.j2 @@ -1,6 +1,23 @@ FROM {{ namespace }}/{{ image_prefix }}neutron-base:{{ tag }} MAINTAINER {{ maintainer }} +{% if install_type == 'binary' %} + {% if base_distro in ['centos', 'fedora', 'oraclelinux', 'rhel'] %} + +RUN yum -y install \ + openstack-neutron-lbaas \ + && yum clean all + + {% elif base_distro in ['ubuntu'] %} + +RUN apt-get -y install --no-install-recommends \ + neutron-lbaas-common \ + neutron-lbaasv2-agent \ + python-neutron-lbaas \ + && apt-get clean \ + {% endif %} +{% endif %} + ADD plugins-archive / COPY extend_start.sh /usr/local/bin/kolla_neutron_extend_start RUN chmod 755 /usr/local/bin/kolla_neutron_extend_start \ diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index c440772005..c32aa87db5 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -118,6 +118,7 @@ neutron_external_interface: "eth1" #enable_mistral: "no" #enable_mongodb: "no" #enable_murano: "no" +#enable_neutron_lbaas: "no" #enable_swift: "no" diff --git a/kolla/common/config.py b/kolla/common/config.py index 83ccfb0fb6..dbe6394f82 100644 --- a/kolla/common/config.py +++ b/kolla/common/config.py @@ -217,6 +217,10 @@ SOURCES = { 'type': 'url', 'location': ('http://tarballs.openstack.org/neutron/' 'neutron-master.tar.gz')}, + 'neutron-lbaas-agent': { + 'type': 'url', + 'location': ('http://tarballs.openstack.org/neutron-lbaas/' + 'neutron-lbaas-master.tar.gz')}, 'nova-base': { 'type': 'url', 'location': ('http://tarballs.openstack.org/nova/' diff --git a/releasenotes/notes/add-neutron-lbaas-dbb92dada9d34ceb.yaml b/releasenotes/notes/add-neutron-lbaas-dbb92dada9d34ceb.yaml new file mode 100644 index 0000000000..85e415a40e --- /dev/null +++ b/releasenotes/notes/add-neutron-lbaas-dbb92dada9d34ceb.yaml @@ -0,0 +1,3 @@ +--- +features: + - Add support for LBaaSv2 with HAproxy container.