From 94dec80705cf6612289baa6797b5cebe07ecfb52 Mon Sep 17 00:00:00 2001 From: Thomas O'Neill Date: Tue, 7 Mar 2017 16:39:59 +0000 Subject: [PATCH] Add neutron-bgp-dragent playbooks and sensible defaults. Depends-On: If7f5c80eb10a1c418785d9c659ae18bfecfcfe33 Change-Id: I9c54f01193b4e12338e71cd1f0a4635dcbfa43fe Implements: blueprint neutron-bgp-dragent --- ansible/group_vars/all.yml | 8 +++++ ansible/inventory/all-in-one | 3 ++ ansible/inventory/multinode | 3 ++ ansible/roles/neutron/defaults/main.yml | 21 +++++++++++ ansible/roles/neutron/handlers/main.yml | 25 +++++++++++++ ansible/roles/neutron/tasks/config.yml | 18 ++++++++++ .../neutron/templates/bgp_dragent.ini.j2 | 3 ++ .../templates/neutron-bgp-dragent.json.j2 | 36 +++++++++++++++++++ etc/kolla/globals.yml | 1 + ...-neutron-bgp-dragent-26838f8e8c8d37b2.yaml | 3 ++ 10 files changed, 121 insertions(+) create mode 100644 ansible/roles/neutron/templates/bgp_dragent.ini.j2 create mode 100644 ansible/roles/neutron/templates/neutron-bgp-dragent.json.j2 create mode 100644 releasenotes/notes/add-neutron-bgp-dragent-26838f8e8c8d37b2.yaml diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index fda731afac..d0233ecdc9 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -344,6 +344,7 @@ enable_neutron_lbaas: "no" enable_neutron_fwaas: "no" enable_neutron_qos: "no" enable_neutron_agent_ha: "no" +enable_neutron_bgp_dragent: "no" enable_nova_serialconsole_proxy: "no" enable_octavia: "no" enable_panko: "no" @@ -473,6 +474,13 @@ cloudkitty_collector_backend: "ceilometer" designate_backend: "bind9" designate_ns_record: "sample.openstack.org" + +####################### +# Neutron options +####################### +neutron_bgp_router_id: "1.1.1.1" + + ####################### # Nova options ####################### diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one index e42742d239..5b56eb53fc 100644 --- a/ansible/inventory/all-in-one +++ b/ansible/inventory/all-in-one @@ -236,6 +236,9 @@ neutron [neutron-vpnaas-agent:children] neutron +[neutron-bgp-dragent:children] +neutron + # Ceph [ceph-mon:children] ceph diff --git a/ansible/inventory/multinode b/ansible/inventory/multinode index 37484dc495..24914e57d8 100644 --- a/ansible/inventory/multinode +++ b/ansible/inventory/multinode @@ -253,6 +253,9 @@ neutron [neutron-vpnaas-agent:children] neutron +[neutron-bgp-dragent:children] +neutron + # Ceph [ceph-mon:children] ceph diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml index 6c247bf727..37ffc108d6 100644 --- a/ansible/roles/neutron/defaults/main.yml +++ b/ansible/roles/neutron/defaults/main.yml @@ -212,6 +212,21 @@ neutron_services: - "/lib/modules:/lib/modules:ro" - "neutron_metadata_socket:/var/lib/neutron/kolla/" - "kolla_logs:/var/log/kolla/" + neutron-bgp-dragent: + container_name: "neutron_bgp_dragent" + image: "{{ neutron_bgp_dragent_image_full }}" + privileged: True + enabled: "{{ enable_neutron_bgp_dragent | bool }}" + group: "neutron-bgp-dragent" + host_in_groups: "{{ False if orchestration_engine == 'KUBERNETES' else inventory_hostname in groups['neutron-bgp-dragent'] }}" + volumes: + - "{{ node_config_directory }}/neutron-bgp-dragent/:{{ container_config_directory }}/:ro" + - "/etc/localtime:/etc/localtime:ro" + - "/run:/run:shared" + - "/run/netns/:/run/netns/:shared" + - "/lib/modules:/lib/modules:ro" + - "neutron_metadata_socket:/var/lib/neutron/kolla/" + - "kolla_logs:/var/log/kolla/" #################### @@ -261,6 +276,10 @@ neutron_vpnaas_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' neutron_vpnaas_agent_tag: "{{ openstack_release }}" neutron_vpnaas_agent_image_full: "{{ neutron_vpnaas_agent_image }}:{{ neutron_vpnaas_agent_tag }}" +neutron_bgp_dragent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-neutron-bgp-dragent" +neutron_bgp_dragent_tag: "{{ openstack_release }}" +neutron_bgp_dragent_image_full: "{{ neutron_bgp_dragent_image }}:{{ neutron_bgp_dragent_tag }}" + openvswitch_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-openvswitch-db-server" openvswitch_db_tag: "{{ openstack_release }}" openvswitch_db_image_full: "{{ openvswitch_db_image }}:{{ openvswitch_db_tag }}" @@ -318,5 +337,7 @@ service_plugins: enabled: true - name: "sfc" enabled: "{{ neutron_plugin_agent == 'sfc' }}" + - name: "neutron_dynamic_routing.services.bgp.bgp_plugin.BgpPlugin" + enabled: "{{ enable_neutron_bgp_dragent | bool }}" neutron_service_plugins: "{{ service_plugins|selectattr('enabled', 'equalto', true)|list }}" diff --git a/ansible/roles/neutron/handlers/main.yml b/ansible/roles/neutron/handlers/main.yml index f68c65b224..63d5b13d9e 100644 --- a/ansible/roles/neutron/handlers/main.yml +++ b/ansible/roles/neutron/handlers/main.yml @@ -359,3 +359,28 @@ or neutron_vpnaas_agent_ini | changed or policy_json | changed or neutron_vpnaas_agent_container | changed + +- name: Restart neutron-bgp-dragent container + vars: + service_name: "neutron-bgp-dragent" + service: "{{ neutron_services[service_name] }}" + config_json: "{{ neutron_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}" + neutron_conf: "{{ neutron_confs.results|selectattr('item.key', 'equalto', service_name)|first }}" + policy_json: "{{ policy_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}" + neutron_bgp_dragent_container: "{{ check_neutron_containers.results|selectattr('item.key', 'equalto', service_name)|first }}" + kolla_docker: + action: "recreate_or_restart_container" + common_options: "{{ docker_common_options }}" + name: "{{ service.container_name }}" + image: "{{ service.image }}" + volumes: "{{ service.volumes }}" + privileged: "{{ service.privileged | default(False) }}" + when: + - action != "config" + - service.enabled | bool + - service.host_in_groups | bool + - config_json | changed + or neutron_conf | changed + or neutron_bgp_dragent_ini | changed + or policy_json | changed + or neutron_bgp_dragent_container | changed diff --git a/ansible/roles/neutron/tasks/config.yml b/ansible/roles/neutron/tasks/config.yml index d7411b31b5..c80f55af5a 100644 --- a/ansible/roles/neutron/tasks/config.yml +++ b/ansible/roles/neutron/tasks/config.yml @@ -47,6 +47,7 @@ - "neutron-server" - "neutron-lbaas-agent" - "neutron-vpnaas-agent" + - "neutron-bgp-dragent" merge_configs: sources: - "{{ role_path }}/templates/neutron.conf.j2" @@ -251,6 +252,22 @@ notify: - "Restart {{ service_name }} container" +- name: Copying over bgp_dragent.ini + vars: + service_name: "neutron-bgp-dragent" + neutron_bgp_dragent: "{{ neutron_services['neutron-bgp-dragent'] }}" + merge_configs: + sources: + - "{{ role_path }}/templates/bgp_dragent.ini.j2" + - "{{ node_custom_config }}/neutron/bgp_dragent.ini" + dest: "{{ node_config_directory }}/{{ service_name }}/bgp_dragent.ini" + register: neutron_bgp_dragent_ini + when: + - neutron_bgp_dragent.enabled | bool + - neutron_bgp_dragent.host_in_groups | bool + notify: + - "Restart {{ service_name }} container" + - name: Check if policies shall be overwritten local_action: stat path="{{ node_custom_config }}/neutron/policy.json" register: neutron_policy @@ -267,6 +284,7 @@ - "neutron-server" - "neutron-lbaas-agent" - "neutron-vpnaas-agent" + - "neutron-bgp-dragent" template: src: "{{ node_custom_config }}/neutron/policy.json" dest: "{{ node_config_directory }}/{{ service_name }}/policy.json" diff --git a/ansible/roles/neutron/templates/bgp_dragent.ini.j2 b/ansible/roles/neutron/templates/bgp_dragent.ini.j2 new file mode 100644 index 0000000000..89ffbe45ac --- /dev/null +++ b/ansible/roles/neutron/templates/bgp_dragent.ini.j2 @@ -0,0 +1,3 @@ +[BGP] +bgp_speaker_driver = neutron_dynamic_routing.services.bgp.agent.driver.ryu.driver.RyuBgpDriver +bgp_router_id = {{ neutron_bgp_router_id }} diff --git a/ansible/roles/neutron/templates/neutron-bgp-dragent.json.j2 b/ansible/roles/neutron/templates/neutron-bgp-dragent.json.j2 new file mode 100644 index 0000000000..bfc514ffb5 --- /dev/null +++ b/ansible/roles/neutron/templates/neutron-bgp-dragent.json.j2 @@ -0,0 +1,36 @@ +{ + "command": "neutron-bgp-dragent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/bgp_dragent.ini", + "config_files": [ + { + "source": "{{ container_config_directory }}/neutron.conf", + "dest": "/etc/neutron/neutron.conf", + "owner": "neutron", + "perm": "0600" + }, + { + "source": "{{ container_config_directory }}/bgp_dragent.ini", + "dest": "/etc/neutron/bgp_dragent.ini", + "owner": "neutron", + "perm": "0600" + }, + { + "source": "{{ container_config_directory }}/policy.json", + "dest": "/etc/neutron/policy.json", + "owner": "neutron", + "perm": "0600", + "optional": true + } + ], + "permissions": [ + { + "path": "/var/log/kolla/neutron", + "owner": "neutron:neutron", + "recurse": true + }, + { + "path": "/var/lib/neutron/kolla", + "owner": "neutron:neutron", + "recurse": true + } + ] +} diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index a36867168d..afa6dba6de 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -170,6 +170,7 @@ kolla_internal_vip_address: "10.10.10.254" #enable_mongodb: "no" #enable_murano: "no" #enable_multipathd: "no" +#enable_neutron_bgp_dragent: "no" #enable_neutron_dvr: "no" #enable_neutron_lbaas: "no" #enable_neutron_fwaas: "no" diff --git a/releasenotes/notes/add-neutron-bgp-dragent-26838f8e8c8d37b2.yaml b/releasenotes/notes/add-neutron-bgp-dragent-26838f8e8c8d37b2.yaml new file mode 100644 index 0000000000..5ab87ef1da --- /dev/null +++ b/releasenotes/notes/add-neutron-bgp-dragent-26838f8e8c8d37b2.yaml @@ -0,0 +1,3 @@ +--- +features: + - Added playbooks and default configuration for neutron-bgp-dragent service