Simplify the Seriatim role

This commit is contained in:
2026-09-08 01:07:23 +00:00
parent 6fb1aa24cc
commit 325a5c7901
10 changed files with 200 additions and 916 deletions

View File

@@ -1,111 +1,73 @@
---
- name: Verify Seriatim installation
hosts: seriatim
gather_facts: true
- name: Verify the Seriatim installation
hosts: localhost
connection: local
gather_facts: false
become: true
vars:
seriatim_expected_commit: 0fc92f364316c874d366b00cdc884a33e1900b25
seriatim_expected_version: v1.5.0
seriatim_verify_source_dir: /usr/local/src/seriatim
seriatim_verify_binary_path: /usr/local/bin/seriatim
seriatim_verify_state_dir: /usr/local/src/seriatim.ansible-build-state
seriatim_source_dir: /usr/local/src/seriatim
seriatim_binary_path: /usr/local/bin/seriatim
tasks:
- name: Inspect Seriatim source directory
- name: Inspect the source directory
ansible.builtin.stat:
path: "{{ seriatim_verify_source_dir }}"
register: seriatim_verify_source_stat
path: "{{ seriatim_source_dir }}"
register: seriatim_source
- name: Inspect installed Seriatim binary
ansible.builtin.stat:
path: "{{ seriatim_verify_binary_path }}"
checksum_algorithm: sha256
register: seriatim_verify_binary_stat
- name: Inspect Seriatim build state directory
ansible.builtin.stat:
path: "{{ seriatim_verify_state_dir }}"
register: seriatim_verify_state_stat
- name: Inspect Seriatim build state files
ansible.builtin.stat:
path: "{{ seriatim_verify_state_dir }}/{{ item }}"
loop:
- build-inputs.json
- fingerprint.sha256
- binary.sha256
register: seriatim_verify_state_file_stats
- name: Resolve installed Seriatim source commit
- name: Find incorrectly owned source entries
ansible.builtin.command:
argv:
- /usr/bin/git
- find
- "{{ seriatim_source_dir }}"
- (
- -not
- -user
- root
- -or
- -not
- -group
- root
- )
- -print
- -quit
register: seriatim_source_ownership
changed_when: false
- name: Read the selected source commit
ansible.builtin.command:
argv:
- git
- -C
- "{{ seriatim_verify_source_dir }}"
- "{{ seriatim_source_dir }}"
- rev-parse
- HEAD
register: seriatim_verify_commit
register: seriatim_source_commit
changed_when: false
- name: Inspect installed Seriatim source cleanliness
ansible.builtin.command:
argv:
- /usr/bin/git
- -C
- "{{ seriatim_verify_source_dir }}"
- status
- --porcelain
- --untracked-files=all
- --ignored
register: seriatim_verify_source_status
changed_when: false
- name: Inspect the installed binary
ansible.builtin.stat:
path: "{{ seriatim_binary_path }}"
register: seriatim_binary
- name: Read installed Seriatim version
- name: Read the installed version
ansible.builtin.command:
argv:
- "{{ seriatim_verify_binary_path }}"
- "{{ seriatim_binary_path }}"
- --version
register: seriatim_verify_version
register: seriatim_version_output
changed_when: false
- name: Read stored Seriatim build inputs
ansible.builtin.slurp:
src: "{{ seriatim_verify_state_dir }}/build-inputs.json"
register: seriatim_verify_inputs
- name: Read stored Seriatim fingerprint
ansible.builtin.slurp:
src: "{{ seriatim_verify_state_dir }}/fingerprint.sha256"
register: seriatim_verify_fingerprint
- name: Read stored Seriatim checksum
ansible.builtin.slurp:
src: "{{ seriatim_verify_state_dir }}/binary.sha256"
register: seriatim_verify_checksum
- name: Require valid Seriatim installation state
- name: Assert the installation contract
ansible.builtin.assert:
that:
- ansible_facts.distribution == 'Ubuntu'
- ansible_facts.distribution_version is version('26.04', '==')
- ansible_facts.architecture in ['x86_64', 'aarch64']
- seriatim_verify_source_stat.stat.isdir
- seriatim_verify_source_stat.stat.pw_name == 'root'
- seriatim_verify_source_stat.stat.gr_name == 'root'
- seriatim_verify_binary_stat.stat.isreg
- seriatim_verify_binary_stat.stat.pw_name == 'root'
- seriatim_verify_binary_stat.stat.gr_name == 'root'
- seriatim_verify_binary_stat.stat.mode == '0755'
- seriatim_verify_state_stat.stat.isdir
- seriatim_verify_state_stat.stat.pw_name == 'root'
- seriatim_verify_state_stat.stat.gr_name == 'root'
- seriatim_verify_state_stat.stat.mode == '0755'
- seriatim_verify_state_file_stats.results | map(attribute='stat.isreg') | unique | list == [true]
- seriatim_verify_state_file_stats.results | map(attribute='stat.pw_name') | unique | list == ['root']
- seriatim_verify_state_file_stats.results | map(attribute='stat.gr_name') | unique | list == ['root']
- seriatim_verify_state_file_stats.results | map(attribute='stat.mode') | unique | list == ['0644']
- seriatim_verify_commit.stdout == seriatim_expected_commit
- seriatim_verify_source_status.stdout == ''
- seriatim_verify_version.stdout == 'seriatim version ' ~ seriatim_expected_version
- (seriatim_verify_inputs.content | b64decode | trim | hash('sha256')) == (seriatim_verify_fingerprint.content | b64decode | trim)
- seriatim_verify_binary_stat.stat.checksum == (seriatim_verify_checksum.content | b64decode | trim)
fail_msg: Installed Seriatim source, binary, or build state is inconsistent.
- seriatim_source.stat.isdir
- seriatim_source.stat.pw_name == "root"
- seriatim_source.stat.gr_name == "root"
- seriatim_source_ownership.stdout == ""
- seriatim_source_commit.stdout == seriatim_expected_commit
- seriatim_binary.stat.isreg
- seriatim_binary.stat.pw_name == "root"
- seriatim_binary.stat.gr_name == "root"
- seriatim_binary.stat.mode == "0755"
- seriatim_version_output.stdout == "seriatim version " ~ seriatim_expected_version