Skip to content

Commit be1aa5c

Browse files
Fix redis offline install (itential#252)
* Remove offline-install.yml * Print details when installing Redis offline
1 parent aeca7b2 commit be1aa5c

File tree

10 files changed

+77
-95
lines changed

10 files changed

+77
-95
lines changed

docs/redis_guide.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ The following tables lists the default variables located in `roles/redis/default
8080
| Variable | Type | Description | Default Value |
8181
| :------- | :--- | :---------- | :------------ |
8282
| `redis_install_from_source` | String | The method used to install Redis. Set to `true` to install from source (default). Set to `false` to install using DNF packages. | `true` |
83-
| `redis_dependency_packages` | List | The dependency packages required to run Redis | See role. |
8483
| `redis_build_packages` | List | The packages required to build Redis from source | See role. |
8584
| `redis_security_packages` | List | The packages required to configure SELinux | See role. |
8685
| `redis_packages` | List | The Redis packages to install | Varies depending on OS and Platform release |

roles/redis/defaults/main/install.yml

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
# Copyright (c) 2024, Itential, Inc
22
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
33
---
4-
redis_dependency_packages:
5-
- tar
6-
- unzip
7-
4+
# Packages required to configure SELinux
85
redis_security_packages:
96
- policycoreutils-python-utils
107

@@ -15,6 +12,8 @@ redis_install_from_source: true
1512

1613
# Packages required to build Redis from source
1714
redis_build_packages:
15+
- tar
16+
- unzip
1817
- gcc
1918
- gcc-c++
2019
- make

roles/redis/tasks/configure-selinux.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,19 @@
1010
state: present
1111
update_cache: true
1212
when:
13+
- not offline_install_enabled | bool
1314
- redis_security_packages is defined
1415
- redis_security_packages is iterable
1516
- redis_security_packages | length > 0
1617

18+
- name: Install Redis security packages (offline)
19+
ansible.builtin.import_role:
20+
name: offline
21+
tasks_from: install-rpms
22+
when: offline_install_enabled | bool
23+
vars:
24+
offline_rpms_path: "{{ redis_offline_control_node_rpms_dir }}/security"
25+
1726
- name: SELinux - Install custom profiles
1827
ansible.builtin.include_role:
1928
name: selinux

roles/redis/tasks/download-packages.yml

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,23 @@
1010
ansible.builtin.include_tasks:
1111
file: validate-vars-offline.yml
1212

13+
- name: Download Redis security RPMs
14+
ansible.builtin.import_role:
15+
name: offline
16+
tasks_from: download-rpms
17+
vars:
18+
offline_download_method: yum_module
19+
offline_download_packages: "{{ redis_security_packages }} "
20+
offline_download_dir: "{{ redis_offline_target_node_rpms_dir }}/security"
21+
22+
- name: Copy Redis dependency RPMs to control node
23+
ansible.builtin.import_role:
24+
name: offline
25+
tasks_from: fetch-packages
26+
vars:
27+
offline_src_dir: "{{ redis_offline_target_node_rpms_dir }}/security"
28+
offline_dest_dir: "{{ redis_offline_control_node_rpms_dir }}/security"
29+
1330
- name: Download package from Remi repo
1431
when: not redis_install_from_source | bool
1532
block:
@@ -20,23 +37,6 @@
2037
- redis_packages is defined
2138
- redis_packages is search('remi')
2239

23-
- name: Download Redis dependency RPMs
24-
ansible.builtin.import_role:
25-
name: offline
26-
tasks_from: download-rpms
27-
vars:
28-
offline_download_method: yum_module
29-
offline_download_packages: "{{ redis_dependency_packages }} "
30-
offline_download_dir: "{{ redis_offline_target_node_rpms_dir }}/dependencies"
31-
32-
- name: Copy Redis dependency RPMs to control node
33-
ansible.builtin.import_role:
34-
name: offline
35-
tasks_from: fetch-packages
36-
vars:
37-
offline_src_dir: "{{ redis_offline_target_node_rpms_dir }}/dependencies"
38-
offline_dest_dir: "{{ redis_offline_control_node_rpms_dir }}/dependencies"
39-
4040
- name: Download Redis RPMs
4141
ansible.builtin.import_role:
4242
name: offline

roles/redis/tasks/install-common.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@
1111
name: vm.overcommit_memory
1212
value: 1
1313

14-
- name: Install Redis dependency packages
15-
ansible.builtin.dnf:
16-
name: "{{ redis_dependency_packages }}"
17-
state: present
18-
update_cache: true
19-
2014
# Check if firewalld is running, if it is then open the appropriate ports
2115
- name: Gather service facts
2216
ansible.builtin.service_facts:
Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
11
# Copyright (c) 2024, Itential, Inc
22
# GNU General Public License v3.0+ (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
33
---
4-
- name: Include tasks to install Remi repo
5-
ansible.builtin.include_tasks:
6-
file: install-remi-repo.yml
7-
when:
8-
- redis_packages is defined
9-
- redis_packages is search('remi')
4+
- name: Install Redis from packages
5+
when: not offline_install_enabled | bool
6+
block:
7+
- name: Include tasks to install Remi repo
8+
ansible.builtin.include_tasks:
9+
file: install-remi-repo.yml
10+
when:
11+
- redis_packages is defined
12+
- redis_packages is search('remi')
1013

11-
- name: Install Redis from YUM repo
12-
ansible.builtin.package:
13-
name: '{{ redis_packages }}'
14-
state: present
15-
update_cache: true
16-
enablerepo: "{{ redis_packages is search('remi') | ternary('remi', omit) }}"
14+
- name: Install Redis from packages
15+
ansible.builtin.dnf:
16+
name: '{{ redis_packages }}'
17+
state: present
18+
update_cache: true
19+
enablerepo: "{{ redis_packages is search('remi') | ternary('remi', omit) }}"
20+
21+
- name: Install Redis from packages (offline)
22+
ansible.builtin.import_role:
23+
name: offline
24+
tasks_from: install-rpms
25+
when: offline_install_enabled | bool
26+
vars:
27+
offline_rpms_path: "{{ redis_offline_control_node_rpms_dir }}/redis"

roles/redis/tasks/install-from-source.yml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
register: redis_build_temp_dir
3434

3535
- name: Online install
36-
when: not offline_install_enabled
36+
when: not offline_install_enabled | bool
3737
block:
3838
- name: Install Redis build packages
3939
ansible.builtin.dnf:
@@ -65,8 +65,15 @@
6565
redis_build_dir: "{{ unarchive_result.src.split('.tar.gz')[0] }}"
6666

6767
- name: Offline install
68-
when: offline_install_enabled
68+
when: offline_install_enabled | bool
6969
block:
70+
- name: Install Redis build packages (offline)
71+
ansible.builtin.import_role:
72+
name: offline
73+
tasks_from: install-rpms
74+
vars:
75+
offline_rpms_path: "{{ redis_offline_control_node_rpms_dir }}/build"
76+
7077
- name: Copy Redis archive (offline)
7178
ansible.builtin.copy:
7279
src: "{{ item }}"
@@ -87,7 +94,7 @@
8794
remote_src: true
8895
register: unarchive_result
8996

90-
- name: Set the Redis build directory
97+
- name: Set the Redis build directory (offline)
9198
ansible.builtin.set_fact:
9299
redis_build_dir: "{{ unarchive_result.src.split('.tar.gz')[0] }}"
93100

@@ -105,7 +112,7 @@
105112
path: "{{ redis_build_temp_dir.path }}"
106113
state: absent
107114

108-
- name: Uninstall Redis build packages
115+
- name: Uninstall Redis build packages (offline)
109116
ansible.builtin.dnf:
110117
name: "{{ item }}"
111118
allowerasing: true
@@ -114,7 +121,7 @@
114121
with_items: "{{ redis_install_result.results | selectattr('changed', 'equalto', true)
115122
| map(attribute='item') }}"
116123
when:
117-
- not offline_install_enabled
124+
- not offline_install_enabled | bool
118125
- redis_install_result.results is defined
119126
- redis_install_result.results is iterable
120127
- redis_install_result.results | length > 0

roles/redis/tasks/install-offline.yml

Lines changed: 0 additions & 34 deletions
This file was deleted.

roles/redis/tasks/main.yml

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,15 @@
1919
ansible.builtin.include_tasks:
2020
file: install-common.yml
2121

22-
- name: Include tasks to perform online installation
23-
when: not offline_install_enabled
24-
block:
25-
- name: Include tasks to install Redis using source
26-
ansible.builtin.include_tasks:
27-
file: install-from-source.yml
28-
when: redis_install_from_source | bool
29-
30-
- name: Include tasks to install Redis using repo
31-
ansible.builtin.include_tasks:
32-
file: install-from-repo.yml
33-
when: not redis_install_from_source | bool
22+
- name: Include tasks to install Redis from source
23+
ansible.builtin.include_tasks:
24+
file: install-from-source.yml
25+
when: redis_install_from_source | bool
3426

35-
- name: Include tasks to perform offline installation
27+
- name: Include tasks to install Redis using repo
3628
ansible.builtin.include_tasks:
37-
file: install-offline.yml
38-
when: offline_install_enabled
29+
file: install-from-repo.yml
30+
when: not redis_install_from_source | bool
3931

4032
- name: Configure SELinux
4133
tags: configure_selinux

roles/redis/tasks/validate-vars.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@
101101
- not redis_install_from_source | bool
102102

103103
- name: Print Redis installation details
104-
when: not offline_install_enabled
104+
when: not offline_install_enabled | bool
105105
block:
106106
- name: Print Redis installation details when installing from source
107107
ansible.builtin.debug:
@@ -112,3 +112,8 @@
112112
ansible.builtin.debug:
113113
msg: "Redis packages: {{ redis_packages }}"
114114
when: not redis_install_from_source | bool
115+
116+
- name: Print Redis installation details (offline)
117+
ansible.builtin.debug:
118+
msg: "Redis offline install using files from {{ redis_offline_control_node_root }}"
119+
when: offline_install_enabled | bool

0 commit comments

Comments
 (0)