--- # Ship host/container logs → Loki and metrics → Prometheus via Grafana Alloy # (Promtail successor; also collects node + cAdvisor metrics). - name: alloy | ensure project directories ansible.builtin.file: path: "{{ item }}" state: directory owner: "{{ admin_user }}" group: "{{ admin_user }}" mode: "0750" loop: - "{{ apps_base_dir }}/observability" - "{{ alloy_dir }}" - name: alloy | config ansible.builtin.template: src: config.alloy.j2 dest: "{{ alloy_dir }}/config.alloy" owner: "{{ admin_user }}" group: "{{ admin_user }}" mode: "0644" register: _alloy_config - name: alloy | compose file ansible.builtin.template: src: docker-compose.yml.j2 dest: "{{ alloy_dir }}/docker-compose.yml" owner: "{{ admin_user }}" group: "{{ admin_user }}" mode: "0644" register: _alloy_compose - name: alloy | start / recreate container ansible.builtin.command: cmd: >- docker compose up -d --remove-orphans {{ '--force-recreate' if (_alloy_compose is changed or _alloy_config is changed) else '' }} chdir: "{{ alloy_dir }}" become: true become_user: "{{ admin_user }}" register: _alloy_up changed_when: >- _alloy_up.rc == 0 and ( 'Started' in (_alloy_up.stdout | default('')) or 'Recreated' in (_alloy_up.stdout | default('')) or 'Created' in (_alloy_up.stdout | default('')) or _alloy_compose is changed or _alloy_config is changed )