--- - name: Include OS family-specific variables include_vars: "{{ ansible_os_family }}.yml" - name: Ensure EPEL repo is installed package: name: epel-release state: present become: True when: - ansible_os_family == 'RedHat' - kolla_ansible_install_epel | bool - name: Ensure required packages are installed package: # NOTE(mgoddard): select non-empty packages. name: "{{ kolla_ansible_package_dependencies | select | list }}" state: present become: True - name: Ensure source code checkout parent directory exists file: path: "{{ kolla_ansible_source_path | dirname }}" state: directory owner: "{{ ansible_user_uid }}" group: "{{ ansible_user_gid }}" become: True when: kolla_ansible_ctl_install_type == 'source' - name: Ensure Kolla Ansible source code checkout exists git: repo: "{{ kolla_ansible_source_url }}" dest: "{{ kolla_ansible_source_path }}" version: "{{ kolla_ansible_source_version }}" when: kolla_ansible_ctl_install_type == 'source' - name: Ensure virtualenv parent directory exists file: path: "{{ kolla_ansible_venv | dirname }}" state: directory owner: "{{ ansible_user_uid }}" group: "{{ ansible_user_gid }}" become: True when: kolla_ansible_venv is not none # TODO(mgoddard): Remove this block when the previous release does not support # Python 2. - block: - name: Check if virtualenv is python 2 stat: path: "{{ kolla_ansible_venv }}/bin/python2" register: stat_result - name: Ensure python2 virtualenv is absent file: path: "{{ kolla_ansible_venv }}" state: absent when: stat_result.stat.exists when: - kolla_ansible_venv is not none - kolla_ansible_venv_python_major_version | int == 3 - name: Ensure the latest version of pip is installed pip: name: "{{ item.name }}" state: latest virtualenv: "{{ kolla_ansible_venv }}" virtualenv_python: "{{ kolla_ansible_venv_python }}" with_items: - { name: pip } - name: Ensure python requirements file exists template: src: requirements.txt.j2 dest: "{{ kolla_ansible_venv }}/requirements.txt" - name: Ensure required Python packages are installed pip: requirements: "{{ kolla_ansible_venv }}/requirements.txt" state: latest extra_args: "{% if kolla_upper_constraints_file %}-c {{ kolla_upper_constraints_file }}{% endif %}" virtualenv: "{{ kolla_ansible_venv }}" virtualenv_python: "{{ kolla_ansible_venv_python }}" # This is a workaround for the lack of a python package for libselinux-python # on PyPI. Without using --system-site-packages to create the virtualenv, it # seems difficult to ensure the selinux python module is available. It is a # dependency for Ansible when selinux is enabled. On CentOS 8, we can install # the selinux package from PyPI, however when using Python 3 on CentOS 7 this # does not work. - name: Ensure selinux Python package is linked into the virtualenv file: src: "/usr/lib64/python2.7/site-packages/selinux" dest: "{{ kolla_ansible_venv }}/lib/python2.7/site-packages/selinux" state: link when: - ansible_os_family == 'RedHat' - ansible_distribution_major_version | int == 7 - ansible_selinux != False - ansible_selinux.status != 'disabled' - kolla_ansible_venv_python_major_version | int == 2