|
2 | 2 | - name: Include OS family-specific variables
|
3 | 3 | include_vars: "{{ ansible_facts.os_family }}.yml"
|
4 | 4 |
|
5 |
| -- name: Ensure EPEL repo is installed |
6 |
| - package: |
7 |
| - name: epel-release |
8 |
| - state: present |
9 |
| - become: True |
| 5 | +- name: Gather the package facts |
| 6 | + ansible.builtin.package_facts: |
| 7 | + manager: auto |
| 8 | + |
| 9 | +- block: |
| 10 | + - name: Assert that epel-release package is installed if not using privilege escalation |
| 11 | + assert: |
| 12 | + that: "'epel-release' in ansible_facts.packages.keys()" |
| 13 | + fail_msg: >- |
| 14 | + The following packages are missing from your system: epel-release and |
| 15 | + privilege escalation is disabled. Please get your system administator |
| 16 | + to install these packages or enable kolla_ansible_control_host_become. |
| 17 | + when: |
| 18 | + - not kolla_ansible_control_host_become | bool |
| 19 | + |
| 20 | + - name: Ensure EPEL repo is installed |
| 21 | + package: |
| 22 | + name: epel-release |
| 23 | + state: present |
| 24 | + become: True |
| 25 | + when: "'epel-release' not in ansible_facts.packages.keys()" |
10 | 26 | vars:
|
11 | 27 | ansible_python_interpreter: /usr/bin/python3
|
12 | 28 | when:
|
13 | 29 | - ansible_facts.os_family == 'RedHat'
|
14 | 30 | - kolla_ansible_install_epel | bool
|
15 | 31 |
|
16 |
| -- name: Ensure required packages are installed |
17 |
| - package: |
18 |
| - # NOTE(mgoddard): select non-empty packages. |
19 |
| - name: "{{ kolla_ansible_package_dependencies | select | list }}" |
20 |
| - state: present |
21 |
| - cache_valid_time: "{{ apt_cache_valid_time if ansible_facts.os_family == 'Debian' else omit }}" |
22 |
| - update_cache: "{{ True if ansible_facts.os_family == 'Debian' else omit }}" |
| 32 | +- block: |
| 33 | + - name: Assert that all packages are installed if not using privilege escalation |
| 34 | + assert: |
| 35 | + that: missing_packages is falsy |
| 36 | + fail_msg: >- |
| 37 | + The following packages are missing from your system: |
| 38 | + {{ missing_packages | join(', ') }} and privilege escalation is disabled. Please get |
| 39 | + your system administator to install these packages or enable |
| 40 | + kolla_ansible_control_host_become. |
| 41 | + when: not kolla_ansible_control_host_become | bool |
| 42 | + |
| 43 | + - name: Ensure required packages are installed |
| 44 | + package: |
| 45 | + name: "{{ packages }}" |
| 46 | + state: present |
| 47 | + cache_valid_time: "{{ apt_cache_valid_time if ansible_facts.os_family == 'Debian' else omit }}" |
| 48 | + update_cache: "{{ True if ansible_facts.os_family == 'Debian' else omit }}" |
| 49 | + become: True |
| 50 | + when: missing_packages is truthy |
23 | 51 | vars:
|
| 52 | + # NOTE(mgoddard): select non-empty packages. |
24 | 53 | ansible_python_interpreter: /usr/bin/python3
|
25 |
| - become: True |
| 54 | + packages: "{{ kolla_ansible_package_dependencies | select | list }}" |
| 55 | + missing_packages: "{{ packages | difference(ansible_facts.packages.keys()) }}" |
26 | 56 |
|
27 | 57 | - name: Ensure source code checkout parent directory exists
|
28 | 58 | file:
|
29 | 59 | path: "{{ kolla_ansible_source_path | dirname }}"
|
30 | 60 | state: directory
|
31 | 61 | owner: "{{ ansible_facts.user_uid }}"
|
32 | 62 | group: "{{ ansible_facts.user_gid }}"
|
33 |
| - become: True |
| 63 | + become: "{{ kolla_ansible_control_host_become | bool }}" |
34 | 64 | when: kolla_ansible_ctl_install_type == 'source'
|
35 | 65 |
|
36 | 66 | - name: Ensure Kolla Ansible source code checkout exists
|
|
44 | 74 | file:
|
45 | 75 | path: "{{ kolla_ansible_venv }}"
|
46 | 76 | state: absent
|
47 |
| - become: True |
| 77 | + become: "{{ kolla_ansible_control_host_become | bool }}" |
48 | 78 | when:
|
49 | 79 | - kolla_ansible_venv is not none
|
50 | 80 | - (kolla_ansible_venv ~ '/bin/python') | realpath != kolla_ansible_venv_python | realpath
|
|
55 | 85 | state: directory
|
56 | 86 | owner: "{{ ansible_facts.user_uid }}"
|
57 | 87 | group: "{{ ansible_facts.user_gid }}"
|
58 |
| - become: True |
| 88 | + become: "{{ kolla_ansible_control_host_become | bool }}" |
59 | 89 | when: kolla_ansible_venv is not none
|
60 | 90 |
|
61 | 91 | - name: Ensure the latest version of pip is installed
|
|
0 commit comments