--- # Install and configure Grafana Alloy log shipping agent. # Debian/Ubuntu: alloy package (included in default repos). # Alpine: alloy package (included in default repos). # FreeBSD: pkgng (grafana-alloy). # ── Debian/Ubuntu ──────────────────────────────────────────────────────────── - name: Install alloy (Debian) ansible.builtin.apt: name: alloy state: present when: ansible_facts["os_family"] == "Debian" # ── Alpine ─────────────────────────────────────────────────────────────────── - name: Install alloy (Alpine) community.general.apk: name: alloy state: present when: ansible_facts["os_family"] == "Alpine" - name: Fix alloy storage dir ownership (Alpine) ansible.builtin.file: path: /var/lib/alloy state: directory owner: alloy group: alloy recurse: true when: ansible_facts["os_family"] == "Alpine" # ── FreeBSD: pkgng ──────────────────────────────────────────────────────────── - name: Install alloy (FreeBSD) community.general.pkgng: name: alloy state: present when: ansible_facts["os_family"] == "FreeBSD" - name: Fix alloy storage dir ownership (FreeBSD) ansible.builtin.file: path: /var/alloy state: directory owner: nobody group: nobody mode: '0755' when: ansible_facts["os_family"] == "FreeBSD" # ── Docker socket access ───────────────────────────────────────────────────── - name: Add alloy to docker group ansible.builtin.user: name: alloy groups: docker append: true when: "'docker_hosts' in group_names" notify: "Restart alloy ({{ ansible_facts['os_family'] }})" # ── Config — all OS ─────────────────────────────────────────────────────────── - name: Set alloy config path fact ansible.builtin.set_fact: alloy_config_path: >- {{ '/usr/local/etc/alloy.flow' if ansible_facts['os_family'] == 'FreeBSD' else '/etc/alloy/config.alloy' }} - name: Deploy alloy config ansible.builtin.template: src: alloy.config.alloy.j2 dest: "{{ alloy_config_path }}" mode: '0644' notify: "Restart alloy ({{ ansible_facts['os_family'] }})" # ── Service enable + start ──────────────────────────────────────────────────── - name: Enable and start alloy (Debian) ansible.builtin.service: name: alloy state: started enabled: true when: ansible_facts["os_family"] == "Debian" - name: Enable and start alloy (Alpine) ansible.builtin.service: name: alloy state: started enabled: true when: ansible_facts["os_family"] == "Alpine" - name: Enable alloy (FreeBSD) community.general.sysrc: name: alloy_enable value: "YES" when: ansible_facts["os_family"] == "FreeBSD" - name: Start alloy (FreeBSD) ansible.builtin.service: name: alloy state: started when: ansible_facts["os_family"] == "FreeBSD"