Skip to content

The Potos Runtime Flow

sequenceDiagram
    autonumber
    participant T   as systemd timer<br/>(<client>-ansible-pull)
    participant S1  as Stage 1<br/>(potos.base.prepare)
    participant S2  as Stage 2<br/>(potos.base.apply)
    participant SR  as Specs repository

    Note over T,S2: Periodic run
    T->>S1: ansible-playbook potos.base.prepare<br/>-e potos_runtype=<runtype>
    S1->>S1: load /etc/potos/config.yml
    S1->>S1: read /etc/potos/specs_token
    S1->>SR: git clone (wipe + shallow)
    SR-->>S1: specs tree + runtime.yml + requirements.yml
    S1->>S1: ansible-galaxy install -> .galaxy/
    S1->>S2: ansible-playbook potos.base.apply<br/>-i system -i specs/inventory<br/>-e potos_specs_dir=...<br/>ANSIBLE_*_PATH=specs/.galaxy/...
    S2->>S2: include_vars runtime.yml
    S2->>S2: include_role per entry of<br/>runs.runtypes[runtype]