Commit initial
This commit is contained in:
parent
9e3de61cae
commit
69fde7626e
21 changed files with 409 additions and 1 deletions
39
README.md
39
README.md
|
@ -1,2 +1,39 @@
|
||||||
# common
|
Role : common
|
||||||
|
=============
|
||||||
|
|
||||||
|
|
||||||
|
Services fournis
|
||||||
|
----------------
|
||||||
|
|
||||||
|
* horodatage de l'history
|
||||||
|
* change le mot de passe root
|
||||||
|
* configuration sudo
|
||||||
|
* configuration sshd et limite l'accès root à distance
|
||||||
|
* relai de messagerie, possibilité d'altérer l'émetteur / destinataire suivant l'environnement
|
||||||
|
* installation de quelques outils pratiques
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Variables
|
||||||
|
-----------
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
common_searchdomain: home.navas.rocks
|
||||||
|
common_user_password_salt: !vault |
|
||||||
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
|
[...]
|
||||||
|
common_rootpassword: !vault |
|
||||||
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
|
[...]
|
||||||
|
```
|
||||||
|
|
||||||
|
| Option | Valeur par défaut | Description |
|
||||||
|
|---------------------------|--------------------------------|---------------------------------------------------------------------------------------------------------------|
|
||||||
|
| common_searchdomain | | Domaine du fqdn et suffixe de recherche dns |
|
||||||
|
| common_admin_mail | olivier+admin@navas.rocks | Adresse mail à laquelle les mails émis par le système à l'attention de comptes locaux sont réellement envoyés |
|
||||||
|
| common_X11Forwarding | false | Active la possibilité de redirection X11 et installe les paquets nécessaires pour son fonctionnement |
|
||||||
|
| common_postfix_mail_relay | mail.{{ common_searchdomain }} | Permet d'indiquer le serveur smtp à qui envoyer les mails émis par le relai local |
|
||||||
|
| common_rootpassword | | Mot de passe à définir pour root |
|
||||||
|
| common_user_password_salt | | Sel utilisé pour définir le mot de passe via le module ansible user |
|
||||||
|
| | | |
|
||||||
|
|
||||||
|
|
4
defaults/main.yml
Normal file
4
defaults/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
common_postfix_mail_relay: mail.{{ common_searchdomain }}
|
||||||
|
common_admin_mail: olivier+admin@navas.rocks
|
||||||
|
common_X11Forwarding: false
|
5
handlers/main.yml
Normal file
5
handlers/main.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
- name: restart_sshd
|
||||||
|
service: name=sshd state=restarted enabled=yes
|
||||||
|
|
||||||
|
- name: restart postfix
|
||||||
|
service: name=postfix state=restarted enabled=yes
|
8
meta/main.yml
Normal file
8
meta/main.yml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
galaxy_info:
|
||||||
|
author: Olivier Navas
|
||||||
|
description: tronc commun des vms
|
||||||
|
license: GPL-3.0-only
|
||||||
|
min_ansible_version: 2.9
|
||||||
|
galaxy_tags: []
|
||||||
|
|
||||||
|
dependencies: []
|
3
meta/requirements.yml
Normal file
3
meta/requirements.yml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
- src: willshersystems.sshd
|
||||||
|
version: v0.14.0
|
||||||
|
|
68
tasks/configure_postfix_relay.yml
Normal file
68
tasks/configure_postfix_relay.yml
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
- name: Supprime exim
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- exim4-base
|
||||||
|
- exim4-config
|
||||||
|
- exim4-daemon-light
|
||||||
|
state: absent
|
||||||
|
|
||||||
|
- name: Installation postfix
|
||||||
|
package:
|
||||||
|
name: postfix
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Configuration postfix
|
||||||
|
template:
|
||||||
|
src: postfix-main.cf.j2
|
||||||
|
dest: /etc/postfix/main.cf
|
||||||
|
notify:
|
||||||
|
- restart postfix
|
||||||
|
|
||||||
|
- name: Configuration aliases postfix
|
||||||
|
template:
|
||||||
|
src: aliases.j2
|
||||||
|
dest: /etc/aliases
|
||||||
|
register: aliases
|
||||||
|
notify:
|
||||||
|
- restart postfix
|
||||||
|
|
||||||
|
- shell: newaliases
|
||||||
|
when: aliases.changed
|
||||||
|
|
||||||
|
- name: Configure sender_canonical_maps_regexp
|
||||||
|
blockinfile:
|
||||||
|
dest: /etc/postfix/sender_canonical_maps_regexp
|
||||||
|
marker: "#### {mark} SECTION CONTROLEE PAR ANSIBLE ####"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0755
|
||||||
|
create: yes
|
||||||
|
block: |
|
||||||
|
# A completer
|
||||||
|
register: sender_canonical_maps_regexp
|
||||||
|
|
||||||
|
- name: Configure recipient_canonical_maps_regexp
|
||||||
|
blockinfile:
|
||||||
|
dest: /etc/postfix/recipient_canonical_maps_regexp
|
||||||
|
marker: "#### {mark} SECTION CONTROLEE PAR ANSIBLE ####"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0755
|
||||||
|
create: yes
|
||||||
|
block: |
|
||||||
|
# A completer
|
||||||
|
register: recipiend_canonical_maps_regexp
|
||||||
|
|
||||||
|
- name: postmap
|
||||||
|
command: postmap {{ item }}
|
||||||
|
args:
|
||||||
|
chdir: /etc/postfix/
|
||||||
|
with_items:
|
||||||
|
- sender_canonical_maps_regexp
|
||||||
|
- recipient_canonical_maps_regexp
|
||||||
|
when: sender_canonical_maps_regexp.changed or recipiend_canonical_maps_regexp.changed
|
||||||
|
notify:
|
||||||
|
- restart postfix
|
||||||
|
|
||||||
|
|
||||||
|
|
75
tasks/main.yml
Normal file
75
tasks/main.yml
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
- name: definit le mdp de root
|
||||||
|
user:
|
||||||
|
name: root
|
||||||
|
state: present
|
||||||
|
password: "{{ _pwd | password_hash('sha512', common_user_password_salt) }}"
|
||||||
|
vars:
|
||||||
|
_pwd: "{{ common_rootpassword }}"
|
||||||
|
|
||||||
|
- name: Installation nftables
|
||||||
|
package: name=nftables state=present
|
||||||
|
|
||||||
|
- name: Activation nftables
|
||||||
|
service:
|
||||||
|
name: nftables
|
||||||
|
state: started
|
||||||
|
enabled: yes
|
||||||
|
|
||||||
|
- name: installe paquets pratiques
|
||||||
|
package:
|
||||||
|
state: present
|
||||||
|
name:
|
||||||
|
- rsyslog
|
||||||
|
- vim
|
||||||
|
- net-tools
|
||||||
|
- sysstat
|
||||||
|
- nano
|
||||||
|
- iotop
|
||||||
|
- htop
|
||||||
|
- tcpdump
|
||||||
|
- traceroute
|
||||||
|
- mlocate
|
||||||
|
- telnet
|
||||||
|
- wget
|
||||||
|
- python3
|
||||||
|
- figlet
|
||||||
|
|
||||||
|
- name: Configuration ssh
|
||||||
|
import_role:
|
||||||
|
name: willshersystems.sshd
|
||||||
|
vars:
|
||||||
|
sshd_skip_defaults: false
|
||||||
|
sshd:
|
||||||
|
ListenAddress:
|
||||||
|
- "0.0.0.0"
|
||||||
|
- "::"
|
||||||
|
PermitRootLogin: without-password
|
||||||
|
X11Forwarding: "{{ common_X11Forwarding }}"
|
||||||
|
|
||||||
|
- name: horodatage history
|
||||||
|
template: src=historytime.sh dest=/etc/profile.d/historytime.sh
|
||||||
|
|
||||||
|
- import_tasks: configure_postfix_relay.yml
|
||||||
|
tags: configure_postfix_relay
|
||||||
|
|
||||||
|
|
||||||
|
- name: motd colors
|
||||||
|
template:
|
||||||
|
src: update-motd.d/colors
|
||||||
|
dest: /etc/update-motd.d/
|
||||||
|
|
||||||
|
- name: configure motd
|
||||||
|
template:
|
||||||
|
src: update-motd.d/{{ item }}
|
||||||
|
dest: /etc/update-motd.d/
|
||||||
|
mode: 0755
|
||||||
|
with_items:
|
||||||
|
- 01-linebreak
|
||||||
|
- 05-header
|
||||||
|
- 10-uname
|
||||||
|
- 15-linebreak
|
||||||
|
- 20-sysinfo
|
||||||
|
- 30-upgrades
|
||||||
|
- 50-linebreak
|
||||||
|
|
||||||
|
|
17
templates/aliases.j2
Normal file
17
templates/aliases.j2
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
#
|
||||||
|
mailer-daemon: postmaster
|
||||||
|
postmaster: root
|
||||||
|
nobody: root
|
||||||
|
hostmaster: root
|
||||||
|
usenet: root
|
||||||
|
news: root
|
||||||
|
webmaster: root
|
||||||
|
www: root
|
||||||
|
ftp: root
|
||||||
|
abuse: root
|
||||||
|
noc: root
|
||||||
|
security: root
|
||||||
|
|
||||||
|
root: {{ common_admin_mail }}
|
2
templates/historytime.sh
Normal file
2
templates/historytime.sh
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
export HISTTIMEFORMAT="%F %T: "
|
11
templates/hosts
Normal file
11
templates/hosts
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
127.0.0.1 localhost
|
||||||
|
|
||||||
|
# The following lines are desirable for IPv6 capable hosts
|
||||||
|
::1 ip6-localhost ip6-loopback
|
||||||
|
fe00::0 ip6-localnet
|
||||||
|
ff00::0 ip6-mcastprefix
|
||||||
|
ff02::1 ip6-allnodes
|
||||||
|
ff02::2 ip6-allrouters
|
||||||
|
ff02::3 ip6-allhosts
|
||||||
|
|
22
templates/postfix-main.cf.j2
Normal file
22
templates/postfix-main.cf.j2
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
|
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
|
||||||
|
biff = no
|
||||||
|
|
||||||
|
append_dot_mydomain = no
|
||||||
|
|
||||||
|
readme_directory = no
|
||||||
|
|
||||||
|
compatibility_level = 2
|
||||||
|
|
||||||
|
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
|
||||||
|
alias_maps = hash:/etc/aliases
|
||||||
|
alias_database = hash:/etc/aliases
|
||||||
|
relayhost = {{ common_postfix_mail_relay }}
|
||||||
|
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
||||||
|
inet_interfaces = all
|
||||||
|
inet_protocols = all
|
||||||
|
|
||||||
|
# reecritures d'adresses si besoin
|
||||||
|
sender_canonical_maps = regexp:/etc/postfix/sender_canonical_maps_regexp
|
||||||
|
recipient_canonical_maps = regexp:/etc/postfix/recipient_canonical_maps_regexp
|
3
templates/update-motd.d/01-linebreak
Executable file
3
templates/update-motd.d/01-linebreak
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "-----------------------------------------------------------------"
|
7
templates/update-motd.d/05-header
Executable file
7
templates/update-motd.d/05-header
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. /etc/update-motd.d/colors
|
||||||
|
|
||||||
|
printf $LIGHT_RED
|
||||||
|
figlet " "$(hostname -s)
|
||||||
|
printf $NONE
|
5
templates/update-motd.d/10-uname
Executable file
5
templates/update-motd.d/10-uname
Executable file
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. /etc/update-motd.d/colors
|
||||||
|
|
||||||
|
echo $DISTRIB_DESCRIPTION $YELLOW "$(lsb_release -ds)" $NONE "($(uname -o)" "$(uname -r)" "$(uname -m))"
|
3
templates/update-motd.d/15-linebreak
Executable file
3
templates/update-motd.d/15-linebreak
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "-----------------------------------------------------------------"
|
93
templates/update-motd.d/20-sysinfo
Executable file
93
templates/update-motd.d/20-sysinfo
Executable file
|
@ -0,0 +1,93 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
. /etc/update-motd.d/colors
|
||||||
|
|
||||||
|
warnvalue(){
|
||||||
|
value=$1
|
||||||
|
limit=$2
|
||||||
|
if [ $value -gt $limit ]
|
||||||
|
then
|
||||||
|
echo -n "$RED_BACK$value"
|
||||||
|
else
|
||||||
|
echo -n "$NONE$value"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
printloadavg() {
|
||||||
|
read one five fifteen rest < /proc/loadavg
|
||||||
|
echo -e "$LIGHT_GREEN Charge CPU :$NONE $one (1min) / $five (5min) / $fifteen (15min)"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
printcpu() {
|
||||||
|
proc=$(cat /proc/cpuinfo | grep model | cut -c14- | sed -n "2 p")
|
||||||
|
proc=$(echo "${proc}" | sed 's/^ *//g')
|
||||||
|
cores=$(cat /proc/cpuinfo | grep -i "^processor" | wc -l)
|
||||||
|
echo -e "$LIGHT_GREEN Processeur :$NONE $proc ($cores cores)"
|
||||||
|
}
|
||||||
|
|
||||||
|
printram(){
|
||||||
|
memfree=$(cat /proc/meminfo | grep MemAvailable | awk {'print $2'})
|
||||||
|
memtotal=$(cat /proc/meminfo | grep MemTotal | awk {'print $2'})
|
||||||
|
mempctused=$((($memtotal - $memfree) * 100 / $memtotal))
|
||||||
|
swaptotal=$(cat /proc/meminfo | grep SwapTotal | awk {'print $2'})
|
||||||
|
swapfree=$(cat /proc/meminfo | grep SwapFree | awk {'print $2'})
|
||||||
|
swappctused=$((($swaptotal - $swapfree) * 100 / $swaptotal))
|
||||||
|
|
||||||
|
echo -n -e "$LIGHT_GREEN RAM usage : $(warnvalue $mempctused 80)%$NONE / $(($memtotal/1024)) MB Total"
|
||||||
|
echo -e "$LIGHT_GREEN Swap usage : $(warnvalue $swappctused 50)%$NONE / $(($swaptotal/1024)) MB Total"
|
||||||
|
}
|
||||||
|
|
||||||
|
printprocesses(){
|
||||||
|
process=$(ps ax | wc -l | tr -d " ")
|
||||||
|
echo -e "$LIGHT_GREEN Processus :$NONE $process"
|
||||||
|
}
|
||||||
|
|
||||||
|
printloggedin(){
|
||||||
|
connecteduser=$(who | wc -l)
|
||||||
|
echo -e "$LIGHT_GREEN Utilisateurs connectes :$NONE $connecteduser"
|
||||||
|
}
|
||||||
|
|
||||||
|
printserverid(){
|
||||||
|
fqdn=$(hostname -f)
|
||||||
|
addrip=$(hostname -I)
|
||||||
|
echo -e "$LIGHT_GREEN FQDN :$NONE $fqdn$LIGHT_GREEN Adresse IP :$NONE $addrip"
|
||||||
|
}
|
||||||
|
|
||||||
|
printuptime(){
|
||||||
|
uptime=$(uptime -p)
|
||||||
|
echo -e "$LIGHT_GREEN Uptime :$NONE $uptime"
|
||||||
|
last -x 2> /dev/null | grep reboot 1> /dev/null && /usr/bin/last -x 2> /dev/null | grep reboot | head -2 | sed 's/^/ /g' || echo " Pas de shutdown enregistré"
|
||||||
|
last -x 2> /dev/null|grep shutdown 1> /dev/null && /usr/bin/last -x 2> /dev/null|grep shutdown|head -2 | sed 's/^/ /g' || echo " Pas de shutdown enregistré"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
printdiskline() {
|
||||||
|
pattern=$1
|
||||||
|
diskused=$(df -h | grep $pattern | awk {'print $5'} | tr -d "%")
|
||||||
|
disktotal=$(df -h | grep $pattern | awk {'print $2'})
|
||||||
|
inodesused=$(df -i | grep $pattern | awk {'print $5'} | tr -d "%")
|
||||||
|
echo -n -e "$LIGHT_GREEN Disque$YELLOW $pattern$LIGHT_GREEN\t: $(warnvalue $diskused 90)% / $disktotal$NONE"
|
||||||
|
echo -e "\t$LIGHT_GREEN Inodes$LIGHT_GREEN\t: $(warnvalue $inodesused 90)%$NONE"
|
||||||
|
}
|
||||||
|
|
||||||
|
printdisklines() {
|
||||||
|
for disk in $(mount |grep /dev/mapper/system | cut -d ' ' -f 1)
|
||||||
|
do
|
||||||
|
printdiskline $disk
|
||||||
|
done
|
||||||
|
for disk in $(mount |grep /dev/mapper/data | cut -d ' ' -f 1)
|
||||||
|
do
|
||||||
|
printdiskline $disk
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
printserverid
|
||||||
|
printcpu
|
||||||
|
printloadavg
|
||||||
|
printram
|
||||||
|
printprocesses
|
||||||
|
printloggedin
|
||||||
|
printuptime
|
||||||
|
printdisklines
|
16
templates/update-motd.d/30-upgrades
Executable file
16
templates/update-motd.d/30-upgrades
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
. /etc/update-motd.d/colors
|
||||||
|
|
||||||
|
n=$(apt-get -qq --just-print dist-upgrade | cut -f 2 -d " " | sort -u | wc -l)
|
||||||
|
if [[ $n -gt 0 ]]
|
||||||
|
then
|
||||||
|
printf " $CYAN%s packages attendent d'être mis à jour.$NONE\n" "$n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
n=$(apt-get -qq --just-print autoremove | cut -f 2 -d " " | sort -u | wc -l)
|
||||||
|
if [[ $n -gt 0 ]]
|
||||||
|
then
|
||||||
|
printf " $CYAN%s packages installés comme dépendances pourraient être supprimés.$NONE\n" "$n"
|
||||||
|
fi
|
||||||
|
|
3
templates/update-motd.d/50-linebreak
Executable file
3
templates/update-motd.d/50-linebreak
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "-----------------------------------------------------------------"
|
19
templates/update-motd.d/colors
Normal file
19
templates/update-motd.d/colors
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# Reset Colors
|
||||||
|
NONE="\033[m"
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
WHITE="\033[1;37m"
|
||||||
|
GREEN="\033[1;32m"
|
||||||
|
RED="\033[0;32;31m"
|
||||||
|
RED_BACK="\033[37;41m"
|
||||||
|
YELLOW="\033[1;33m"
|
||||||
|
BLUE="\033[34m"
|
||||||
|
CYAN="\033[36m"
|
||||||
|
LIGHT_GREEN="\033[1;32m"
|
||||||
|
LIGHT_RED="\033[1;31m"
|
||||||
|
|
||||||
|
# Bold
|
||||||
|
BOLD="\033[1m"
|
||||||
|
|
||||||
|
# Underline
|
||||||
|
UNDERLINE="\033[4m"
|
2
tests/inventory
Normal file
2
tests/inventory
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
localhost
|
||||||
|
|
5
tests/test.yml
Normal file
5
tests/test.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
- hosts: localhost
|
||||||
|
remote_user: root
|
||||||
|
roles:
|
||||||
|
- common
|
Loading…
Reference in a new issue