Compare commits

..

15 Commits

35 changed files with 189 additions and 105 deletions

View File

@ -1,6 +1,6 @@
# gsb2023 # gsb2023
2023-01-06 2023-01-18 ps
Environnement et playbooks ansible pour le projet GSB 2023 Environnement et playbooks ansible pour le projet GSB 2023
@ -8,15 +8,28 @@ Environnement et playbooks ansible pour le projet GSB 2023
prérequis : prérequis :
* une machine Debian Bullseye * une machine Debian Bullseye
* VirtualBox * VirtualBox
* fichier machines viruelles ova :
* debian-bullseye-gsb-2023a.ova
* debian-buster-gsb-2023a.ova
## Les machines ## Les machines
* s-adm * s-adm : routeur adm, DHCP + NAT, deploiement, proxy squid
* s-infra * s-infra : DNS maitre
* r-int * r-int : routaage, DHCP
* r-ext * r-ext : routage, NAT
* s-proxy * s-proxy : squid
* s-itil : serveur GLPI
* s-backup : DNS esclave + sauvegarde s-win
* s-mon : supervision avec **Nagios4** et syslog
* s-fog : deploiement postes de travail avec **FOG**
* s-win : Windows Server 2019, AD, DNS, DHCP, partage fichiers
* s-nxc : NextCloud avec **docker**
* s-elk : pile ELK dockerisée
* s-lb : Load Balancer **HaProxy** pour application Wordpress
* r-vp1 : Routeur VPN Wireguard coté siège
* r-vp2 : Routeur VPN Wireguard coté agence, DHCP
## Les playbooks ## Les playbooks

View File

@ -1,8 +0,0 @@
---
- hosts: localhost
connection: local
roles:
- goss
- docker-graylog-pont
- post

View File

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
## ps : 2021-04-01 15:25 ## aa : 2023-04-18 15:25
set -o errexit set -o errexit
set -o pipefail set -o pipefail
@ -9,11 +9,11 @@ apt update && apt upgrade
apt install -y apache2 git apt install -y apache2 git
STOREREP="/var/www/html/gsbstore" STOREREP="/var/www/html/gsbstore"
GLPIREL=9.5.6 GLPIREL=10.0.5
str="wget -nc https://github.com/glpi-project/glpi/releases/download/${GLPIREL}/glpi-${GLPIREL}.tgz" str="wget -nc https://github.com/glpi-project/glpi/releases/download/${GLPIREL}/glpi-${GLPIREL}.tgz"
FIREL=9.5 FIREL=10.0.3+1.0
str2="https://github.com/fusioninventory/fusioninventory-for-glpi/releases/download/glpi9.5%2B3.0/fusioninventory-9.5+3.0.tar.bz2" str2="https://github.com/fusioninventory/fusioninventory-for-glpi/releases/download/glpi${FIREL}/fusioninventory-${FIREL}.tar.bz2"
FIAGREL=2.6 FIAGREL=2.6
str31="wget -nc https://github.com/fusioninventory/fusioninventory-agent/releases/download/${FIAGREL}/fusioninventory-agent_windows-x64_${FIAGREL}.exe" str31="wget -nc https://github.com/fusioninventory/fusioninventory-agent/releases/download/${FIAGREL}/fusioninventory-agent_windows-x64_${FIAGREL}.exe"
@ -23,19 +23,21 @@ str32="wget -nc https://github.com/fusioninventory/fusioninventory-agent/release
FOGREL=1.5.9 FOGREL=1.5.9
str4="wget -nc https://github.com/FOGProject/fogproject/archive/${FOGREL}.tar.gz -O fogproject-${FOGREL}.tar.gz" str4="wget -nc https://github.com/FOGProject/fogproject/archive/${FOGREL}.tar.gz -O fogproject-${FOGREL}.tar.gz"
WPREL=5.8.2 WPREL=6.1.1
str5="wget -nc https://fr.wordpress.org/wordpress-${WPREL}-fr_FR.tar.gz" #v6.1.1 le 17/01/2023
str5="wget -nc https://fr.wordpress.org/latest-fr_FR.tar.gz -O wordpress-6.1.1-fr_FR.tar.gz"
GOSSVER=v0.3.16 GOSSVER=v0.3.21
str6="curl -L https://github.com/aelsabbahy/goss/releases/download/${GOSSVER}/goss-linux-amd64 -o goss" str6="curl -L https://github.com/aelsabbahy/goss/releases/download/${GOSSVER}/goss-linux-amd64 -o goss"
DOCKERREL=1.29.2 #DOCKERREL=1.29.2
str7="curl -L https://github.com/docker/compose/releases/download/${DOCKERREL}/docker-compose-$(uname -s)-$(uname -m) -o docker-compose" #str7="curl -L https://github.com/docker/compose/releases/download/${DOCKERREL}/docker-compose-$(uname -s)-$(uname -m) -o docker-compose"
GESTSUPREL=3.2.15 #GESTSUPREL=3.2.30
str8="wget -nc https://gestsup.fr/downloads/versions/current/version/gestsup_${GESTSUPREL}.zip" #str8="wget -nc 'https://gestsup.fr/index.php?page=download&channel=stable&version=${GESTSUPREL}&type=gestsup' -O gestsup_${GESTSUPREL}.zip"
str8="wget -nc 'https://gestsup.fr/index.php?page=download&channel=stable&version=3.2.30&type=gestsup' -O gestsup_3.2.30.zip"
ELKREL=7.16.3 ELKREL=8.6.0
str81="wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${ELKREL}-amd64.deb" str81="wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${ELKREL}-amd64.deb"
str82="wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${ELKREL}-windows-x86_64.zip" str82="wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${ELKREL}-windows-x86_64.zip"
@ -70,12 +72,12 @@ curl -L https://get.docker.com -o getdocker.sh
chmod +x ./getdocker.sh chmod +x ./getdocker.sh
${str7} #${str7}
chmod +x ./docker-compose #chmod +x ./docker-compose
wget -nc https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64 -O mkcert wget -nc https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64 -O mkcert
chmod +x ./mkcert chmod +x ./mkcert
@ -90,4 +92,3 @@ EOT
) )
cat "${STOREREP}/getall" cat "${STOREREP}/getall"

