legacy-of-lunatic-kingdom: ship journald to VictoriaLogs
Assisted-by: GLM-5.3 via pi
change ntusqskzowlztnmzqmwtoxnqtvuoypus
commit a5aecfedb79fd41478eb95897b350ead4b06796a
author Alpha Chen <alpha@kejadlen.dev>
date
parent nkwqynuk
diff --git a/legacy-of-lunatic-kingdom/main.yml b/legacy-of-lunatic-kingdom/main.yml
index 937ea10..d2d0702 100644
--- a/legacy-of-lunatic-kingdom/main.yml
+++ b/legacy-of-lunatic-kingdom/main.yml
@@ -83,6 +83,7 @@
 - import_playbook: ../playbooks/podman.yml              # noqa: name[play]
 - import_playbook: ../playbooks/syncthing.yml           # noqa: name[play]
 - import_playbook: ../playbooks/unattended-upgrades.yml # noqa: name[play]
+- import_playbook: ../playbooks/journal-upload.yml      # noqa: name[play]
 
 # TODO
 # - restic
diff --git a/playbooks/journal-upload.yml b/playbooks/journal-upload.yml
new file mode 100644
index 0000000..1e07476
--- /dev/null
+++ b/playbooks/journal-upload.yml
@@ -0,0 +1,43 @@
+# https://docs.victoriametrics.com/victorialogs/data-ingestion/journald/
+- name: Ship journald to VictoriaLogs
+  tags: journal-upload
+  hosts: "{{ ansible_limit | default([]) }}"
+  become: true
+  vars:
+    # lotus-land-story uploads to itself over localhost instead.
+    journal_upload_url: http://lotus-land-story:9428/insert/journald
+  tasks:
+
+    - name: Assert distribution is Debian
+      ansible.builtin.assert:
+        that:
+          - ansible_facts["distribution"] == "Debian"
+        fail_msg: "This playbook only supports Debian distributions"
+
+    - name: Install systemd-journal-remote
+      ansible.builtin.apt:
+        name: systemd-journal-remote
+        state: present
+        update_cache: true
+
+    - name: Set remote URL for uploading
+      ansible.builtin.lineinfile:
+        path: /etc/systemd/journal-upload.conf
+        regexp: '^URL='
+        insertafter: '^# URL='
+        line: URL={{ journal_upload_url }}
+      notify: Restart journal-upload
+
+    - name: Enable and start journal-upload
+      ansible.builtin.systemd:
+        name: systemd-journal-upload
+        enabled: true
+        state: started
+
+  handlers:
+    - name: Restart journal-upload
+      ansible.builtin.systemd:
+        name: systemd-journal-upload
+        state: restarted
+
+# vim: ft=yaml.ansible