rootfs: Get syslog servers from DHCP options
Instead of parsing the kernel command line to find the destination(s) where syslog messages should be forwarded, we can use a *dhcpcd* hook to get them from the DHCP lease.master
parent
c972de572c
commit
b29e32df30
|
@ -1 +1 @@
|
||||||
audit=0 panic=5 console=ttyAMA0 root=nbd:rosalina.pyrocufflink.blue:jenkinsagent rsyslog.dest=rosalina.pyrocufflink.blue sshkeys.root=http://rosalina.pyrocufflink.blue/~dustin/id_ed25519.pub
|
audit=0 panic=5 console=ttyAMA0 root=nbd:rosalina.pyrocufflink.blue:jenkinsagent sshkeys.root=http://rosalina.pyrocufflink.blue/~dustin/id_ed25519.pub
|
||||||
|
|
|
@ -39,6 +39,8 @@ option ntp_servers
|
||||||
# on the server to actually work.
|
# on the server to actually work.
|
||||||
option rapid_commit
|
option rapid_commit
|
||||||
|
|
||||||
|
option log_servers
|
||||||
|
|
||||||
# A ServerID is required by RFC2131.
|
# A ServerID is required by RFC2131.
|
||||||
require dhcp_server_identifier
|
require dhcp_server_identifier
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
gen_action() {
|
||||||
|
echo 'action('
|
||||||
|
echo ' type="omfwd"'
|
||||||
|
printf ' Target="%s"\n' "${1}"
|
||||||
|
echo ' Port="514"'
|
||||||
|
echo ' template="RSYSLOG_SyslogProtocol23Format"'
|
||||||
|
echo ')'
|
||||||
|
}
|
||||||
|
|
||||||
|
changed=false
|
||||||
|
if [ -n "${interface}" ] && [ -d /run/rsyslog.d ]; then
|
||||||
|
if [ -n "${new_log_servers}" ]; then
|
||||||
|
echo '# Generated by dhcpcd' > /run/rsyslog.d/dhcpcd."${interface}".conf
|
||||||
|
for s in ${new_log_servers}; do
|
||||||
|
gen_action "${s}" >> /run/rsyslog.d/dhcpcd."${interface}".conf
|
||||||
|
done
|
||||||
|
changed=true
|
||||||
|
elif [ -n "${old_log_servers}" ]; then
|
||||||
|
rm -f /run/rsyslog.d/dhcpcd."${interface}".conf
|
||||||
|
changed=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ${changed}; then
|
||||||
|
systemctl try-restart rsyslog
|
||||||
|
fi
|
|
@ -1,7 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=Generate rsyslog.conf
|
|
||||||
Before=rsyslog.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
ExecStart=/usr/libexec/gen-rsyslog-conf.sh
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Unit]
|
||||||
|
After=network-online.target
|
|
@ -1 +0,0 @@
|
||||||
../gen-rsyslog-conf.service
|
|
|
@ -1,12 +0,0 @@
|
||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
# shellcheck disable=SC2046
|
|
||||||
set -- $(cat /proc/cmdline)
|
|
||||||
while [ $# -ge 1 ]; do
|
|
||||||
case "$1" in
|
|
||||||
rsyslog.dest=*)
|
|
||||||
printf '*.* @%s\n' "${1#*=}" >> /run/rsyslog.d/remote.conf
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
Reference in New Issue