Skip to content

Commit 1d3b3f9

Browse files
authored
Allow Custom Repository when Installing Modules (#16)
* Adding ability to set repo for module install, rename apt key variables, task updates * Resolving lint failures * Fixing old signing key name * Updating dependancy versions.
1 parent d8205de commit 1d3b3f9

File tree

9 files changed

+69
-34
lines changed

9 files changed

+69
-34
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
ansible-core==2.14.3
22
jinja2==3.1.2
3-
ansible-lint==6.14.1
4-
yamllint==1.29.0
3+
ansible-lint==6.14.3
4+
yamllint==1.30.0
55
molecule==4.0.4
66
molecule-plugins[docker]==23.0.0
77
docker==6.0.1

defaults/main.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,22 @@ nms_clickhouse_release_kind: lts
3030
nms_remove_certs: true
3131

3232
## By default, no NMS modules are installed.
33-
## If version is not set or is absent, the latest version is installed.
34-
## If setup is not set or is absent, the value from the nms_setup is used.
33+
## If 'version' is not set or is absent, the latest version is installed.
34+
## If 'setup' is not set or is absent, the value from the nms_setup is used.
35+
## If modules need to be installed from a different repository, set 'yum_repo' or 'apt_repo'.
36+
## 'yum_gpgcheck' and 'apt_verify' are additional apt and yum options that can also be set.
37+
## Valid inputs are 'true' or 'false'. If these aren't defined, it will use the default values
38+
## from the 'ansible.builtin.yum_repository' or 'ansible.builtin.apt_repository' modules.
3539
nms_modules: []
3640
# - name: acm
3741
# version: ''
3842
# setup: install
3943
# - name: sm
4044
# version: ''
4145
# setup: install
46+
# - name: acm
47+
# yum_repo: install
48+
# yum_gpgcheck: false
49+
# - name: acm
50+
# apt_repo: install
51+
# apt_validate: false

molecule/modules/converge.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@
1616
key: license/nginx-repo.key
1717
nms_modules:
1818
- name: acm
19-
- name: sm
19+
- name: sm

molecule/modules/verify.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
url: https://localhost/modules
4545
status_code: 200
4646
validate_certs: false
47-
return_content: yes
47+
return_content: true
4848
body_format: json
4949
register: response
5050
failed_when: '("API Connectivity Manager" and "Security Monitoring") not in (response.json | map(attribute="name") | list)'

molecule/plus-count-upgrade/converge.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
ansible.builtin.systemd:
3030
name: nginx-agent
3131
state: stopped
32-
32+
3333
- name: (RedHat) Upgrading nginx-agent
3434
ansible.builtin.yum:
3535
name: nginx-agent

tasks/nms/install-debian.yml

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,34 @@
11
---
2-
- name: (Debian/Ubuntu) {{ (nms_cleanup_status is defined) | ternary('Remove', 'Configure') }} NGINX Management Suite Apt repository
2+
- name: (Debian/Ubuntu) {{ 'Remove' if nms_cleanup_status is defined or nms_state == 'absent' else 'Configure' }} NGINX Management Suite Apt repository
33
ansible.builtin.apt_repository:
4-
repo: "{{ nms_debian_signing_key_repo }}"
4+
repo: "{{ nms_repository_debian | default(nms_default_repository_debian) }}"
55
state: "{{ nms_cleanup_status | default((nms_setup == 'uninstall') | ternary('absent', 'present')) }}"
66
update_cache: false
77
filename: nms
88

9+
- name: (Debian/Ubuntu) {{ 'Remove' if nms_cleanup_status is defined or nms_state == 'absent' else 'Configure' }} NMS Module Apt repository
10+
ansible.builtin.apt_repository:
11+
repo: "{{ item.apt_repo }}"
12+
state: "{{ nms_cleanup_status | default(nms_state if item.setup is not defined else nms_state_vals[item.setup]) }}"
13+
update_cache: false
14+
validate_certs: "{{ omit if item.apt_validate is not defined else item.apt_validate }}"
15+
filename: "nms-{{ item.name }}"
16+
loop: "{{ nms_modules }}"
17+
loop_control:
18+
label: "{{ item.name }}"
19+
when:
20+
- nms_modules is defined
21+
- item.apt_repo is defined
22+
923
- name: (Debian/Ubuntu) {{ nms_cleanup_status is defined | ternary('Remove', 'Configure') }} NGINX Plus license verification
1024
ansible.builtin.blockinfile:
1125
path: /etc/apt/apt.conf.d/90nginx
1226
create: true
1327
block: |
14-
Acquire::https::{{ (nginx_repository | default(nginx_plus_default_repository_debian)) | regex_search('(?<=https://)[^/]*') }}::Verify-Peer "true";
15-
Acquire::https::{{ (nginx_repository | default(nginx_plus_default_repository_debian)) | regex_search('(?<=https://)[^/]*') }}::Verify-Host "true";
16-
Acquire::https::{{ (nginx_repositorynsibl | default(nginx_plus_default_repository_debian)) | regex_search('(?<=https://)[^/]*') }}::SslCert "/etc/ssl/nginx/nginx-repo.crt";
17-
Acquire::https::{{ (nginx_repository | default(nginx_plus_default_repository_debian)) | regex_search('(?<=https://)[^/]*') }}::SslKey "/etc/ssl/nginx/nginx-repo.key";
28+
Acquire::https::{{ (nms_repository_debian | default(nms_default_repository_debian)) | regex_search('(?<=https://)[^/]*') }}::Verify-Peer "true";
29+
Acquire::https::{{ (nms_repository_debian | default(nms_default_repository_debian)) | regex_search('(?<=https://)[^/]*') }}::Verify-Host "true";
30+
Acquire::https::{{ (nms_repository_debian | default(nms_default_repository_debian)) | regex_search('(?<=https://)[^/]*') }}::SslCert "/etc/ssl/nginx/nginx-repo.crt";
31+
Acquire::https::{{ (nms_repository_debian | default(nms_default_repository_debian)) | regex_search('(?<=https://)[^/]*') }}::SslKey "/etc/ssl/nginx/nginx-repo.key";
1832
state: "{{ nms_cleanup_status | default((nms_setup == 'uninstall') | ternary('absent', 'present')) }}"
1933
mode: "0444"
2034

@@ -26,8 +40,11 @@
2640
state: "{{ nms_state }}"
2741
register: nms_install_state
2842
when: nms_cleanup_status is not defined
43+
notify:
44+
- Restart NGINX Management Suite
45+
- Restart NGINX
2946

30-
- name: (Debian/Ubuntu) NMS Modules
47+
- name: (Debian/Ubuntu) {{ nms_setup if item.setup is not defined else item.setup | capitalize }} NMS Modules
3148
ansible.builtin.apt:
3249
name: "{{ nms_module_vals[item.name]['package_name'] }}{{ '' if (item.version is not defined or item.version == '') else '=' + item.version }}"
3350
update_cache: true

tasks/nms/install-redhat.yml

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,31 @@
11
---
2-
- name: (CentOS/Oracle Linux/RHEL) {{ (nms_cleanup_status is defined) | ternary('Remove', 'Configure') }} NGINX Management Suite Yum repository
2+
- name: (Amazon/CentOS/Oracle Linux/RHEL) {{ 'Remove' if nms_cleanup_status is defined or nms_state == 'absent' else 'Configure' }} NGINX Management Suite Yum repository
33
ansible.builtin.yum_repository:
44
name: nms
55
description: NGINX Management Suite
6-
baseurl: "{{ nms_centos_yum_repo }}"
6+
baseurl: "{{ nms_repository_redhat | default(lookup('vars', 'nms_default_repository_' + ((ansible_facts['distribution'] == 'Amazon') | ternary('amazon', 'centos')))) }}"
77
enabled: true
88
gpgcheck: "{{ omit if nms_gpgcheck is not defined else nms_gpgcheck }}"
99
sslclientcert: "/etc/ssl/nginx/nginx-repo.crt"
1010
sslclientkey: "/etc/ssl/nginx/nginx-repo.key"
1111
state: "{{ nms_cleanup_status | default('present') }}"
12-
when: ansible_facts['distribution'] != "Amazon"
1312

14-
- name: (Amazon) {{ (nms_cleanup_status is defined) | ternary('Remove', 'Configure') }} NGINX Management Suite Yum repository
13+
- name: (Amazon/CentOS/Oracle Linux/RHEL) {{ 'Remove' if nms_cleanup_status is defined or nms_state == 'absent' else 'Configure' }} NMS Module Yum repository
1514
ansible.builtin.yum_repository:
16-
name: nms
17-
description: NGINX Management Suite
18-
baseurl: "{{ nms_amazon_yum_repo }}"
15+
name: "nms-{{ item.name }}"
16+
description: "NGINX Management Suite - {{ item.name }}"
17+
baseurl: "{{ item.yum_repo }}"
1918
enabled: true
20-
gpgcheck: "{{ omit if nms_gpgcheck is not defined else nms_gpgcheck }}"
19+
gpgcheck: "{{ omit if item.yum_gpgcheck is not defined else item.yum_gpgcheck }}"
2120
sslclientcert: "/etc/ssl/nginx/nginx-repo.crt"
2221
sslclientkey: "/etc/ssl/nginx/nginx-repo.key"
23-
state: "{{ nms_cleanup_status | default('present') }}"
24-
when: ansible_facts['distribution'] == "Amazon"
22+
state: "{{ nms_cleanup_status | default(nms_state if item.setup is not defined else nms_state_vals[item.setup]) }}"
23+
loop: "{{ nms_modules }}"
24+
loop_control:
25+
label: "{{ item.name }}"
26+
when:
27+
- nms_modules is defined
28+
- item.yum_repo is defined
2529

2630
- name: (Amazon Linux/CentOS/Oracle Linux/RHEL) {{ nms_setup | capitalize }} NGINX Instance Manager
2731
ansible.builtin.yum:
@@ -32,8 +36,11 @@
3236
update_only: "{{ nms_setup | lower == 'upgrade' }}"
3337
register: nms_install_state
3438
when: nms_cleanup_status is not defined
39+
notify:
40+
- Restart NGINX Management Suite
41+
- Restart NGINX
3542

36-
- name: (Amazon Linux/CentOS/Oracle Linux/RHEL) NMS Modules
43+
- name: (Amazon Linux/CentOS/Oracle Linux/RHEL) {{ nms_setup if item.setup is not defined else item.setup | capitalize }} NMS Modules
3744
ansible.builtin.yum:
3845
name: "{{ nms_module_vals[item.name]['package_name'] }}{{ '' if (item.version is not defined or item.version == '') else '-' + item.version }}"
3946
update_cache: true

tasks/prerequisites/prereq-debian.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66

77
- name: (Debian) Import NGINX signing key from url
88
ansible.builtin.apt_key:
9-
id: "{{ nms_debian_signing_key_id }}"
10-
keyring: "{{ nms_debian_signing_key_keyring_path }}"
9+
id: "{{ nms_key_id | default(nms_default_key_id) }}"
10+
keyring: "{{ nms_keyring_path | default(nms_default_keyring_path) }}"
1111
url: "https://nginx.org/keys/nginx_signing.key"

vars/main.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,15 @@ nms_supported_distributions:
4343
versions: [18.04, 20.04, 22.04]
4444
architectures: [x86_64]
4545

46-
# Debian specific repo for NMS install
47-
nms_debian_signing_key_id: 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
48-
nms_debian_signing_key_keyring_path: /usr/share/keyrings/nginx-archive-keyring.gpg
49-
nms_debian_signing_key_repo: deb [signed-by={{ nms_debian_signing_key_keyring_path }}] https://pkgs.nginx.com/nms/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} nginx-plus
46+
# Default NMS apt signing key
47+
nms_default_key_id: 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
48+
nms_default_keyring_path: /usr/share/keyrings/nginx-archive-keyring.gpg
49+
50+
# Default NMS repositories
51+
nms_default_repository_debian: deb [signed-by={{ nms_keyring_path | default(nms_default_keyring_path) }}] https://pkgs.nginx.com/nms/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} nginx-plus
52+
nms_default_repository_centos: https://pkgs.nginx.com/nms/centos/$releasever/$basearch/
53+
nms_default_repository_amazon: https://pkgs.nginx.com/nms/amzn2/$releasever/$basearch/
5054

51-
# RPM specific repo for NMS install
52-
nms_centos_yum_repo: https://pkgs.nginx.com/nms/centos/$releasever/$basearch/
53-
nms_amazon_yum_repo: https://pkgs.nginx.com/nms/amzn2/$releasever/$basearch/
5455
# # For development purposes for disabling gpg check when installing on OS with RPM repo.
5556
# nms_gpgcheck: false
5657

0 commit comments

Comments
 (0)