Skip to content

Commit 2ac05d1

Browse files
committed
diff requirements in ansible
1 parent 34b39fe commit 2ac05d1

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ venv
55
*.pyc
66
packer/openhpc2
77
.vscode
8+
requirements.yml.last

ansible/validate.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,33 @@
1010
name: passwords
1111
tasks_from: validate.yml
1212

13+
- name: Validate Ansible Galaxy installs are up to date
14+
hosts: localhost
15+
gather_facts: false
16+
become: false
17+
tasks:
18+
# Can't use e.g. ansible-galaxy {role,collection} list to check installed
19+
# vs desired, as git-installed collections do not provide any metadata for
20+
# the actual installed version.
21+
# So this compares requirements.yml against a .last version produced by a
22+
# successful dev/setup-env.sh run.
23+
- assert:
24+
that: "{{ _requirements_current == _requirements_installed }}"
25+
fail_msg: |
26+
Ansible Galaxy installs are out of date:
27+
28+
{% for req in _requirements_installed | difference(_requirements_current) %}
29+
{{ req }}
30+
{% endfor %}
31+
32+
Run dev/setup-env.sh to fix this.
33+
vars:
34+
# note difference filter requires lists, so need to rearrange yaml from files.
35+
_requirements_path: "{{ appliances_repository_root }}/requirements.yml"
36+
_requirements_current: "{{ (lookup('file', _requirements_path) | from_yaml).values() | flatten }}"
37+
# below produced by dev/setup-env.sh - gives empty list if file is missing:
38+
_requirements_installed: "{{ ((lookup('file', _requirements_path + '.last', errors='ignore') or '{}') | from_yaml ).values() | flatten }}"
39+
1340
- name: Ensure control node is in inventory
1441
hosts: all
1542
gather_facts: false

dev/setup-env.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,4 @@ ansible --version
3939
# Install or update ansible dependencies ...
4040
ansible-galaxy role install -fr requirements.yml -p ansible/roles
4141
ansible-galaxy collection install -fr requirements.yml -p ansible/collections
42+
cp requirements.yml requirements.yml.last

0 commit comments

Comments
 (0)