--- # Copyright 2015, Rackspace US, Inc. # # 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. - import_playbook: setting-nodepool-variables.yml - name: Make /lib/modules accessible on neutron_agent containers hosts: neutron_agent # We explicitly do not use 'remote_user: root' here because the # play totally fails to apply the extra container config through # delegation. become: True gather_facts: true any_errors_fatal: true vars: kernel_module_path: apt: "{{ ansible_facts['distribution_release'] != 'focal' | ternary('lib/modules', 'usr/lib/modules') }}" dnf: "usr/lib/modules" vars_files: - test-vars.yml tasks: - name: Neutron extra lxc config lxc_container: name: "{{ container_name }}" container_command: | [[ ! -d "/{{ kernel_module_path[ansible_facts['pkg_mgr']] }}" ]] && mkdir -p "/{{ kernel_module_path[ansible_facts['pkg_mgr']] }}" container_config: - "lxc.apparmor.profile=unconfined" - "lxc.cgroup.devices.allow=a *:* rmw" - "lxc.mount.entry=/{{ kernel_module_path[ansible_facts['pkg_mgr']] }} {{ kernel_module_path[ansible_facts['pkg_mgr']] }} none bind 0 0" delegate_to: "{{ physical_host }}" - name: Wait for container connectivity wait_for_connection: connect_timeout: "{{ lxc_container_wait_params.connect_timeout | default(omit) }}" delay: "{{ lxc_container_wait_params.delay | default(omit) }}" sleep: "{{ lxc_container_wait_params.sleep | default(omit) }}" timeout: "{{ lxc_container_wait_params.timeout | default(omit) }}" - name: Prepare for neutron services hosts: neutron_all remote_user: root gather_facts: true any_errors_fatal: true vars: required_packages: apt: - "libffi-dev" dnf: - "libffi-devel" vars_files: - test-vars.yml tasks: # NOTE: These are typically installed in the repo server where we build the # neutron wheel - name: Install packages required to build neutron python package package: name: "{{ required_packages[ansible_facts['pkg_mgr']] }}" state: present register: install_packages until: install_packages is success retries: 5 delay: 2 - name: Deploy neutron server hosts: neutron_all remote_user: root gather_facts: true any_errors_fatal: true vars_files: - test-vars.yml roles: - role: "os_neutron"