Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a09cbb-87c6-7900-a145-4ce53ba9f1a6
128 lines
4.3 KiB
YAML
128 lines
4.3 KiB
YAML
---
|
|
- name: Require versioned artifact and admitted signing-key delivery
|
|
ansible.builtin.assert:
|
|
that:
|
|
- railiance_clock_wheelhouse | length > 0
|
|
- railiance_clock_wheel_sha256 is match('^[0-9a-f]{64}$')
|
|
- railiance_clock_private_key_source | length > 0
|
|
- railiance_clock_kid | length > 0
|
|
- name: Create unprivileged authority account
|
|
ansible.builtin.user:
|
|
name: railiance-clock
|
|
system: true
|
|
shell: /usr/sbin/nologin
|
|
create_home: false
|
|
- name: Create root-owned install tree
|
|
ansible.builtin.file:
|
|
path: "{{ railiance_clock_install_root }}"
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: '0755'
|
|
- name: Create private signing-key directory
|
|
ansible.builtin.file:
|
|
path: "{{ railiance_clock_state_root }}"
|
|
state: directory
|
|
owner: railiance-clock
|
|
group: railiance-clock
|
|
mode: '0700'
|
|
- name: Create public health runtime directory
|
|
ansible.builtin.file:
|
|
path: "{{ railiance_clock_health_root }}"
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: '0755'
|
|
- name: Persist runtime directory creation across boot
|
|
ansible.builtin.copy:
|
|
dest: /etc/tmpfiles.d/railiance-clock.conf
|
|
content: "d {{ railiance_clock_health_root }} 0755 root root -\n"
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
- name: Verify selected wheel checksum on controller
|
|
ansible.builtin.stat:
|
|
path: "{{ railiance_clock_wheelhouse }}/railiance_clock-0.1.0-py3-none-any.whl"
|
|
checksum_algorithm: sha256
|
|
delegate_to: localhost
|
|
become: false
|
|
register: clock_wheel
|
|
- name: Refuse artifact drift
|
|
ansible.builtin.assert:
|
|
that: clock_wheel.stat.checksum == railiance_clock_wheel_sha256
|
|
- name: Copy offline wheelhouse with locked dependencies
|
|
ansible.builtin.copy:
|
|
src: "{{ railiance_clock_wheelhouse }}/"
|
|
dest: "{{ railiance_clock_install_root }}/wheels/"
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
register: clock_artifact_copy
|
|
- name: Install isolated authority package without network package lookup
|
|
ansible.builtin.pip:
|
|
name: railiance-clock==0.1.0
|
|
state: "{{ 'forcereinstall' if clock_artifact_copy.changed else 'present' }}"
|
|
virtualenv: "{{ railiance_clock_install_root }}/venv"
|
|
virtualenv_command: python3 -m venv
|
|
extra_args: "--no-index --find-links={{ railiance_clock_install_root }}/wheels"
|
|
notify: Restart admitted clock authority
|
|
- name: Deliver admitted signing key without logging values
|
|
ansible.builtin.copy:
|
|
src: "{{ railiance_clock_private_key_source }}"
|
|
dest: "{{ railiance_clock_state_root }}/signing.pem"
|
|
owner: railiance-clock
|
|
group: railiance-clock
|
|
mode: '0600'
|
|
no_log: true
|
|
diff: false
|
|
notify: Restart admitted clock authority
|
|
- name: Install prebuilt read-only kernel-health probe
|
|
ansible.builtin.copy:
|
|
src: "{{ railiance_clock_wheelhouse }}/railiance-clock-kernel-health"
|
|
dest: "{{ railiance_clock_install_root }}/kernel-health"
|
|
owner: root
|
|
group: root
|
|
mode: '0755'
|
|
- name: Write non-secret authority and health policy configuration
|
|
ansible.builtin.template:
|
|
src: "{{ item }}.json.j2"
|
|
dest: "{{ railiance_clock_install_root }}/{{ item }}.json"
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
loop: [authority, health-policy]
|
|
notify: Restart admitted clock authority
|
|
- name: Install host service units
|
|
ansible.builtin.template:
|
|
src: "{{ item }}.j2"
|
|
dest: "/etc/systemd/system/{{ item }}"
|
|
owner: root
|
|
group: root
|
|
mode: '0644'
|
|
loop: [railiance-clock.service, railiance-clock-health.service, railiance-clock-health.timer]
|
|
notify: Reload clock service units
|
|
- name: Load changed units before starting
|
|
ansible.builtin.meta: flush_handlers
|
|
- name: Export current host health
|
|
ansible.builtin.systemd:
|
|
name: railiance-clock-health.service
|
|
state: started
|
|
- name: Enable bounded periodic host-health export
|
|
ansible.builtin.systemd:
|
|
name: railiance-clock-health.timer
|
|
enabled: true
|
|
state: started
|
|
- name: Enable private authority
|
|
ansible.builtin.systemd:
|
|
name: railiance-clock.service
|
|
enabled: true
|
|
state: started
|
|
- name: Verify usable authority independently of service liveness
|
|
ansible.builtin.uri:
|
|
url: http://127.0.0.1:8787/readyz
|
|
return_content: true
|
|
status_code: 200
|
|
register: clock_ready
|
|
retries: 3
|
|
delay: 2
|
|
until: clock_ready.status == 200
|