--- # Copyright 2021 Red Hat, Inc. # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. - name: Gather SELinux fact if needed when: - ansible_facts.selinux is undefined setup: gather_subset: - "!all" - "!min" - "selinux" - name: create fcontext entry for frr base directory when: - ansible_facts.selinux.status == "enabled" become: true community.general.sefcontext: target: "{{ tripleo_frr_config_basedir }}/etc/frr(/.*)?" setype: container_file_t state: present - name: create directory {{ tripleo_frr_config_basedir }} become: true ansible.builtin.file: path: "{{ tripleo_frr_config_basedir }}/etc/frr" recurse: true state: directory selevel: s0 setype: container_file_t - name: identify the real interfaces via os-net-config shell: os-net-config -i register: os_net_config_result - name: os-net-config from json set_fact: iface_map: "{{ os_net_config_result.stdout }}" - name: FRR uplink interfaces block: - name: construct FRR uplink interfaces from os-net-config mappings set_fact: tripleo_frr_bgp_uplinks_mapped: "{{ tripleo_frr_bgp_uplinks | map('extract', iface_map) | list }}" rescue: - name: failed to construct FRR uplink interfaces ansible.builtin.fail: msg: | Failed to map at least one interface from {{ tripleo_frr_bgp_uplinks }} to {{ iface_map }}. Please check value of Ansible variable tripleo_frr_bgp_uplinks. - name: configure FRR become: true ansible.builtin.template: src: frr.conf.j2 dest: "{{ tripleo_frr_config_basedir }}/etc/frr/frr.conf" mode: '640' selevel: s0 setype: container_file_t register: _frr_config_result - name: configure FRR daemons become: true ansible.builtin.template: src: daemons.j2 dest: "{{ tripleo_frr_config_basedir }}/etc/frr/daemons" mode: '640' selevel: s0 setype: container_file_t register: _frr_daemons_result - name: restart FRR when: - _frr_config_result.changed or _frr_daemons_result.changed block: - name: check if tripleo_frr systemd service is active become: true shell: systemctl is-active --quiet tripleo_frr failed_when: false register: frr_active_service - name: restart frr container become: true systemd: name: tripleo_frr state: restarted when: - frr_active_service.rc == 0 - name: include OVN BGP agent include_tasks: ovn_bgp_agent.yml when: tripleo_frr_ovn_bgp_agent_enable | bool