From 63a7968d8d968663c4a19be164a0bdfb641491ea Mon Sep 17 00:00:00 2001 From: Michal Nasiadka Date: Mon, 27 Jun 2022 13:38:16 +0200 Subject: ovn: Break out role into ovn-db and ovn-controller roles Instead of handling everything in one role - let's have small fit-for-purpose roles, because in reality these are two hosts roles and performance should be better with this approach. [1]: https://docs.ovn.org/en/latest/intro/install/ovn-upgrades.html Change-Id: I8f9dbe9d950323f16375ad5e1dbaedfb1be6585f --- ansible/roles/ovn-controller/defaults/main.yml | 38 +++++++++ ansible/roles/ovn-controller/handlers/main.yml | 15 ++++ .../ovn-controller/tasks/check-containers.yml | 16 ++++ ansible/roles/ovn-controller/tasks/config.yml | 26 ++++++ .../ovn-controller/tasks/deploy-containers.yml | 2 + ansible/roles/ovn-controller/tasks/deploy.yml | 9 +++ ansible/roles/ovn-controller/tasks/main.yml | 2 + ansible/roles/ovn-controller/tasks/precheck.yml | 1 + ansible/roles/ovn-controller/tasks/pull.yml | 3 + ansible/roles/ovn-controller/tasks/reconfigure.yml | 2 + ansible/roles/ovn-controller/tasks/setup-ovs.yml | 39 +++++++++ ansible/roles/ovn-controller/tasks/stop.yml | 6 ++ ansible/roles/ovn-controller/tasks/upgrade.yml | 2 + .../templates/ovn-controller.json.j2 | 10 +++ ansible/roles/ovn-controller/vars/main.yml | 6 ++ ansible/roles/ovn-db/defaults/main.yml | 65 +++++++++++++++ ansible/roles/ovn-db/handlers/main.yml | 73 +++++++++++++++++ ansible/roles/ovn-db/tasks/check-containers.yml | 16 ++++ ansible/roles/ovn-db/tasks/config.yml | 26 ++++++ ansible/roles/ovn-db/tasks/deploy-containers.yml | 2 + ansible/roles/ovn-db/tasks/deploy.yml | 7 ++ ansible/roles/ovn-db/tasks/main.yml | 2 + ansible/roles/ovn-db/tasks/precheck.yml | 31 ++++++++ ansible/roles/ovn-db/tasks/pull.yml | 3 + ansible/roles/ovn-db/tasks/reconfigure.yml | 2 + ansible/roles/ovn-db/tasks/stop.yml | 6 ++ ansible/roles/ovn-db/tasks/upgrade.yml | 2 + ansible/roles/ovn-db/templates/ovn-nb-db.json.j2 | 10 +++ ansible/roles/ovn-db/templates/ovn-northd.json.j2 | 10 +++ ansible/roles/ovn-db/templates/ovn-sb-db.json.j2 | 10 +++ ansible/roles/ovn-db/vars/main.yml | 6 ++ ansible/roles/ovn/defaults/main.yml | 93 ---------------------- ansible/roles/ovn/handlers/main.yml | 88 -------------------- ansible/roles/ovn/tasks/bootstrap.yml | 39 --------- ansible/roles/ovn/tasks/check-containers.yml | 16 ---- ansible/roles/ovn/tasks/check.yml | 1 - ansible/roles/ovn/tasks/config.yml | 26 ------ ansible/roles/ovn/tasks/deploy-containers.yml | 2 - ansible/roles/ovn/tasks/deploy.yml | 10 --- ansible/roles/ovn/tasks/main.yml | 2 - ansible/roles/ovn/tasks/precheck.yml | 31 -------- ansible/roles/ovn/tasks/pull.yml | 3 - ansible/roles/ovn/tasks/reconfigure.yml | 2 - ansible/roles/ovn/tasks/stop.yml | 6 -- ansible/roles/ovn/tasks/upgrade.yml | 7 -- ansible/roles/ovn/templates/ovn-controller.json.j2 | 10 --- ansible/roles/ovn/templates/ovn-nb-db.json.j2 | 10 --- ansible/roles/ovn/templates/ovn-northd.json.j2 | 10 --- ansible/roles/ovn/templates/ovn-sb-db.json.j2 | 10 --- ansible/roles/ovn/vars/main.yml | 2 - ansible/site.yml | 17 +++- .../notes/ovn-controller-ecb49695dc377e88.yaml | 7 ++ zuul.d/base.yaml | 2 +- 53 files changed, 469 insertions(+), 373 deletions(-) create mode 100644 ansible/roles/ovn-controller/defaults/main.yml create mode 100644 ansible/roles/ovn-controller/handlers/main.yml create mode 100644 ansible/roles/ovn-controller/tasks/check-containers.yml create mode 100644 ansible/roles/ovn-controller/tasks/config.yml create mode 100644 ansible/roles/ovn-controller/tasks/deploy-containers.yml create mode 100644 ansible/roles/ovn-controller/tasks/deploy.yml create mode 100644 ansible/roles/ovn-controller/tasks/main.yml create mode 100644 ansible/roles/ovn-controller/tasks/precheck.yml create mode 100644 ansible/roles/ovn-controller/tasks/pull.yml create mode 100644 ansible/roles/ovn-controller/tasks/reconfigure.yml create mode 100644 ansible/roles/ovn-controller/tasks/setup-ovs.yml create mode 100644 ansible/roles/ovn-controller/tasks/stop.yml create mode 100644 ansible/roles/ovn-controller/tasks/upgrade.yml create mode 100644 ansible/roles/ovn-controller/templates/ovn-controller.json.j2 create mode 100644 ansible/roles/ovn-controller/vars/main.yml create mode 100644 ansible/roles/ovn-db/defaults/main.yml create mode 100644 ansible/roles/ovn-db/handlers/main.yml create mode 100644 ansible/roles/ovn-db/tasks/check-containers.yml create mode 100644 ansible/roles/ovn-db/tasks/config.yml create mode 100644 ansible/roles/ovn-db/tasks/deploy-containers.yml create mode 100644 ansible/roles/ovn-db/tasks/deploy.yml create mode 100644 ansible/roles/ovn-db/tasks/main.yml create mode 100644 ansible/roles/ovn-db/tasks/precheck.yml create mode 100644 ansible/roles/ovn-db/tasks/pull.yml create mode 100644 ansible/roles/ovn-db/tasks/reconfigure.yml create mode 100644 ansible/roles/ovn-db/tasks/stop.yml create mode 100644 ansible/roles/ovn-db/tasks/upgrade.yml create mode 100644 ansible/roles/ovn-db/templates/ovn-nb-db.json.j2 create mode 100644 ansible/roles/ovn-db/templates/ovn-northd.json.j2 create mode 100644 ansible/roles/ovn-db/templates/ovn-sb-db.json.j2 create mode 100644 ansible/roles/ovn-db/vars/main.yml delete mode 100644 ansible/roles/ovn/defaults/main.yml delete mode 100644 ansible/roles/ovn/handlers/main.yml delete mode 100644 ansible/roles/ovn/tasks/bootstrap.yml delete mode 100644 ansible/roles/ovn/tasks/check-containers.yml delete mode 100644 ansible/roles/ovn/tasks/check.yml delete mode 100644 ansible/roles/ovn/tasks/config.yml delete mode 100644 ansible/roles/ovn/tasks/deploy-containers.yml delete mode 100644 ansible/roles/ovn/tasks/deploy.yml delete mode 100644 ansible/roles/ovn/tasks/main.yml delete mode 100644 ansible/roles/ovn/tasks/precheck.yml delete mode 100644 ansible/roles/ovn/tasks/pull.yml delete mode 100644 ansible/roles/ovn/tasks/reconfigure.yml delete mode 100644 ansible/roles/ovn/tasks/stop.yml delete mode 100644 ansible/roles/ovn/tasks/upgrade.yml delete mode 100644 ansible/roles/ovn/templates/ovn-controller.json.j2 delete mode 100644 ansible/roles/ovn/templates/ovn-nb-db.json.j2 delete mode 100644 ansible/roles/ovn/templates/ovn-northd.json.j2 delete mode 100644 ansible/roles/ovn/templates/ovn-sb-db.json.j2 delete mode 100644 ansible/roles/ovn/vars/main.yml create mode 100644 releasenotes/notes/ovn-controller-ecb49695dc377e88.yaml diff --git a/ansible/roles/ovn-controller/defaults/main.yml b/ansible/roles/ovn-controller/defaults/main.yml new file mode 100644 index 000000000..b97b4ccba --- /dev/null +++ b/ansible/roles/ovn-controller/defaults/main.yml @@ -0,0 +1,38 @@ +--- +ovn_controller_services: + ovn-controller: + container_name: ovn_controller + group: ovn-controller + enabled: true + image: "{{ ovn_controller_image_full }}" + volumes: "{{ ovn_controller_default_volumes + ovn_controller_extra_volumes }}" + dimensions: "{{ ovn_controller_dimensions }}" + +#################### +# Docker +#################### +ovn_tag: "{{ openstack_tag }}" + +ovn_controller_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-controller" +ovn_controller_tag: "{{ ovn_tag }}" +ovn_controller_image_full: "{{ ovn_controller_image }}:{{ ovn_controller_tag }}" + +ovn_controller_dimensions: "{{ default_container_dimensions }}" + +ovn_controller_default_volumes: + - "{{ node_config_directory }}/ovn-controller/:{{ container_config_directory }}/:ro" + - "/run/openvswitch:/run/openvswitch:shared" + - "/etc/localtime:/etc/localtime:ro" + - "kolla_logs:/var/log/kolla/" + +ovn_controller_extra_volumes: "{{ default_extra_volumes }}" + +##### +# OVN +##### +# Base MAC for ovn-chassis-mac-mappings generation +ovn_base_mac: "52:54:00" +# Configure OVN remote probe interval time in ms +ovn_remote_probe_interval: "60000" +# Configure OVN openflow interval in s +ovn_openflow_probe_interval: "60" diff --git a/ansible/roles/ovn-controller/handlers/main.yml b/ansible/roles/ovn-controller/handlers/main.yml new file mode 100644 index 000000000..165e7c0d3 --- /dev/null +++ b/ansible/roles/ovn-controller/handlers/main.yml @@ -0,0 +1,15 @@ +--- +- name: Restart ovn-controller container + vars: + service_name: "ovn-controller" + service: "{{ ovn_controller_services[service_name] }}" + become: true + kolla_docker: + action: "recreate_or_restart_container" + common_options: "{{ docker_common_options }}" + name: "{{ service.container_name }}" + image: "{{ service.image }}" + volumes: "{{ service.volumes | reject('equalto', '') | list }}" + dimensions: "{{ service.dimensions }}" + when: + - kolla_action != "config" diff --git a/ansible/roles/ovn-controller/tasks/check-containers.yml b/ansible/roles/ovn-controller/tasks/check-containers.yml new file mode 100644 index 000000000..a7cef3d95 --- /dev/null +++ b/ansible/roles/ovn-controller/tasks/check-containers.yml @@ -0,0 +1,16 @@ +--- +- name: Check ovn-controller containers + become: true + kolla_docker: + action: "compare_container" + common_options: "{{ docker_common_options }}" + name: "{{ item.value.container_name }}" + image: "{{ item.value.image }}" + volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" + dimensions: "{{ item.value.dimensions }}" + when: + - inventory_hostname in groups[item.value.group] + - item.value.enabled | bool + with_dict: "{{ ovn_controller_services }}" + notify: + - Restart {{ item.key }} container diff --git a/ansible/roles/ovn-controller/tasks/config.yml b/ansible/roles/ovn-controller/tasks/config.yml new file mode 100644 index 000000000..fa4617efe --- /dev/null +++ b/ansible/roles/ovn-controller/tasks/config.yml @@ -0,0 +1,26 @@ +--- +- name: Ensuring config directories exist + file: + path: "{{ node_config_directory }}/{{ item.key }}" + state: "directory" + owner: "{{ config_owner_user }}" + group: "{{ config_owner_group }}" + mode: "0770" + become: true + when: + - inventory_hostname in groups[item.value.group] + - item.value.enabled | bool + with_dict: "{{ ovn_controller_services }}" + +- name: Copying over config.json files for services + template: + src: "{{ item.key }}.json.j2" + dest: "{{ node_config_directory }}/{{ item.key }}/config.json" + mode: "0660" + become: true + when: + - inventory_hostname in groups[item.value.group] + - item.value.enabled | bool + with_dict: "{{ ovn_controller_services }}" + notify: + - Restart {{ item.key }} container diff --git a/ansible/roles/ovn-controller/tasks/deploy-containers.yml b/ansible/roles/ovn-controller/tasks/deploy-containers.yml new file mode 100644 index 000000000..eb24ab5c7 --- /dev/null +++ b/ansible/roles/ovn-controller/tasks/deploy-containers.yml @@ -0,0 +1,2 @@ +--- +- import_tasks: check-containers.yml diff --git a/ansible/roles/ovn-controller/tasks/deploy.yml b/ansible/roles/ovn-controller/tasks/deploy.yml new file mode 100644 index 000000000..52482569d --- /dev/null +++ b/ansible/roles/ovn-controller/tasks/deploy.yml @@ -0,0 +1,9 @@ +--- +- import_tasks: config.yml + +- import_tasks: check-containers.yml + +- import_tasks: setup-ovs.yml + +- name: Flush handlers + meta: flush_handlers diff --git a/ansible/roles/ovn-controller/tasks/main.yml b/ansible/roles/ovn-controller/tasks/main.yml new file mode 100644 index 000000000..bc5d1e625 --- /dev/null +++ b/ansible/roles/ovn-controller/tasks/main.yml @@ -0,0 +1,2 @@ +--- +- include_tasks: "{{ kolla_action }}.yml" diff --git a/ansible/roles/ovn-controller/tasks/precheck.yml b/ansible/roles/ovn-controller/tasks/precheck.yml new file mode 100644 index 000000000..ed97d539c --- /dev/null +++ b/ansible/roles/ovn-controller/tasks/precheck.yml @@ -0,0 +1 @@ +--- diff --git a/ansible/roles/ovn-controller/tasks/pull.yml b/ansible/roles/ovn-controller/tasks/pull.yml new file mode 100644 index 000000000..53f9c5fda --- /dev/null +++ b/ansible/roles/ovn-controller/tasks/pull.yml @@ -0,0 +1,3 @@ +--- +- import_role: + role: service-images-pull diff --git a/ansible/roles/ovn-controller/tasks/reconfigure.yml b/ansible/roles/ovn-controller/tasks/reconfigure.yml new file mode 100644 index 000000000..5b10a7e11 --- /dev/null +++ b/ansible/roles/ovn-controller/tasks/reconfigure.yml @@ -0,0 +1,2 @@ +--- +- import_tasks: deploy.yml diff --git a/ansible/roles/ovn-controller/tasks/setup-ovs.yml b/ansible/roles/ovn-controller/tasks/setup-ovs.yml new file mode 100644 index 000000000..7c2fb0f14 --- /dev/null +++ b/ansible/roles/ovn-controller/tasks/setup-ovs.yml @@ -0,0 +1,39 @@ +--- +- name: Create br-int bridge on OpenvSwitch + become: true + kolla_toolbox: + container_engine: "{{ kolla_container_engine }}" + user: root + module_name: openvswitch_bridge + module_args: + bridge: br-int + state: present + fail_mode: secure + +- name: Configure OVN in OVSDB + vars: + ovn_mappings: "{% for bridge in neutron_bridge_name.split(',') %}physnet{{ loop.index0 + 1 }}:{{ bridge }}{% if not loop.last %},{% endif %}{% endfor %}" + ovn_macs: "{% for bridge in neutron_bridge_name.split(',') %}physnet{{ loop.index0 + 1 }}:{{ ovn_base_mac | random_mac(seed=inventory_hostname + bridge) }}{% if not loop.last %},{% endif %}{% endfor %}" + ovn_cms_opts: "{{ 'enable-chassis-as-gw' if inventory_hostname in groups['ovn-controller-network'] else '' }}" + become: true + kolla_toolbox: + container_engine: "{{ kolla_container_engine }}" + user: root + module_name: openvswitch_db + module_args: + table: Open_vSwitch + record: . + col: external_ids + key: "{{ item.name }}" + value: "{{ item.value if item.state | default('present') == 'present' else omit }}" + state: "{{ item.state | default('present') }}" + loop: + - { name: ovn-encap-ip, value: "{{ tunnel_interface_address }}" } + - { name: ovn-encap-type, value: geneve } + - { name: ovn-remote, value: "{{ ovn_sb_connection }}" } + - { name: ovn-remote-probe-interval, value: "{{ ovn_remote_probe_interval }}" } + - { name: ovn-openflow-probe-interval, value: "{{ ovn_openflow_probe_interval }}" } + - { name: ovn-bridge-mappings, value: "{{ ovn_mappings }}", state: "{{ 'present' if (inventory_hostname in groups['ovn-controller-network'] or computes_need_external_bridge | bool) else 'absent' }}" } + - { name: ovn-chassis-mac-mappings, value: "{{ ovn_macs }}", state: "{{ 'present' if inventory_hostname in groups['ovn-controller-compute'] else 'absent' }}" } + - { name: ovn-cms-options, value: "{{ ovn_cms_opts }}", state: "{{ 'present' if ovn_cms_opts != '' else 'absent' }}" } + when: inventory_hostname in groups.get('ovn-controller', []) diff --git a/ansible/roles/ovn-controller/tasks/stop.yml b/ansible/roles/ovn-controller/tasks/stop.yml new file mode 100644 index 000000000..25f85ac67 --- /dev/null +++ b/ansible/roles/ovn-controller/tasks/stop.yml @@ -0,0 +1,6 @@ +--- +- import_role: + role: service-stop + vars: + project_services: "{{ ovn_controller_services }}" + service_name: "{{ project_name }}" diff --git a/ansible/roles/ovn-controller/tasks/upgrade.yml b/ansible/roles/ovn-controller/tasks/upgrade.yml new file mode 100644 index 000000000..5b10a7e11 --- /dev/null +++ b/ansible/roles/ovn-controller/tasks/upgrade.yml @@ -0,0 +1,2 @@ +--- +- import_tasks: deploy.yml diff --git a/ansible/roles/ovn-controller/templates/ovn-controller.json.j2 b/ansible/roles/ovn-controller/templates/ovn-controller.json.j2 new file mode 100644 index 000000000..b2db22197 --- /dev/null +++ b/ansible/roles/ovn-controller/templates/ovn-controller.json.j2 @@ -0,0 +1,10 @@ +{ + "command": "/usr/bin/ovn-controller --pidfile=/run/ovn/ovn-controller.pid --log-file=/var/log/kolla/openvswitch/ovn-controller.log tcp:127.0.0.1:{{ ovsdb_port }}", + "permissions": [ + { + "path": "/var/log/kolla/openvswitch", + "owner": "root:root", + "recurse": true + } + ] +} diff --git a/ansible/roles/ovn-controller/vars/main.yml b/ansible/roles/ovn-controller/vars/main.yml new file mode 100644 index 000000000..fbb32f119 --- /dev/null +++ b/ansible/roles/ovn-controller/vars/main.yml @@ -0,0 +1,6 @@ +--- +project_name: "ovn" + +# NOTE(mnasiadka): we need this for the ovn-controller role +# because this role's vars prefix does not match "{{ project_name }}" +kolla_role_name: "ovn_controller" diff --git a/ansible/roles/ovn-db/defaults/main.yml b/ansible/roles/ovn-db/defaults/main.yml new file mode 100644 index 000000000..7ce789581 --- /dev/null +++ b/ansible/roles/ovn-db/defaults/main.yml @@ -0,0 +1,65 @@ +--- +ovn_db_services: + ovn-northd: + container_name: ovn_northd + group: ovn-northd + enabled: true + image: "{{ ovn_northd_image_full }}" + volumes: "{{ ovn_northd_default_volumes + ovn_northd_extra_volumes }}" + dimensions: "{{ ovn_northd_dimensions }}" + ovn-nb-db: + container_name: ovn_nb_db + group: ovn-nb-db + enabled: true + image: "{{ ovn_nb_db_image_full }}" + volumes: "{{ ovn_nb_db_default_volumes + ovn_nb_db_extra_volumes }}" + dimensions: "{{ ovn_nb_db_dimensions }}" + ovn-sb-db: + container_name: ovn_sb_db + group: ovn-sb-db + enabled: true + image: "{{ ovn_sb_db_image_full }}" + volumes: "{{ ovn_sb_db_default_volumes + ovn_sb_db_extra_volumes }}" + dimensions: "{{ ovn_sb_db_dimensions }}" + + +#################### +# Docker +#################### +ovn_tag: "{{ openstack_tag }}" + +ovn_northd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-northd" +ovn_northd_tag: "{{ ovn_tag }}" +ovn_northd_image_full: "{{ ovn_northd_image }}:{{ ovn_northd_tag }}" + +ovn_nb_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-nb-db-server" +ovn_nb_db_tag: "{{ ovn_tag }}" +ovn_nb_db_image_full: "{{ ovn_nb_db_image }}:{{ ovn_nb_db_tag }}" + +ovn_sb_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-sb-db-server" +ovn_sb_db_tag: "{{ ovn_tag }}" +ovn_sb_db_image_full: "{{ ovn_sb_db_image }}:{{ ovn_sb_db_tag }}" + +ovn_northd_dimensions: "{{ default_container_dimensions }}" +ovn_nb_db_dimensions: "{{ default_container_dimensions }}" +ovn_sb_db_dimensions: "{{ default_container_dimensions }}" + +ovn_northd_default_volumes: + - "{{ node_config_directory }}/ovn-northd/:{{ container_config_directory }}/:ro" + - "/etc/localtime:/etc/localtime:ro" + - "kolla_logs:/var/log/kolla/" +ovn_nb_db_default_volumes: + - "{{ node_config_directory }}/ovn-nb-db/:{{ container_config_directory }}/:ro" + - "/etc/localtime:/etc/localtime:ro" + - "ovn_nb_db:/var/lib/openvswitch/ovn-nb/" + - "kolla_logs:/var/log/kolla/" +ovn_sb_db_default_volumes: + - "{{ node_config_directory }}/ovn-sb-db/:{{ container_config_directory }}/:ro" + - "/etc/localtime:/etc/localtime:ro" + - "ovn_sb_db:/var/lib/openvswitch/ovn-sb/" + - "kolla_logs:/var/log/kolla/" + +ovn_db_extra_volumes: "{{ default_extra_volumes }}" +ovn_northd_extra_volumes: "{{ ovn_db_extra_volumes }}" +ovn_nb_db_extra_volumes: "{{ ovn_db_extra_volumes }}" +ovn_sb_db_extra_volumes: "{{ ovn_db_extra_volumes }}" diff --git a/ansible/roles/ovn-db/handlers/main.yml b/ansible/roles/ovn-db/handlers/main.yml new file mode 100644 index 000000000..8c9c15a35 --- /dev/null +++ b/ansible/roles/ovn-db/handlers/main.yml @@ -0,0 +1,73 @@ +--- +- name: Restart ovn-nb-db container + vars: + service_name: "ovn-nb-db" + service: "{{ ovn_db_services[service_name] }}" + become: true + kolla_docker: + action: "recreate_or_restart_container" + common_options: "{{ docker_common_options }}" + name: "{{ service.container_name }}" + image: "{{ service.image }}" + volumes: "{{ service.volumes | reject('equalto', '') | list }}" + dimensions: "{{ service.dimensions }}" + when: + - kolla_action != "config" + +- name: Restart ovn-sb-db container + vars: + service_name: "ovn-sb-db" + service: "{{ ovn_db_services[service_name] }}" + become: true + kolla_docker: + action: "recreate_or_restart_container" + common_options: "{{ docker_common_options }}" + name: "{{ service.container_name }}" + image: "{{ service.image }}" + volumes: "{{ service.volumes | reject('equalto', '') | list }}" + dimensions: "{{ service.dimensions }}" + when: + - kolla_action != "config" + +- name: Wait for ovn-nb-db + wait_for: + host: "{{ api_interface_address }}" + port: "{{ ovn_nb_db_port }}" + connect_timeout: 1 + timeout: 60 + register: check_ovn_nb_db_port + until: check_ovn_nb_db_port is success + retries: 10 + delay: 6 + listen: "Restart ovn-nb-db container" + when: + - kolla_action != "config" + +- name: Wait for ovn-sb-db + wait_for: + host: "{{ api_interface_address }}" + port: "{{ ovn_sb_db_port }}" + connect_timeout: 1 + timeout: 60 + register: check_ovn_sb_db_port + until: check_ovn_sb_db_port is success + retries: 10 + delay: 6 + listen: "Restart ovn-sb-db container" + when: + - kolla_action != "config" + +- name: Restart ovn-northd container + vars: + service_name: "ovn-northd" + service: "{{ ovn_db_services[service_name] }}" + become: true + kolla_docker: + action: "recreate_or_restart_container" + common_options: "{{ docker_common_options }}" + name: "{{ service.container_name }}" + image: "{{ service.image }}" + volumes: "{{ service.volumes | reject('equalto', '') | list }}" + dimensions: "{{ service.dimensions }}" + when: + - kolla_action != "config" diff --git a/ansible/roles/ovn-db/tasks/check-containers.yml b/ansible/roles/ovn-db/tasks/check-containers.yml new file mode 100644 index 000000000..5527b7d08 --- /dev/null +++ b/ansible/roles/ovn-db/tasks/check-containers.yml @@ -0,0 +1,16 @@ +--- +- name: Check ovn containers + become: true + kolla_docker: + action: "compare_container" + common_options: "{{ docker_common_options }}" + name: "{{ item.value.container_name }}" + image: "{{ item.value.image }}" + volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" + dimensions: "{{ item.value.dimensions }}" + when: + - inventory_hostname in groups[item.value.group] + - item.value.enabled | bool + with_dict: "{{ ovn_db_services }}" + notify: + - Restart {{ item.key }} container diff --git a/ansible/roles/ovn-db/tasks/config.yml b/ansible/roles/ovn-db/tasks/config.yml new file mode 100644 index 000000000..5046bd104 --- /dev/null +++ b/ansible/roles/ovn-db/tasks/config.yml @@ -0,0 +1,26 @@ +--- +- name: Ensuring config directories exist + file: + path: "{{ node_config_directory }}/{{ item.key }}" + state: "directory" + owner: "{{ config_owner_user }}" + group: "{{ config_owner_group }}" + mode: "0770" + become: true + when: + - inventory_hostname in groups[item.value.group] + - item.value.enabled | bool + with_dict: "{{ ovn_db_services }}" + +- name: Copying over config.json files for services + template: + src: "{{ item.key }}.json.j2" + dest: "{{ node_config_directory }}/{{ item.key }}/config.json" + mode: "0660" + become: true + when: + - inventory_hostname in groups[item.value.group] + - item.value.enabled | bool + with_dict: "{{ ovn_db_services }}" + notify: + - Restart {{ item.key }} container diff --git a/ansible/roles/ovn-db/tasks/deploy-containers.yml b/ansible/roles/ovn-db/tasks/deploy-containers.yml new file mode 100644 index 000000000..eb24ab5c7 --- /dev/null +++ b/ansible/roles/ovn-db/tasks/deploy-containers.yml @@ -0,0 +1,2 @@ +--- +- import_tasks: check-containers.yml diff --git a/ansible/roles/ovn-db/tasks/deploy.yml b/ansible/roles/ovn-db/tasks/deploy.yml new file mode 100644 index 000000000..49edff81e --- /dev/null +++ b/ansible/roles/ovn-db/tasks/deploy.yml @@ -0,0 +1,7 @@ +--- +- import_tasks: config.yml + +- import_tasks: check-containers.yml + +- name: Flush handlers + meta: flush_handlers diff --git a/ansible/roles/ovn-db/tasks/main.yml b/ansible/roles/ovn-db/tasks/main.yml new file mode 100644 index 000000000..bc5d1e625 --- /dev/null +++ b/ansible/roles/ovn-db/tasks/main.yml @@ -0,0 +1,2 @@ +--- +- include_tasks: "{{ kolla_action }}.yml" diff --git a/ansible/roles/ovn-db/tasks/precheck.yml b/ansible/roles/ovn-db/tasks/precheck.yml new file mode 100644 index 000000000..d98c98a4b --- /dev/null +++ b/ansible/roles/ovn-db/tasks/precheck.yml @@ -0,0 +1,31 @@ +--- +- name: Get container facts + become: true + kolla_container_facts: + container_engine: "{{ kolla_container_engine }}" + name: + - ovn_nb_db + - ovn_sb_db + register: container_facts + +- name: Checking free port for OVN northbound db + wait_for: + host: "{{ api_interface_address }}" + port: "{{ ovn_nb_db_port }}" + connect_timeout: 1 + timeout: 1 + state: stopped + when: + - container_facts['ovn_nb_db'] is not defined + - inventory_hostname in groups['ovn-nb-db'] + +- name: Checking free port for OVN southbound db + wait_for: + host: "{{ api_interface_address }}" + port: "{{ ovn_sb_db_port }}" + connect_timeout: 1 + timeout: 1 + state: stopped + when: + - container_facts['ovn_sb_db'] is not defined + - inventory_hostname in groups['ovn-sb-db'] diff --git a/ansible/roles/ovn-db/tasks/pull.yml b/ansible/roles/ovn-db/tasks/pull.yml new file mode 100644 index 000000000..53f9c5fda --- /dev/null +++ b/ansible/roles/ovn-db/tasks/pull.yml @@ -0,0 +1,3 @@ +--- +- import_role: + role: service-images-pull diff --git a/ansible/roles/ovn-db/tasks/reconfigure.yml b/ansible/roles/ovn-db/tasks/reconfigure.yml new file mode 100644 index 000000000..5b10a7e11 --- /dev/null +++ b/ansible/roles/ovn-db/tasks/reconfigure.yml @@ -0,0 +1,2 @@ +--- +- import_tasks: deploy.yml diff --git a/ansible/roles/ovn-db/tasks/stop.yml b/ansible/roles/ovn-db/tasks/stop.yml new file mode 100644 index 000000000..eadbf02a8 --- /dev/null +++ b/ansible/roles/ovn-db/tasks/stop.yml @@ -0,0 +1,6 @@ +--- +- import_role: + role: service-stop + vars: + project_services: "{{ ovn_db_services }}" + service_name: "{{ project_name }}" diff --git a/ansible/roles/ovn-db/tasks/upgrade.yml b/ansible/roles/ovn-db/tasks/upgrade.yml new file mode 100644 index 000000000..5b10a7e11 --- /dev/null +++ b/ansible/roles/ovn-db/tasks/upgrade.yml @@ -0,0 +1,2 @@ +--- +- import_tasks: deploy.yml diff --git a/ansible/roles/ovn-db/templates/ovn-nb-db.json.j2 b/ansible/roles/ovn-db/templates/ovn-nb-db.json.j2 new file mode 100644 index 000000000..bc10ebd5c --- /dev/null +++ b/ansible/roles/ovn-db/templates/ovn-nb-db.json.j2 @@ -0,0 +1,10 @@ +{ + "command": "/usr/share/ovn/scripts/ovn-ctl run_nb_ovsdb --db-nb-create-insecure-remote=yes --db-nb-addr={{ api_interface_address | put_address_in_context('url') }} --db-nb-cluster-local-addr={{ api_interface_address | put_address_in_context('url') }} {% if groups['ovn-nb-db'] | length > 1 and inventory_hostname != groups['ovn-nb-db'][0] %} --db-nb-cluster-remote-addr={{ 'api' | kolla_address(groups['ovn-nb-db'][0]) | put_address_in_context('url') }} {% endif %} --db-nb-sock=/run/ovn/ovnnb_db.sock --db-nb-pid=/run/ovn/ovnnb_db.pid --db-nb-file=/var/lib/openvswitch/ovn-nb/ovnnb.db --ovn-nb-logfile=/var/log/kolla/openvswitch/ovn-nb-db.log", + "permissions": [ + { + "path": "/var/log/kolla/openvswitch", + "owner": "root:root", + "recurse": true + } + ] +} diff --git a/ansible/roles/ovn-db/templates/ovn-northd.json.j2 b/ansible/roles/ovn-db/templates/ovn-northd.json.j2 new file mode 100644 index 000000000..35abdbe49 --- /dev/null +++ b/ansible/roles/ovn-db/templates/ovn-northd.json.j2 @@ -0,0 +1,10 @@ +{ + "command": "/usr/bin/ovn-northd -vconsole:emer -vsyslog:err -vfile:info --ovnnb-db={{ ovn_nb_connection }} --ovnsb-db={{ ovn_sb_connection }} --log-file=/var/log/kolla/openvswitch/ovn-northd.log --pidfile=/run/ovn/ovn-northd.pid --unixctl=/run/ovn/ovn-northd.ctl", + "permissions": [ + { + "path": "/var/log/kolla/openvswitch", + "owner": "root:root", + "recurse": true + } + ] +} diff --git a/ansible/roles/ovn-db/templates/ovn-sb-db.json.j2 b/ansible/roles/ovn-db/templates/ovn-sb-db.json.j2 new file mode 100644 index 000000000..8d3d74639 --- /dev/null +++ b/ansible/roles/ovn-db/templates/ovn-sb-db.json.j2 @@ -0,0 +1,10 @@ +{ + "command": "/usr/share/ovn/scripts/ovn-ctl run_sb_ovsdb --db-sb-create-insecure-remote=yes --db-sb-addr={{ api_interface_address | put_address_in_context('url') }} --db-sb-cluster-local-addr={{ api_interface_address | put_address_in_context('url') }} {% if groups['ovn-sb-db'] | length > 1 and inventory_hostname != groups['ovn-sb-db'][0] %} --db-sb-cluster-remote-addr={{ 'api' | kolla_address(groups['ovn-sb-db'][0]) | put_address_in_context('url') }} {% endif %} --db-sb-sock=/run/ovn/ovnsb_db.sock --db-sb-pid=/run/ovn/ovnsb_db.pid --db-sb-file=/var/lib/openvswitch/ovn-sb/ovnsb.db --ovn-sb-logfile=/var/log/kolla/openvswitch/ovn-sb-db.log", + "permissions": [ + { + "path": "/var/log/kolla/openvswitch", + "owner": "root:root", + "recurse": true + } + ] +} diff --git a/ansible/roles/ovn-db/vars/main.yml b/ansible/roles/ovn-db/vars/main.yml new file mode 100644 index 000000000..485229e93 --- /dev/null +++ b/ansible/roles/ovn-db/vars/main.yml @@ -0,0 +1,6 @@ +--- +project_name: "ovn" + +# NOTE(mnasiadka): we need this for the ovn-db role because this role's +# vars prefix does not match "{{ project_name }}" +kolla_role_name: "ovn_db" diff --git a/ansible/roles/ovn/defaults/main.yml b/ansible/roles/ovn/defaults/main.yml deleted file mode 100644 index 394cb744b..000000000 --- a/ansible/roles/ovn/defaults/main.yml +++ /dev/null @@ -1,93 +0,0 @@ ---- -ovn_services: - ovn-controller: - container_name: ovn_controller - group: ovn-controller - enabled: true - image: "{{ ovn_controller_image_full }}" - volumes: "{{ ovn_controller_default_volumes + ovn_controller_extra_volumes }}" - dimensions: "{{ ovn_controller_dimensions }}" - ovn-northd: - container_name: ovn_northd - group: ovn-northd - enabled: true - image: "{{ ovn_northd_image_full }}" - volumes: "{{ ovn_northd_default_volumes + ovn_northd_extra_volumes }}" - dimensions: "{{ ovn_northd_dimensions }}" - ovn-nb-db: - container_name: ovn_nb_db - group: ovn-nb-db - enabled: true - image: "{{ ovn_nb_db_image_full }}" - volumes: "{{ ovn_nb_db_default_volumes + ovn_nb_db_extra_volumes }}" - dimensions: "{{ ovn_nb_db_dimensions }}" - ovn-sb-db: - container_name: ovn_sb_db - group: ovn-sb-db - enabled: true - image: "{{ ovn_sb_db_image_full }}" - volumes: "{{ ovn_sb_db_default_volumes + ovn_sb_db_extra_volumes }}" - dimensions: "{{ ovn_sb_db_dimensions }}" - - -#################### -# Docker -#################### -ovn_tag: "{{ openstack_tag }}" - -ovn_controller_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-controller" -ovn_controller_tag: "{{ ovn_tag }}" -ovn_controller_image_full: "{{ ovn_controller_image }}:{{ ovn_controller_tag }}" - -ovn_northd_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-northd" -ovn_northd_tag: "{{ ovn_tag }}" -ovn_northd_image_full: "{{ ovn_northd_image }}:{{ ovn_northd_tag }}" - -ovn_nb_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-nb-db-server" -ovn_nb_db_tag: "{{ ovn_tag }}" -ovn_nb_db_image_full: "{{ ovn_nb_db_image }}:{{ ovn_nb_db_tag }}" - -ovn_sb_db_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/ovn-sb-db-server" -ovn_sb_db_tag: "{{ ovn_tag }}" -ovn_sb_db_image_full: "{{ ovn_sb_db_image }}:{{ ovn_sb_db_tag }}" - -ovn_controller_dimensions: "{{ default_container_dimensions }}" -ovn_northd_dimensions: "{{ default_container_dimensions }}" -ovn_nb_db_dimensions: "{{ default_container_dimensions }}" -ovn_sb_db_dimensions: "{{ default_container_dimensions }}" - -ovn_controller_default_volumes: - - "{{ node_config_directory }}/ovn-controller/:{{ container_config_directory }}/:ro" - - "/run/openvswitch:/run/openvswitch:shared" - - "/etc/localtime:/etc/localtime:ro" - - "kolla_logs:/var/log/kolla/" -ovn_northd_default_volumes: - - "{{ node_config_directory }}/ovn-northd/:{{ container_config_directory }}/:ro" - - "/etc/localtime:/etc/localtime:ro" - - "kolla_logs:/var/log/kolla/" -ovn_nb_db_default_volumes: - - "{{ node_config_directory }}/ovn-nb-db/:{{ container_config_directory }}/:ro" - - "/etc/localtime:/etc/localtime:ro" - - "ovn_nb_db:/var/lib/openvswitch/ovn-nb/" - - "kolla_logs:/var/log/kolla/" -ovn_sb_db_default_volumes: - - "{{ node_config_directory }}/ovn-sb-db/:{{ container_config_directory }}/:ro" - - "/etc/localtime:/etc/localtime:ro" - - "ovn_sb_db:/var/lib/openvswitch/ovn-sb/" - - "kolla_logs:/var/log/kolla/" - -ovn_extra_volumes: "{{ default_extra_volumes }}" -ovn_controller_extra_volumes: "{{ ovn_extra_volumes }}" -ovn_northd_extra_volumes: "{{ ovn_extra_volumes }}" -ovn_nb_db_extra_volumes: "{{ ovn_extra_volumes }}" -ovn_sb_db_extra_volumes: "{{ ovn_extra_volumes }}" - -##### -# OVN -##### -# Base MAC for ovn-chassis-mac-mappings generation -ovn_base_mac: "52:54:00" -# Configure OVN remote probe interval time in ms -ovn_remote_probe_interval: "60000" -# Configure OVN openflow interval in s -ovn_openflow_probe_interval: "60" diff --git a/ansible/roles/ovn/handlers/main.yml b/ansible/roles/ovn/handlers/main.yml deleted file mode 100644 index 94977013f..000000000 --- a/ansible/roles/ovn/handlers/main.yml +++ /dev/null @@ -1,88 +0,0 @@ ---- -- name: Restart ovn-nb-db container - vars: - service_name: "ovn-nb-db" - service: "{{ ovn_services[service_name] }}" - become: true - kolla_docker: - action: "recreate_or_restart_container" - common_options: "{{ docker_common_options }}" - name: "{{ service.container_name }}" - image: "{{ service.image }}" - volumes: "{{ service.volumes | reject('equalto', '') | list }}" - dimensions: "{{ service.dimensions }}" - when: - - kolla_action != "config" - -- name: Restart ovn-sb-db container - vars: - service_name: "ovn-sb-db" - service: "{{ ovn_services[service_name] }}" - become: true - kolla_docker: - action: "recreate_or_restart_container" - common_options: "{{ docker_common_options }}" - name: "{{ service.container_name }}" - image: "{{ service.image }}" - volumes: "{{ service.volumes | reject('equalto', '') | list }}" - dimensions: "{{ service.dimensions }}" - when: - - kolla_action != "config" - -- name: Wait for ovn-nb-db - wait_for: - host: "{{ api_interface_address }}" - port: "{{ ovn_nb_db_port }}" - connect_timeout: 1 - timeout: 60 - register: check_ovn_nb_db_port - until: check_ovn_nb_db_port is success - retries: 10 - delay: 6 - listen: "Restart ovn-nb-db container" - when: - - kolla_action != "config" - -- name: Wait for ovn-sb-db - wait_for: - host: "{{ api_interface_address }}" - port: "{{ ovn_sb_db_port }}" - connect_timeout: 1 - timeout: 60 - register: check_ovn_sb_db_port - until: check_ovn_sb_db_port is success - retries: 10 - delay: 6 - listen: "Restart ovn-sb-db container" - when: - - kolla_action != "config" - -- name: Restart ovn-northd container - vars: - service_name: "ovn-northd" - service: "{{ ovn_services[service_name] }}" - become: true - kolla_docker: - action: "recreate_or_restart_container" - common_options: "{{ docker_common_options }}" - name: "{{ service.container_name }}" - image: "{{ service.image }}" - volumes: "{{ service.volumes | reject('equalto', '') | list }}" - dimensions: "{{ service.dimensions }}" - when: - - kolla_action != "config" - -- name: Restart ovn-controller container - vars: - service_name: "ovn-controller" - service: "{{ ovn_services[service_name] }}" - become: true - kolla_docker: - action: "recreate_or_restart_container" - common_options: "{{ docker_common_options }}" - name: "{{ service.container_name }}" - image: "{{ service.image }}" - volumes: "{{ service.volumes | reject('equalto', '') | list }}" - dimensions: "{{ service.dimensions }}" - when: - - kolla_action != "config" diff --git a/ansible/roles/ovn/tasks/bootstrap.yml b/ansible/roles/ovn/tasks/bootstrap.yml deleted file mode 100644 index 7c2fb0f14..000000000 --- a/ansible/roles/ovn/tasks/bootstrap.yml +++ /dev/null @@ -1,39 +0,0 @@ ---- -- name: Create br-int bridge on OpenvSwitch - become: true - kolla_toolbox: - container_engine: "{{ kolla_container_engine }}" - user: root - module_name: openvswitch_bridge - module_args: - bridge: br-int - state: present - fail_mode: secure - -- name: Configure OVN in OVSDB - vars: - ovn_mappings: "{% for bridge in neutron_bridge_name.split(',') %}physnet{{ loop.index0 + 1 }}:{{ bridge }}{% if not loop.last %},{% endif %}{% endfor %}" - ovn_macs: "{% for bridge in neutron_bridge_name.split(',') %}physnet{{ loop.index0 + 1 }}:{{ ovn_base_mac | random_mac(seed=inventory_hostname + bridge) }}{% if not loop.last %},{% endif %}{% endfor %}" - ovn_cms_opts: "{{ 'enable-chassis-as-gw' if inventory_hostname in groups['ovn-controller-network'] else '' }}" - become: true - kolla_toolbox: - container_engine: "{{ kolla_container_engine }}" - user: root - module_name: openvswitch_db - module_args: - table: Open_vSwitch - record: . - col: external_ids - key: "{{ item.name }}" - value: "{{ item.value if item.state | default('present') == 'present' else omit }}" - state: "{{ item.state | default('present') }}" - loop: - - { name: ovn-encap-ip, value: "{{ tunnel_interface_address }}" } - - { name: ovn-encap-type, value: geneve } - - { name: ovn-remote, value: "{{ ovn_sb_connection }}" } - - { name: ovn-remote-probe-interval, value: "{{ ovn_remote_probe_interval }}" } - - { name: ovn-openflow-probe-interval, value: "{{ ovn_openflow_probe_interval }}" } - - { name: ovn-bridge-mappings, value: "{{ ovn_mappings }}", state: "{{ 'present' if (inventory_hostname in groups['ovn-controller-network'] or computes_need_external_bridge | bool) else 'absent' }}" } - - { name: ovn-chassis-mac-mappings, value: "{{ ovn_macs }}", state: "{{ 'present' if inventory_hostname in groups['ovn-controller-compute'] else 'absent' }}" } - - { name: ovn-cms-options, value: "{{ ovn_cms_opts }}", state: "{{ 'present' if ovn_cms_opts != '' else 'absent' }}" } - when: inventory_hostname in groups.get('ovn-controller', []) diff --git a/ansible/roles/ovn/tasks/check-containers.yml b/ansible/roles/ovn/tasks/check-containers.yml deleted file mode 100644 index c08cec285..000000000 --- a/ansible/roles/ovn/tasks/check-containers.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- -- name: Check ovn containers - become: true - kolla_docker: - action: "compare_container" - common_options: "{{ docker_common_options }}" - name: "{{ item.value.container_name }}" - image: "{{ item.value.image }}" - volumes: "{{ item.value.volumes | reject('equalto', '') | list }}" - dimensions: "{{ item.value.dimensions }}" - when: - - inventory_hostname in groups[item.value.group] - - item.value.enabled | bool - with_dict: "{{ ovn_services }}" - notify: - - Restart {{ item.key }} container diff --git a/ansible/roles/ovn/tasks/check.yml b/ansible/roles/ovn/tasks/check.yml deleted file mode 100644 index ed97d539c..000000000 --- a/ansible/roles/ovn/tasks/check.yml +++ /dev/null @@ -1 +0,0 @@ ---- diff --git a/ansible/roles/ovn/tasks/config.yml b/ansible/roles/ovn/tasks/config.yml deleted file mode 100644 index 4731d581d..000000000 --- a/ansible/roles/ovn/tasks/config.yml +++ /dev/null @@ -1,26 +0,0 @@ ---- -- name: Ensuring config directories exist - file: - path: "{{ node_config_directory }}/{{ item.key }}" - state: "directory" - owner: "{{ config_owner_user }}" - group: "{{ config_owner_group }}" - mode: "0770" - become: true - when: - - inventory_hostname in groups[item.value.group] - - item.value.enabled | bool - with_dict: "{{ ovn_services }}" - -- name: Copying over config.json files for services - template: - src: "{{ item.key }}.json.j2" - dest: "{{ node_config_directory }}/{{ item.key }}/config.json" - mode: "0660" - become: true - when: - - inventory_hostname in groups[item.value.group] - - item.value.enabled | bool - with_dict: "{{ ovn_services }}" - notify: - - Restart {{ item.key }} container diff --git a/ansible/roles/ovn/tasks/deploy-containers.yml b/ansible/roles/ovn/tasks/deploy-containers.yml deleted file mode 100644 index eb24ab5c7..000000000 --- a/ansible/roles/ovn/tasks/deploy-containers.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -- import_tasks: check-containers.yml diff --git a/ansible/roles/ovn/tasks/deploy.yml b/ansible/roles/ovn/tasks/deploy.yml deleted file mode 100644 index 3356de912..000000000 --- a/ansible/roles/ovn/tasks/deploy.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -- import_tasks: config.yml - -- import_tasks: check-containers.yml - -- import_tasks: bootstrap.yml - when: inventory_hostname in groups['ovn-controller'] - -- name: Flush handlers - meta: flush_handlers diff --git a/ansible/roles/ovn/tasks/main.yml b/ansible/roles/ovn/tasks/main.yml deleted file mode 100644 index bc5d1e625..000000000 --- a/ansible/roles/ovn/tasks/main.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -- include_tasks: "{{ kolla_action }}.yml" diff --git a/ansible/roles/ovn/tasks/precheck.yml b/ansible/roles/ovn/tasks/precheck.yml deleted file mode 100644 index d98c98a4b..000000000 --- a/ansible/roles/ovn/tasks/precheck.yml +++ /dev/null @@ -1,31 +0,0 @@ ---- -- name: Get container facts - become: true - kolla_container_facts: - container_engine: "{{ kolla_container_engine }}" - name: - - ovn_nb_db - - ovn_sb_db - register: container_facts - -- name: Checking free port for OVN northbound db - wait_for: - host: "{{ api_interface_address }}" - port: "{{ ovn_nb_db_port }}" - connect_timeout: 1 - timeout: 1 - state: stopped - when: - - container_facts['ovn_nb_db'] is not defined - - inventory_hostname in groups['ovn-nb-db'] - -- name: Checking free port for OVN southbound db - wait_for: - host: "{{ api_interface_address }}" - port: "{{ ovn_sb_db_port }}" - connect_timeout: 1 - timeout: 1 - state: stopped - when: - - container_facts['ovn_sb_db'] is not defined - - inventory_hostname in groups['ovn-sb-db'] diff --git a/ansible/roles/ovn/tasks/pull.yml b/ansible/roles/ovn/tasks/pull.yml deleted file mode 100644 index 53f9c5fda..000000000 --- a/ansible/roles/ovn/tasks/pull.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -- import_role: - role: service-images-pull diff --git a/ansible/roles/ovn/tasks/reconfigure.yml b/ansible/roles/ovn/tasks/reconfigure.yml deleted file mode 100644 index 5b10a7e11..000000000 --- a/ansible/roles/ovn/tasks/reconfigure.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -- import_tasks: deploy.yml diff --git a/ansible/roles/ovn/tasks/stop.yml b/ansible/roles/ovn/tasks/stop.yml deleted file mode 100644 index 885576f7d..000000000 --- a/ansible/roles/ovn/tasks/stop.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -- import_role: - role: service-stop - vars: - project_services: "{{ ovn_services }}" - service_name: "{{ project_name }}" diff --git a/ansible/roles/ovn/tasks/upgrade.yml b/ansible/roles/ovn/tasks/upgrade.yml deleted file mode 100644 index 49edff81e..000000000 --- a/ansible/roles/ovn/tasks/upgrade.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -- import_tasks: config.yml - -- import_tasks: check-containers.yml - -- name: Flush handlers - meta: flush_handlers diff --git a/ansible/roles/ovn/templates/ovn-controller.json.j2 b/ansible/roles/ovn/templates/ovn-controller.json.j2 deleted file mode 100644 index b2db22197..000000000 --- a/ansible/roles/ovn/templates/ovn-controller.json.j2 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "command": "/usr/bin/ovn-controller --pidfile=/run/ovn/ovn-controller.pid --log-file=/var/log/kolla/openvswitch/ovn-controller.log tcp:127.0.0.1:{{ ovsdb_port }}", - "permissions": [ - { - "path": "/var/log/kolla/openvswitch", - "owner": "root:root", - "recurse": true - } - ] -} diff --git a/ansible/roles/ovn/templates/ovn-nb-db.json.j2 b/ansible/roles/ovn/templates/ovn-nb-db.json.j2 deleted file mode 100644 index bc10ebd5c..000000000 --- a/ansible/roles/ovn/templates/ovn-nb-db.json.j2 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "command": "/usr/share/ovn/scripts/ovn-ctl run_nb_ovsdb --db-nb-create-insecure-remote=yes --db-nb-addr={{ api_interface_address | put_address_in_context('url') }} --db-nb-cluster-local-addr={{ api_interface_address | put_address_in_context('url') }} {% if groups['ovn-nb-db'] | length > 1 and inventory_hostname != groups['ovn-nb-db'][0] %} --db-nb-cluster-remote-addr={{ 'api' | kolla_address(groups['ovn-nb-db'][0]) | put_address_in_context('url') }} {% endif %} --db-nb-sock=/run/ovn/ovnnb_db.sock --db-nb-pid=/run/ovn/ovnnb_db.pid --db-nb-file=/var/lib/openvswitch/ovn-nb/ovnnb.db --ovn-nb-logfile=/var/log/kolla/openvswitch/ovn-nb-db.log", - "permissions": [ - { - "path": "/var/log/kolla/openvswitch", - "owner": "root:root", - "recurse": true - } - ] -} diff --git a/ansible/roles/ovn/templates/ovn-northd.json.j2 b/ansible/roles/ovn/templates/ovn-northd.json.j2 deleted file mode 100644 index 35abdbe49..000000000 --- a/ansible/roles/ovn/templates/ovn-northd.json.j2 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "command": "/usr/bin/ovn-northd -vconsole:emer -vsyslog:err -vfile:info --ovnnb-db={{ ovn_nb_connection }} --ovnsb-db={{ ovn_sb_connection }} --log-file=/var/log/kolla/openvswitch/ovn-northd.log --pidfile=/run/ovn/ovn-northd.pid --unixctl=/run/ovn/ovn-northd.ctl", - "permissions": [ - { - "path": "/var/log/kolla/openvswitch", - "owner": "root:root", - "recurse": true - } - ] -} diff --git a/ansible/roles/ovn/templates/ovn-sb-db.json.j2 b/ansible/roles/ovn/templates/ovn-sb-db.json.j2 deleted file mode 100644 index 8d3d74639..000000000 --- a/ansible/roles/ovn/templates/ovn-sb-db.json.j2 +++ /dev/null @@ -1,10 +0,0 @@ -{ - "command": "/usr/share/ovn/scripts/ovn-ctl run_sb_ovsdb --db-sb-create-insecure-remote=yes --db-sb-addr={{ api_interface_address | put_address_in_context('url') }} --db-sb-cluster-local-addr={{ api_interface_address | put_address_in_context('url') }} {% if groups['ovn-sb-db'] | length > 1 and inventory_hostname != groups['ovn-sb-db'][0] %} --db-sb-cluster-remote-addr={{ 'api' | kolla_address(groups['ovn-sb-db'][0]) | put_address_in_context('url') }} {% endif %} --db-sb-sock=/run/ovn/ovnsb_db.sock --db-sb-pid=/run/ovn/ovnsb_db.pid --db-sb-file=/var/lib/openvswitch/ovn-sb/ovnsb.db --ovn-sb-logfile=/var/log/kolla/openvswitch/ovn-sb-db.log", - "permissions": [ - { - "path": "/var/log/kolla/openvswitch", - "owner": "root:root", - "recurse": true - } - ] -} diff --git a/ansible/roles/ovn/vars/main.yml b/ansible/roles/ovn/vars/main.yml deleted file mode 100644 index c1f916170..000000000 --- a/ansible/roles/ovn/vars/main.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -project_name: "ovn" diff --git a/ansible/site.yml b/ansible/site.yml index cdf9c0785..0b4a7f20f 100644 --- a/ansible/site.yml +++ b/ansible/site.yml @@ -651,18 +651,27 @@ tags: ovs-dpdk, when: "(enable_openvswitch | bool) and (enable_ovs_dpdk | bool)"} -- name: Apply role ovn +- name: Apply role ovn-db gather_facts: false hosts: - - ovn-controller - ovn-nb-db - ovn-northd - ovn-sb-db - '&enable_ovn_True' serial: '{{ kolla_serial|default("0") }}' roles: - - { role: ovn, - tags: ovn } + - { role: ovn-db, + tags: [ovn, ovn-db] } + +- name: Apply role ovn-controller + gather_facts: false + hosts: + - ovn-controller + - '&enable_ovn_True' + serial: '{{ kolla_serial|default("0") }}' + roles: + - { role: ovn-controller, + tags: [ovn, ovn-controller] } - name: Apply role neutron gather_facts: false diff --git a/releasenotes/notes/ovn-controller-ecb49695dc377e88.yaml b/releasenotes/notes/ovn-controller-ecb49695dc377e88.yaml new file mode 100644 index 000000000..176993f1f --- /dev/null +++ b/releasenotes/notes/ovn-controller-ecb49695dc377e88.yaml @@ -0,0 +1,7 @@ +--- +upgrade: + - | + ``ovn`` role has been split into ``ovn-controller`` and ``ovn-db`` + roles, therefore users that have ``ovn_extra_volumes`` configured + need to adapt their config to use ``ovn_db_extra_volumes`` or + ``ovn_controller_extra_volumes``. diff --git a/zuul.d/base.yaml b/zuul.d/base.yaml index 52660692f..6d5d5f1d5 100644 --- a/zuul.d/base.yaml +++ b/zuul.d/base.yaml @@ -196,7 +196,7 @@ parent: kolla-ansible-base voting: false files: - - ^ansible/roles/(neutron|octavia|openvswitch|ovn)/ + - ^ansible/roles/(neutron|octavia|openvswitch|ovn-controller|ovn-db)/ - ^tests/test-ovn.sh - ^tests/test-core-openstack.sh vars: -- cgit v1.2.3