Files
TWS-Semaphore/deploy-tws-motd
2026-01-19 20:51:18 -05:00

114 lines
3.0 KiB
Plaintext

---
- name: Deploy TWS MOTD (authoritative)
hosts: all
become: true
vars:
tws_org: "TheWrightServer"
tws_short: "TWS"
tasks:
# ----------------------------
# MOTD PIPELINE SANITIZATION
# ----------------------------
- name: Remove static Debian MOTD
file:
path: /etc/motd
state: absent
- name: Ensure dynamic MOTD symlink
file:
src: /run/motd.dynamic
dest: /etc/motd
state: link
- name: Disable Proxmox profile banner
file:
path: /etc/profile.d/pve.sh
state: absent
ignore_errors: true
# Debian runs pam_motd twice — we disable the login path
- name: Disable pam_motd in login (prevents duplicate MOTD)
replace:
path: /etc/pam.d/login
regexp: '^(session\s+optional\s+pam_motd.so.*)$'
replace: '# \1'
ignore_errors: true
# ----------------------------
# DISABLE DEFAULT MOTD SCRIPTS
# ----------------------------
- name: Find default MOTD scripts
find:
paths: /etc/update-motd.d
file_type: file
patterns:
- "10-help-text"
- "50-motd-news"
register: motd_noise
- name: Disable default MOTD noise
file:
path: "{{ item.path }}"
mode: "0644"
loop: "{{ motd_noise.files }}"
# ----------------------------
# DEPLOY TWS MOTD
# ----------------------------
- name: Deploy TWS MOTD script
copy:
dest: /etc/update-motd.d/10-tws
mode: "0755"
content: |
#!/bin/bash
ORG="{{ tws_org }}"
SHORT="{{ tws_short }}"
WIDTH=58
line() {
printf "║ %-*s ║\n" $((WIDTH-4)) "$1"
}
border_top() {
printf "╔%s╗\n" "$(printf '═%.0s' $(seq 1 $((WIDTH-2))))"
}
border_mid() {
printf "╠%s╣\n" "$(printf '═%.0s' $(seq 1 $((WIDTH-2))))"
}
border_bot() {
printf "╚%s╝\n" "$(printf '═%.0s' $(seq 1 $((WIDTH-2))))"
}
HOST="$(hostname)"
OS="$(lsb_release -ds 2>/dev/null || grep PRETTY_NAME /etc/os-release | cut -d= -f2 | tr -d '"')"
KERNEL="$(uname -r)"
IP="$(hostname -I | awk '{print $1}')"
UPTIME="$(uptime -p | sed 's/up //')"
LOAD="$(awk '{print $1}' /proc/loadavg)"
MEM="$(free -h | awk '/Mem:/ {print $3 " / " $2}')"
DISK="$(df -h / | awk 'NR==2 {print $5 " used (/)"}')"
USERS="$(who | wc -l)"
border_top
line "${ORG} • ${SHORT} Infrastructure"
border_mid
line "Host : ${HOST}"
line "OS : ${OS}"
line "Kernel : ${KERNEL}"
line "IP : ${IP}"
line "Uptime : ${UPTIME}"
border_mid
line "CPU Load : ${LOAD}"
line "Memory : ${MEM}"
line "Disk : ${DISK}"
line "Users : ${USERS} logged in"
border_bot