Playbooks I use for my homelab
1- hosts: remote_logging_clients
2 gather_facts: true
3 become: true
4 tasks:
5 - name: Ensure rsyslog is installed
6 ansible.builtin.package:
7 name: rsyslog
8 state: latest
9 when: ansible_system == "Linux"
10 - name: Ensure rsyslog is enabled
11 ansible.builtin.systemd_service:
12 name: rsyslog
13 enabled: true
14 state: started
15 when: ansible_service_mgr == "systemd"
16 - name: Remove any forwarding file if exists
17 ansible.builtin.file:
18 path: /etc/rsyslog.d/forward.conf
19 state: absent
20 when: ansible_system == "Linux"
21 - name: Get remote logging server headnet IP address
22 ansible.builtin.shell: tailscale status | grep "aux" | awk '{print $1}'
23 register: ctrl_headnet_ip_addr
24 changed_when: false
25 failed_when: ctrl_headnet_ip_addr.rc != 0
26 - name: Configure log forwarding
27 ansible.builtin.blockinfile:
28 path: /etc/rsyslog.d/forward.conf
29 create: true
30 owner: root
31 group: root
32 mode: 0644
33 block: |
34 # Forward to aux.carp-wyvern.ts.net ({{ctrl_headnet_ip_addr.stdout}})
35 *.* action(type="omfwd" target="{{ctrl_headnet_ip_addr.stdout}}" port="514" protocol="tcp"
36 action.resumeRetryCount="100"
37 queue.type="linkedList" queue.size="10000")
38 when: ansible_system == "Linux"
39 - name: Restart rsyslog
40 ansible.builtin.systemd_service:
41 name: rsyslog
42 enabled: true
43 state: restarted
44 when: ansible_service_mgr == "systemd"
45 - name: Set syslog flags for remote logging on FreeBSD
46 ansible.builtin.shell: sysrc syslog_flags="-s -v -v"
47 register: set_syslog_flags
48 changed_when: '"syslog_flags: -> YES" in set_syslog_flags.stdout'
49 when: ansible_service_mgr == "bsdinit"
50 - name: Set log forwarding on FreeBSD
51 ansible.builtin.lineinfile:
52 path: /etc/syslog.conf
53 regexp: '^\*\.\*'
54 line: "*.* @{{ctrl_headnet_ip_addr.stdout}}"
55 owner: root
56 group: wheel
57 mode: 0644
58 when: ansible_system == "FreeBSD"
59 - name: Restart syslogd
60 ansible.builtin.service:
61 name: syslogd
62 state: restarted
63 when: ansible_service_mgr == "bsdinit"