View File

@ -1,5 +1,9 @@
#!/bin/bash #!/bin/bash
dir=/root/tools/ansible
prj=gsb2023
opt=""
if [ -z ${UREP+x} ]; then if [ -z ${UREP+x} ]; then
UREP=https://gitea.lyc-lecastel.fr/gadmin/gsb2023.git UREP=https://gitea.lyc-lecastel.fr/gadmin/gsb2023.git
fi fi
@ -11,6 +15,14 @@ dir=/root/tools/ansible
cd "${dir}" || exit 1 cd "${dir}" || exit 1
hostname > hosts hostname > hosts
ansible-pull -i "${dir}/hosts" -C main -U "${UREP}" if [[ $# == 1 ]] ; then
opt=$1
fi
if [[ "${opt}" == '-l' ]] ; then
cd "${dir}/${prj}" || exit 2
ansible-playbook -i localhost, -c local "$(hostname).yml"
else
ansible-pull -i "${dir}/hosts" -C main -U "${UREP}"
fi
exit 0 exit 0

1
proxy
View File

@ -1 +0,0 @@
/etc/nginx/sites-availables/proxy

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
if [ -z ${UREP+x} ]; then if [ -z ${UREP+x} ]; then
UREP=https://gitea.lyc-lecastel.fr/gadmin/gsb2023.git UREP=https://gitea.lyc-lecastel.fr/gadmin/gsb2023.git
fi fi
@ -11,6 +11,6 @@ dir=/root/tools/ansible
cd "${dir}" || exit 1 cd "${dir}" || exit 1
hostname > hosts hostname > hosts
ansible-pull -i "${dir}/hosts" -U "${UREP}" ansible-pull -i "${dir}/hosts" -C main -U "${UREP}"
exit 0 exit 0

View File

@ -1,16 +1,16 @@
--- ---
- name: Téléchargement getdocker.sh - name: Supprime le fichier getdocker.sh si déjà présent
ansible.builtin.get_url: file:
url: http://s-adm.gsb.adm/gsbstore/getdocker.sh state: absent
dest: /tmp path: /tmp/getdocker.sh
mode: '0755'
- name: Télécharge le script d'installation de docker
uri:
url: 'https://get.docker.com'
method: GET
dest: /tmp/getdocker.sh
mode: a+x
register: result
- name: Execution du script getdocker - name: Execution du script getdocker
ansible.builtin.script: shell: bash /tmp/getdocker.sh
cmd: /tmp/getdocker.sh
- name: Téléchargement docker-compose
ansible.builtin.get_url:
url: http://s-adm.gsb.adm/gsbstore/docker-compose
dest: /usr/local/bin
mode: '0755'

View File

@ -1,5 +1,6 @@
depl_url: "http://s-adm.gsb.adm/gsbstore" depl_url: "http://s-adm.gsb.adm/gsbstore"
depl_glpi: "glpi-9.5.6.tgz" #depl_glpi: "glpi-9.5.6.tgz"
depl_glpi: "glpi-10.0.5.tgz"
depl_fusioninventory: "fusioninventory-9.5+3.0.tar.bz2" depl_fusioninventory: "fusioninventory-9.5+3.0.tar.bz2"
depl_fusioninventory_agentx64: "fusioninventory-agent_windows-x64_2.6.exe" depl_fusioninventory_agentx64: "fusioninventory-agent_windows-x64_2.6.exe"
depl_fusioninventory_agentx86: "fusioninventory-agent_windows-x86_2.6.exe" depl_fusioninventory_agentx86: "fusioninventory-agent_windows-x86_2.6.exe"

View File

@ -1,5 +1,6 @@
#!/bin/bash #!/bin/bash
GLPIREL=9.5.3 #GLPIREL=9.5.3
GLPIREL=10.0.5
wget -nc https://github.com/glpi-project/glpi/releases/download/${GLPIREL}/glpi-${GLPIREL}.tgz wget -nc https://github.com/glpi-project/glpi/releases/download/${GLPIREL}/glpi-${GLPIREL}.tgz
FIREL=9.5+1.0 FIREL=9.5+1.0

View File

@ -0,0 +1 @@
MAIL_DEST: "anthony.arnoux@protonmail.ch"

View File

@ -35,7 +35,7 @@ define contact {
host_notification_options d,r host_notification_options d,r
service_notification_commands notify-service-by-email service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email host_notification_commands notify-host-by-email
email nagios.gsb22@gmail.com email {{ MAIL_DEST }}
} }

View File

@ -1,2 +1 @@
[smtp.gmail.com]:587 nagios.gsb22@gmail.com:Azerty1+ [smtp.gmail.com]:587 anthony.arnoux22@gmail.com:gndtfomdkxnmcdft
chmod 600 /etc/postfix/sasl_passwd

View File

@ -4,6 +4,7 @@
name: name:
- postfix - postfix
- mailutils - mailutils
- libsasl2-modules
state: latest state: latest
- name: Copie du fichier sasl_passwd - name: Copie du fichier sasl_passwd
@ -12,17 +13,75 @@
src: sasl_passwd src: sasl_passwd
dest: /etc/postfix/sasl/ dest: /etc/postfix/sasl/
- name: Copie du fichier main.cf - name: ajout relay host gmail
tags: main.cf tags: postfix
template: replace:
src: main.cf.j2 path: /etc/postfix/main.cf
dest: /etc/postfix.main.cf regexp: '^relayhost ='
replace: 'relayhost = [smtp.gmail.com]:587'
notify: restart postfix
- name: Commande postmap - name: ajout lignes conf postfix
tags: postfix
blockinfile:
path: /etc/postfix/main.cf
block: |
#TLS
smtp_use_tls = yes
#SASL
smtp_sasl_auth_enable = yes
#pas d auth anonyme
smtp_sasl_security_options = noanonymous
#chemin sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
#chemin certificats CA
smtp_tls_CAfile = /etc/postfix/cacert.pem
notify: restart postfix
#- name: Copie du fichier main.cf
# tags: main.cf
# template:
# src: main.cf.j2
# dest: /etc/postfix.main.cf
- name: Commande postmap identifiants
tags: postmap tags: postmap
command: postmap /etc/postfix/sasl/sasl_passwd command: postmap /etc/postfix/sasl/sasl_passwd
notify: restart postfix notify: restart postfix
- name: Ensure directory exists for local self-signed TLS certs.
file:
path: /etc/ssl/certs/postfix
state: directory
- name: Generate an OpenSSL private key
community.crypto.openssl_privatekey:
path: /etc/ssl/certs/postfix/privkey.pem
- name: Generate an OpenSSL CSR
community.crypto.openssl_csr:
path: /etc/ssl/certs/postfix/postfix.csr
privatekey_path: /etc/ssl/certs/postfix/privkey.pem
common_name: "GSB2023.LAN"
- name: Generate a Self Signed OpenSSL certificate.
community.crypto.x509_certificate:
path: /etc/ssl/certs/postfix/fullchain.pem
privatekey_path: /etc/ssl/certs/postfix/privkey.pem
csr_path: /etc/ssl/certs/postfix/postfix.csr
provider: selfsigned
- name: Copy certificate preserve owner and permissions to be used with postfix
copy:
remote_src: true
src: /etc/ssl/certs/postfix/fullchain.pem
dest: /etc/postfix/cacert.pem
owner: root
group: root
mode: '0644'
notify: restart postfix
- name: message d'information pour gmail - name: message d'information pour gmail
tags: msg2 tags: msg2
debug: msg="Il faut activer les applications moins sécurisées sur le compte google" debug: msg="Il faut activer les applications moins sécurisées sur le compte google"

View File

@ -1,2 +1,2 @@
depl_url: "http://s-adm.gsb.adm/gsbstore/" depl_url: "http://s-adm.gsb.adm/gsbstore/"
depl_wordpress: "wordpress-5.8.2-fr_FR.tar.gz" depl_wordpress: "wordpress-6.1.1-fr_FR.tar.gz"

View File

@ -1,3 +1,3 @@
##Installation de nfs # Installation de nfs-server
Ce rôle télécharge NFS puis copie un fichier de configuration pour partager le dossier /home/wordpress. Ce rôle installe **nfs-server** puis copie le fichier de configuration **exports** pour exporter le répertoire **/home/wordpress** hébergeant le code **wordpress**.

View File

@ -9,13 +9,13 @@
name: wireguard-tools name: wireguard-tools
state: present state: present
- name: installation de sshpass #- name: installation de sshpass
apt: # apt:
name: sshpass # name: sshpass
state: present # state: present
- name: copie du fichier de configuration depuis r-vp1 #- name: copie du fichier de configuration depuis r-vp1
command: "sshpass -p 'root' scp -r root@192.168.99.112:/root/confwg/wg0-b.conf /etc/wireguard/" # command: "sshpass -p 'root' scp -r root@192.168.99.112:/root/confwg/wg0-b.conf /etc/wireguard/"
- name: renommage du fichier de configuration - name: renommage du fichier de configuration
command: "mv /etc/wireguard/wg0-b.conf /etc/wireguard/wg0.conf" command: "mv /etc/wireguard/wg0-b.conf /etc/wireguard/wg0.conf"

View File

@ -8,7 +8,7 @@
- s-ssh - s-ssh
- dnsmasq - dnsmasq
- squid - squid
- local-store # - local-store
- snmp-agent - snmp-agent
- syslog-cli - syslog-cli
- post - post

View File

@ -1,21 +1,24 @@
#!/bin/bash #!/bin/bash
mkvmrelease="v1.2"
ovarelease="2023a" ovarelease="2023a"
ovafogrelease="2023a" ovafogrelease="2023a"
ovafile="$HOME/Téléchargements/debian-bullseye-gsb-${ovarelease}.ova" ovafile="$HOME/Téléchargements/debian-bullseye-gsb-${ovarelease}.ova"
ovafilefog="$HOME/Téléchargements/debian-buster-${ovafogrelease}.ova" ovafilefog="$HOME/Téléchargements/debian-buster-gsb-${ovafogrelease}.ova"
deletemode=0
usage () { usage () {
echo "$0 - version ${ovarelease}" echo "$0 - version ${mkvmrelease} - Ova version ${ovarelease}"
echo "$0 : creation VM et parametrage interfaces" echo "$0 : creation VM et parametrage interfaces"
echo "usage : $0 <s-infra|r-int|r-ext|s-proxy|s-mon>" echo "usage : $0 [-r] <s-infra|r-int|r-ext|s-proxy|s-mon|s-appli|s-backup|s-itil|s-ncx|s-fog>"
echo " option -r : efface vm existante avant creation nouvelle"
exit 1 exit 1
} }
create_vm () { create_vm () {
nom="$1" local nom="$1"
nomova=${ovafile} local nomova="${ovafile}"
if [[ "${nom}" == "s-fog" ]] ; then if [[ "${nom}" == "s-fog" ]] ; then
nomova="${ovafilefog}" nomova="${ovafilefog}"
fi fi
@ -23,6 +26,9 @@ create_vm () {
echo "$0 : erreur ouverture fichier ${nomova} ..." echo "$0 : erreur ouverture fichier ${nomova} ..."
exit 3 exit 3
fi fi
if [[ "${deletemode}" = 1 ]] ; then
VBoxManage unregistervm --delete "${nom}"
fi
vboxmanage import "${nomova}" --vsys 0 --vmname "${nom}" vboxmanage import "${nomova}" --vsys 0 --vmname "${nom}"
} }
@ -38,15 +44,25 @@ setif () {
create_if () { create_if () {
# enp0s3 # enp0s3
setif "$1" 1 "$2" setif "$1" 1 "$2"
setif "$1" 2 "$3"
#(enp0s8) #(enp0s8)
setif "$1" 2 "$3"
#(enp0s9)
if [[ -n "$4" ]] ; then
setif "$1" 3 "$4"
fi
} }
if [[ $# != 1 ]] ; then if [[ $# == 0 ]] ; then
usage usage
fi fi
if [[ $1 == "--help" ]] || [[ $1 == "-h" ]] || [[ $1 == "-V" ]] ; then
usage
fi
if [[ $1 == "-r" ]] ; then
deletemode=1
shift
fi
vm="$1" vm="$1"
create_vm "${vm}" create_vm "${vm}"
@ -56,9 +72,7 @@ elif [[ "${vm}" == "s-proxy" ]] ; then
create_if "${vm}" "n-adm" "n-infra" create_if "${vm}" "n-adm" "n-infra"
elif [[ "${vm}" == "r-int" ]] ; then elif [[ "${vm}" == "r-int" ]] ; then
# n-adm, n-link, n-wifi, n-user, n-infra # n-adm, n-link, n-wifi, n-user, n-infra
create_if "${vm}" "n-adm" "n-infra" create_if "${vm}" "n-adm" "n-link" "n-wifi"
setif "${vm}" 2 "n-link"
setif "${vm}" 3 "n-wifi"
setif "${vm}" 4 "n-user" setif "${vm}" 4 "n-user"
setif "${vm}" 5 "n-infra" setif "${vm}" 5 "n-infra"
elif [[ "${vm}" == "r-ext" ]] ; then elif [[ "${vm}" == "r-ext" ]] ; then
@ -74,9 +88,8 @@ elif [[ "${vm}" == "s-itil" ]] ; then
elif [[ "${vm}" == "s-nxc" ]] ; then elif [[ "${vm}" == "s-nxc" ]] ; then
create_if "${vm}" "n-adm" "n-infra" create_if "${vm}" "n-adm" "n-infra"
elif [[ "${vm}" == "s-fog" ]] ; then elif [[ "${vm}" == "s-fog" ]] ; then
create_if "${vm}" "n-adm" "n-infra" create_if "${vm}" "n-adm" "n-infra" "n-user"
setif "${vm}" 3 "n-user" elif [[ "${vm}" == "s-dns-ext" ]] ; then
elif [[ "${vm}" == "s-DNS-ext" ]] ; then
create_if "${vm}" "n-adm" "n-dmz" create_if "${vm}" "n-adm" "n-dmz"
elif [[ "${vm}" == "s-web-ext" ]] ; then elif [[ "${vm}" == "s-web-ext" ]] ; then
create_if "${vm}" "n-adm" "n-dmz" create_if "${vm}" "n-adm" "n-dmz"
@ -86,12 +99,10 @@ elif [[ "${vm}" == "s-lb" ]] ; then
create_if "${vm}" "n-adm" "n-dmz" "n-dmz-lb" create_if "${vm}" "n-adm" "n-dmz" "n-dmz-lb"
elif [[ "${vm}" == "s-web1" ]] ; then elif [[ "${vm}" == "s-web1" ]] ; then
create_if "${vm}" "n-adm" "n-dmz-lb" "n-dmz-db" create_if "${vm}" "n-adm" "n-dmz-lb" "n-dmz-db"
# setif "${vm}" 3 "n-dmz-lb"
elif [[ "${vm}" == "s-web2" ]] ; then elif [[ "${vm}" == "s-web2" ]] ; then
create_if "${vm}" "n-adm" "n-dmz-lb" "n-dmz-db" create_if "${vm}" "n-adm" "n-dmz-lb" "n-dmz-db"
elif [[ "${vm}" == "s-web3" ]] ; then elif [[ "${vm}" == "s-web3" ]] ; then
create_if "${vm}" "n-adm" "n-dmz-lb" "n-dmz-db" create_if "${vm}" "n-adm" "n-dmz-lb" "n-dmz-db"
# setif "${vm}" 3 "n-dmz-lb"
elif [[ "${vm}" == "s-lb-bd" ]] ; then elif [[ "${vm}" == "s-lb-bd" ]] ; then
create_if "${vm}" "n-adm" "n-dmz-db" create_if "${vm}" "n-adm" "n-dmz-db"
elif [[ "${vm}" == "s-nas" ]] ; then elif [[ "${vm}" == "s-nas" ]] ; then
@ -102,8 +113,7 @@ elif [[ "${vm}" == "r-vp2" ]] ; then
./addint.r-vp2 ./addint.r-vp2
elif [[ "${vm}" == "s-agence" ]] ; then elif [[ "${vm}" == "s-agence" ]] ; then
create_if "${vm}" "n-adm" "n-agence" create_if "${vm}" "n-adm" "n-agence"
else else
echo "$0 : vm ${vm} non prevu" echo "$0 : vm ${vm} non prevue "
exit 2 exit 2
fi fi

View File

@ -1,7 +0,0 @@
---
- hosts: localhost
connection: local
roles:
- snmp-agent

View File

@ -1,15 +1,18 @@
# Création des dossiers partagés et des utilisateur # Tuto Installation Windows Serveur
Les fichiers .cmd lancer sur la machine s-win permet de créer les utilisateur, leurs mettres - Une fois l'installation du serveur Windows, renommer le serveur en s-win et installer git.
droits et créer des dossiers partagés. - Installer Serveur DNS et Services AD DS.
- Créer une nouvelle fôret pour le domaine gsb.lan.
- Configurer la zone inverse du DNS.
le fichier mkusr.cmd permet de créer un autre utiliateur avec les mêmes droits que les autres. ## Création des dossiers partagés et des utilisateur
# Utilisation des comptes utilisateurs - Lancer mkusr-compta.cmd et mkusr-ventes.cmd sur s-win pour créer les utilisateurs avec leurs droits.
- Le fichier gsb-dossiers.cmd permet de créer des dossiers partagés.
- Le fichier mkusr.cmd permet de créer un autre utiliateur avec les mêmes droits que les autres.
Pour vous connecter au serveurs DNS s-win il faut créer un machine dans le réseau n-user et que ## Utilisation des comptes utilisateurs
cette machine puisse ping le serveur.
Après il suffit de changer le domaine de cette machine et la redémarrer. - Pour utiliser l'AD du serveur s-win, créer une machine Windows 10 dans le réseau n-user.
- Une fois son adresse IP obtenue (172.16.64.xx) ajouter la machine dans le domaine gsb.lan en utilisant un utiliateur (autre que l'Administrateur).
suite à ça, connecter vous avec les identifiants d'un utilisateurs. - Redémarrer puis se connecter avec les identifiants choisis.