diff --git a/README.md b/README.md
index efb1eac..821bd32 100644
--- a/README.md
+++ b/README.md
@@ -11,6 +11,8 @@
Install and configure dynamic MOTD and SSH banner
+This role uses [https://github.com/claranet/motd](https://github.com/claranet/motd) by default to get the banner and the MOTD
+
```
System info:
Hostname·········: claranet_motd_ubuntu-20.04
@@ -44,11 +46,19 @@ ansible-galaxy install claranet.motd
## :gear: Role variables
-Variable | Default value | Description
---------------------------|-----------------------|----------------------------------------
-motd_disable_default_motd | true | Disable system default MOTD (/etc/motd)
-motd_banner_template | etc/banner | SSH banner template
-motd_template | usr/local/bin/dynmotd | Dynmaic MOTD template
+Variable | Default value | Description
+-----------------------------|---------------------------------------------------------------|----------------------------------------------------------------
+motd_disable_default_motd | true | Disable system default MOTD (/etc/motd)
+motd_banner_template | https://raw.githubusercontent.com/claranet/motd/master/banner | SSH banner template
Can be a URL, a local template or `null`
+motd_banner_template_prepend | "" | Prepend raw content to `motd_banner_template`
+motd_banner_template_append | "" | Append raw content to `motd_banner_template`
+motd_banner_template_username| {{ motd_template_username }} | Used when `motd_banner_template` is an URL
+motd_banner_template_password| {{ motd_template_password }} | Used when `motd_banner_template` is an URL
+motd_template | https://raw.githubusercontent.com/claranet/motd/master/motd | Dynmaic MOTD template
Can be a URL or a local template
+motd_template_prepend | "" | Prepend raw content to `motd_template`
+motd_template_append | See [defaults/main.yml](defaults/main.yml) | Append raw content to `motd_template`
+motd_template_username | "" | Used when `motd_template` is an URL
+motd_template_password | "" | Used when `motd_template` is an URL
## :pencil2: Example Playbook
@@ -56,7 +66,8 @@ motd_template | usr/local/bin/dynmotd | Dynmaic MOTD template
---
- hosts: all
roles:
- - claranet.motd
+ - role: claranet.motd
+ motd_template: "{{ playbook_dir }}/templates/dynmotd.j2"
```
## :closed_lock_with_key: [Hardening](HARDENING.md)
diff --git a/defaults/main.yml b/defaults/main.yml
index 9d2e210..adbd6c5 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -1,4 +1,17 @@
---
motd_disable_default_motd: true
-motd_banner_template: etc/banner
-motd_template: usr/local/bin/dynmotd
+motd_banner_template: https://raw.githubusercontent.com/claranet/motd/master/banner
+motd_template: https://raw.githubusercontent.com/claranet/motd/master/motd
+motd_banner_template_prepend: ""
+motd_banner_template_append: ""
+motd_template_prepend: ""
+motd_template_append: |
+
+ echo -e "\e[0;39mAnsible:
+ Last deployment\e[2m···\e[0m: {{ ansible_date_time.iso8601_micro }}
+ "
+
+motd_template_username: ""
+motd_template_password: ""
+motd_banner_template_username: "{{ motd_template_username }}"
+motd_banner_template_password: "{{ motd_template_password }}"
diff --git a/tasks/main.yml b/tasks/main.yml
index 9db41c1..02f4a32 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -23,8 +23,8 @@
when: motd_disable_default_motd|bool
- name: Apply template {{ motd_banner_template }} on {{ _motd_banner_file_path }}
- template:
- src: "{{ motd_banner_template }}"
+ copy:
+ content: "{{ motd_banner_template_prepend|default('') + _motd_banner_template_content + motd_banner_template_append|default('') }}"
dest: "{{ _motd_banner_file_path }}"
owner: root
group: root
@@ -40,8 +40,8 @@
notify: Restart sshd
- name: Apply template {{ motd_template }} on {{ _motd_file_path }}
- template:
- src: "{{ motd_template }}"
+ copy:
+ content: "{{ motd_template_prepend|default('') + _motd_template_content + motd_template_append|default('') }}"
dest: "{{ _motd_file_path }}"
owner: root
group: root
diff --git a/templates/etc/banner b/templates/etc/banner
deleted file mode 100644
index 0a9e54f..0000000
--- a/templates/etc/banner
+++ /dev/null
@@ -1,32 +0,0 @@
- ,╓╗╖æææææ╖╖,
- ,╗╣╬╬╣╝╜╙╙"╙╙╜╝╣Ñ╬æ╖
- ╓╣╬╝╜ "╙╣╬╣µ
- ╓╬╬M "╢╬╣,
- ╣╬╝ ╣Ñæ ╙╬╬╖╖╖╖╖╓,
- ,,╓╣╬M ,╗ ╬╬╬ ╓╖, ╝╜╜╜╜╝╣╬╬╣╖
- ╓æ╣Ñ╬╣╝╝╝ ╓╣╬╝ ╬╬╬ ²╣╬╣µ `╙╣╬æ,
- ╓╣╬╝^ ╣╬╝ ╬╬╬ `╣╬æ ╙╬╬φ
- ╣╬M ║╬╬ ╢╣M ╬╬U ╢╬φ
- ╬╬M ║╬╬ ╬╬M ╬╬∩
- ║╬╬ "╬ѵ ╓Ñ╬ ╟╬┼
- ╟╬┼ `╣╬╖, ,╢╬╣ ╟╬┼
- ║╬╬ ╙╢╬╬╣ææ╬╣╬╬╝` ╬╬M
- ╬╬µ `"""` ╣╬M
- `╬╬φ ╓╬╬M
- ╚╬╬╖, ,╗╣╬╝
- ╙╣Ñ╬╣æ╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖╖æ╣╬╬╝╜
- `"╙╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╜╙" ®
-
- ╖╖┬ ╓╖╖
- ╬╬M ╓╬╬
- ,╗╣╬╬╣æ, ╬╬M ,æ╣╬╬╬æ╖ ß╣ß╓æ╣ ╓æ╣╬╬╣æ, -╣╣╓æ╣╬╣╖ ,╖╣╬╬╣╖, ╢╣╬╬╣╣
- ║╬╬" `╝╜* ╬╬M ╝╝┘ ╟╬φ ╬╬╬M"` ª╝╝ ╙╬Ñ "╬╬M ║╬╬ ╢╬M ╢╬φ ╓╬╬
- -╬╬H ╬╬M ╓æ╣╬╬╣╬╬M ╬╬╬ ╗╢╣╬╣╣╬╬⌐ "╬╬ ╓╬╬ ╬╬╬╬╬╬╬╬╬╬ ╓╬╬
- ╢╬φ ╓,, ╬╬M ╢╬M ╟╬M ╬╬╪ ╬╬M ,╬╬⌐ "╬╬ ╓╬╬ ╬╬φ ╓ ╓╬╬
- ╚╬╬╣╣╣╬╝ ╬╬M ╙╣╬╣æ╣╬╬╬M ╬╬╪ ║╬╬ææ╣╣╬╬⌐ "╬╬ ╓╬╬ ╚╬╬╣╣╣╬╣╜ '╬╬╣æ
- `` `` ``` ``` ```
-
-WARNING : Unauthorized access to this system is forbidden and will be
-prosecuted by law. By accessing this system, you agree that your actions
-may be monitored if unauthorized usage is suspected.
-
diff --git a/templates/usr/local/bin/dynmotd b/templates/usr/local/bin/dynmotd
deleted file mode 100644
index c3c6dbc..0000000
--- a/templates/usr/local/bin/dynmotd
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/bin/bash
-
-# get load averages
-IFS=" " read LOAD1 LOAD5 LOAD15 <<<$(awk '{ print $1,$2,$3 }' /proc/loadavg)
-# get free memory
-IFS=" " read USED AVAIL TOTAL <<<$(free -htm | grep "Mem" | awk {'print $3,$7,$2'})
-# get processes
-PROCESS=$(ps -eo user=|sort|uniq -c | awk '{ print $2 " " $1 }')
-PROCESS_ALL=$(echo "$PROCESS"| awk {'print $2'} | awk '{ SUM += $1} END { print SUM }')
-PROCESS_ROOT=$(echo "$PROCESS"| grep root | awk {'print $2'})
-PROCESS_USER=$(echo "$PROCESS"| grep -v root | awk {'print $2'} | awk '{ SUM += $1} END { print SUM }')
-# get processors
-PROCESSOR_NAME=$(grep "model name" /proc/cpuinfo | cut -d ' ' -f3- | awk {'print $0'} | head -1)
-PROCESSOR_COUNT=$(grep -ioP 'processor\t:' /proc/cpuinfo | wc -l)
-
-LOCAL_IP_ADDRESSES=$(hostname -I | sed 's/ /\n\ /g' | sed '/^[[:space:]]*$/d')
-
-# Processing available updates with yum is too long
-{% if ansible_pkg_mgr == "apt" %}
-UPDATES_AVAILABLE=$(apt list --upgradable 2>/dev/null)
-UPDATES_AVAILABLE_NB=$(echo -e "$UPDATES_AVAILABLE" | wc -l)
-SECURITY_UPDATES_AVAILABLE_NB=$(echo -e "$UPDATES_AVAILABLE" | grep "\-security" | wc -l)
-{% endif %}
-
-# colors
-W="\e[0;39m"
-G="\e[1;32m"
-R="\e[1;31m"
-
-dim="\e[2m"
-undim="\e[0m"
-
-echo -e "${W}System info:
-$W Hostname$dim·········$undim: $W${HOSTNAME}
-$W Distro$dim···········$undim: $W$(grep "PRETTY_NAME" /etc/*release | cut -d "=" -f 2- | sed 's/"//g')
-$W Kernel$dim···········$undim: $W$(uname -sr)
-{% if ansible_pkg_mgr == "apt" %}
-$W Updates available: $W$UPDATES_AVAILABLE_NB ($SECURITY_UPDATES_AVAILABLE_NB security)
-{% endif %}
-$W Uptime$dim···········$undim: $W$(uptime -p)
-$W Load$dim·············$undim: $G$LOAD1$W (1m), $G$LOAD5$W (5m), $G$LOAD15$W (15m)
-$W Processes$dim········$undim: $G$PROCESS_ROOT$W (root), $G$PROCESS_USER$W (user), $G$PROCESS_ALL$W (total)
-$W CPU$dim··············$undim: $W$PROCESSOR_NAME ($G$PROCESSOR_COUNT$W vCPU)
-$W Memory$dim···········$undim: $G$USED$W used, $G$AVAIL$W avail, $G$TOTAL$W total
-$W Local IPs$dim········$undim: $LOCAL_IP_ADDRESSES$W"
-
-# config
-max_usage=90
-bar_width=50
-
-# disk usage: ignore zfs, squashfs & tmpfs
-mapfile -t dfs < <(df -H -x zfs -x squashfs -x tmpfs -x devtmpfs -x overlay --output=target,pcent,size | tail -n+2)
-printf "\nDisk usage:\n"
-
-for line in "${dfs[@]}"; do
- # get disk usage
- usage=$(echo "$line" | awk '{print $2}' | sed 's/%//')
- used_width=$((($usage*$bar_width)/100))
- # color is green if usage < max_usage, else red
- if [ "${usage}" -ge "${max_usage}" ]; then
- color=$R
- else
- color=$G
- fi
- # print green/red bar until used_width
- bar="[${color}"
- for ((i=0; i<$used_width; i++)); do
- bar+="="
- done
- # print dimmmed bar until end
- bar+="${W}${dim}"
- for ((i=$used_width; i<$bar_width; i++)); do
- bar+="·"
- done
- bar+="${undim}]"
- # print usage line & bar
- echo "${line}" | awk '{ printf("%-31s%+3s used out of %+4s\n", $1, $2, $3); }' | sed -e 's/^/ /'
- echo -e "${bar}" | sed -e 's/^/ /'
-done
-
-printf "\n"
-
-echo -e "${W}Ansible:
-${W} Last deployment$dim···$undim: {{ ansible_date_time.iso8601_micro }}
-"
diff --git a/vars/main.yml b/vars/main.yml
index 513f68c..49a0be7 100644
--- a/vars/main.yml
+++ b/vars/main.yml
@@ -5,3 +5,7 @@ _motd_pam_sshd_file_path: /etc/pam.d/sshd
_motd_banner_file_path: /etc/banner
_motd_banner_state: "{{ 'present' if motd_banner_template else 'absent' }}"
_motd_file_path: /usr/local/bin/dynmotd
+_motd_lookup_method: "{{ 'url' if motd_template is match('http(s)?:\/\/') else 'template' }}"
+_motd_template_content: "{{ lookup(_motd_lookup_method, motd_template, split_lines=False, username=motd_template_username, password=motd_template_password) }}"
+_motd_banner_lookup_method: "{{ 'url' if motd_banner_template is match('http(s)?:\/\/') else 'template' }}"
+_motd_banner_template_content: "{{ lookup(_motd_banner_lookup_method, motd_banner_template, split_lines=False, username=motd_banner_template_username, password=motd_banner_template_password) }}"