Retour : Page Principale > sommaire serveurs & domaines > Osyris

Procédure de configuration d'Osyris


Installation de Proxmox 4.2

Une clef USB, une copie bootable de Proxmox VE 4.2, et BIM c'est installé.
Partitionnement :
  • 12 Gio sur /
  • 230 Gio sur LVM (pour les disques virtuels des VMs)

Détails des options à lire ici et expliquer là :
hdsize : taille utilisée
swapsize : 8GB pour le swap ça devrait suffire (ça tombe bien c'est le max (ou sinon hdsize/8), et 4GB minimum)
maxroot : 10GB devraient suffire pour le system, une install c'est moins de 2GB (hdsize/4 maximum)
maxvz : lĂ  oĂč on va stocker les containers

  • Defines the maximum size of the data volume. The actual size of the data volume is:

  • datasize = hdsize - rootsize - swapsize - minfree

  • Where datasize cannot be bigger than maxvz.
minfree
  • Defines the amount of free space left in LVM volume group pve. With more than 128GB storage available the default is 16GB, else hdsize/8 will be used.
Note LVM requires free space in the VG for snapshot creation (not required for lvmthin snapshots).

Note : envisager de mettre à jour vers la version 5 - cela dit si les VMs sont à jour ça n'apporte pas grand chose de toucher à l'hÎte, et c'est trÚs risqué.

Montage de Grosdur en NFS

Osyris utilise le RAID 5 grosdur d'Agathis pour stocker ses backups de VMs (prĂȘts Ă  ĂȘtre rĂ©injectĂ©s). Le dossier /grosdur/proxmox a Ă©tĂ© montĂ© Ă  l'aide de l'interface graphique de Proxmox; il est maintenant montĂ© automatiquement Ă  chaque dĂ©marrage.

Outils d'administration maison

Sur chaque VM et sur l'hĂŽte, dans /root/outils se trouvent des scripts qui permettent de :
  • creer_utilisateur.sh : crĂ©er un utilisateur systĂšme, son vhost Apache, sa pool PHP-FPM, sa base de donnĂ©es MySQL, sa sauvegarde
  • detruire_utilisateur.sh : dĂ©truire un utilisateur, toutes ses configs et toutes ses donnĂ©es
  • preparer_environnement.sh : prĂ©parer l'environnement pour les nouveaux utilisateurs
  • paquets_et_modules.sh : installer les paquets de base pour du Web (sommaire, Ă  amĂ©liorer)
Sur Osyris, on trouve en sus :
  • execute-moi-ca-partout.sh : un script qui utilise pssh (voir chapitre ci-dessous)

Attention, ces outils ne sont pas [encore] versionnés, pour des raisons de confidentialité (stratégie à valider); pour l'instant il faut donc répercuter les modifications sur l'hÎte et toutes les VMs à chaque fois (utiliser PSCP, voir ci dessous)
Attention 2, ces outils font des trucs dangereux, faire bien attention avant de les lancer !

PSSH

pssh est un programme Python qui fait du SSH / SCP en parallĂšle sur plusieurs machines. C'est pratique depuis Osyris pour exĂ©cuter les mĂȘmes commandes sur toutes les VMs simultanĂ©ment.

Installation

Fait sur Osyris le 2016-09-26
apt-get install python-pip
pip install pssh
Les VMs sont listées dans /root/outils/vms.list.

Utilisation

Exécution d'une commande :
pssh -h outils/vms.list -l root -A -i "commande Ă  lancer sur les VMs"
L'outil execute-moi-ca-partout.sh simplifie l'utilisation de ce machin.

Copie d'un fichier
pscp -h outils/vms.list -l root -A fichier-a-copier /repertoire/de/destination/


Script de sauvegarde (backup) des Vms

Un script est lancé tous les mois pour effectuer un backup sur des Vms sur grosdur :
/etc/cron.monthly/sauvegarde_vms
#!/bin/bash

# tous les 16 du mois à 2h du matin, on sauvegarde sur Grosdur (en NFS) les VMs dont les IDs sont listés ci-dessous
# - Mathias, 2016-09-15

vzdump 123 124 125 126 420 --node osyris --mode snapshot --quiet 1 --compress lzo --mailnotification always --storage agathis-grosdur --mailto dev-log@tela-botanica.org

Important : lors de la création d'une nouvelle VM, penser à ajouter son ID à ce script

Un backup est effectué chaque 1er jour du mois, et seuls 2 backups sont conservés pour chaque VM.

Outils de surveillance des disques


installation de megacli, on trouve le dépot de paquets là :
http://hwraid.le-vert.net/wiki/DebianPackages

Ajout du dépot et installation de:
megacli megaclisas-status

Pour avoir le statut, lancer :
$ megaclisas-status --nagios

ou
$ megaclisas-status

Ajout d'un cron.hourly qui envoi des mails si megacli rapporte un problĂšme :
/etc/cron.hourly/check_raid
#!/bin/bash
STATUS=`megacli -AdpAllInfo -aALL -NoLog|egrep '^  (Degraded|Failed)'|grep -v ' 0'`;
DETAILS=``;
if [ "x$STATUS" != "x" ]; then
  DETAILS=`megaclisas-status --nagios`;
  echo -e "Subject: RAID WARNING @ $HOSTNAME\n\n$STATUS\n\n$DETAILS"|/usr/sbin/sendmail dev-log@tela-botanica.org
fi

Full doc : http://hwraid.le-vert.net/wiki/LSIMegaRAIDSAS

Puis installation smartmontools avec activation de smartd avec le /etc/smartd.conf :
# - SCAN TOUS LES DISQUES
# - LOG LA TEMPÉRATURE (-W) SI ELLE CHANGE DE 4° OU ATTEINT 44° ET +. UN EMAIL EST ENVOYÉ À 48° ET +.
# - ENVOI UN EMAIL EN CAS DE PROBLÈME
# - RÉALISE DES TESTS COURTS (S) TOUS LES MATINS À 3H00 ET PAS DE TESTS LONGS (L)
DEVICESCAN -a -o on -S on -n standby,q -s (S/../.././03|L/../.././..) -I 194 -W 4,44,48 -m dev-log@tela-botanica.org


Synchronisation de la date (NTP)

Par défaut Proxmox est censé se synchroniser correctement avec les serveurs NTP par défaut de Debian.
Oui mais voilà : notre hébergeur SupAgro bouche le port NTP; il faut donc utiliser le serveur NTP de SupAgro : ntp.supagro.inra.fr

Les instructions ci-dessous sont inspirées de cette doc.

Modifier la liste des serveurs NTP

Éditer /etc/systemd/timesyncd.conf de façon à ce qu'il ressemble à ça :
# (...)
[Time]
Servers=ntp.supagro.inra.fr 0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org

Relancer le service timesyncd de systemd

systemctl restart systemd-timesyncd.service

S'assurer que le service timesyncd de systemd se lance bien au démarrage

systemctl enable systemd-timesyncd.service

Vérifier que tout va bien

  • timedatectl donne des infos sur la synchronisation
  • date donne la date et l'heure
  • systemctl status systemd-timesyncd.service donne l'Ă©tat du service et les derniers messages du log

Pont réseau et NAT

Voir sur le wiki FlorisTic

SSH et VPN


Voir MemoOpenVPNSupAgro

Configuration du SSL sur les VMs et l'hĂŽte

Installation du certificat

Pour faire marcher Apache avec le certificat SSL de Gandi, voir cette documentation.

Configuration des Virtualhosts Apache

Exemple de Virtualhost pour beta.tela-botanica.org (sur Aphyllanthe):
<VirtualHost *:80>
    ServerName beta.tela-botanica.org
    ServerAdmin webmestre@tela-botanica.org
    DocumentRoot /home/beta/www

    ErrorLog ${APACHE_LOG_DIR}/error_beta.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /home/beta/www>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch "\.php$">
        SetHandler "proxy:unix:///var/run/php/php7.0-fpm_beta.sock|fcgi://beta/"
    </FilesMatch>

    <Proxy fcgi://beta/>
    </Proxy>
</VirtualHost>

<VirtualHost *:443>
    ServerName beta.tela-botanica.org
    ServerAdmin webmestre@tela-botanica.org
    DocumentRoot /home/beta/www

    ErrorLog ${APACHE_LOG_DIR}/error_beta.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLProtocol all -SSLv2 -SSLv3
    SSLHonorCipherOrder On
    SSLCipherSuite EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS

    SSLEngine On
    SSLCertificateFile  [CHEMIN DU FICHIER]
    SSLCertificateKeyFile [CHEMIN DU FICHIER]
    SSLCertificateChainFile [CHEMIN DU FICHIER]

    <Directory /home/beta/www>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    <FilesMatch "\.php$">
        SetHandler "proxy:unix:///var/run/php/php7.0-fpm_beta.sock|fcgi://beta/"
    </FilesMatch>

    <Proxy fcgi://beta/>
    </Proxy>

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch "MSIE [2-6]" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
    # MSIE 7 and newer should be able to use keepalive
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

</VirtualHost>


Redirection HTTP vers HTTPS

Les sites en .org devraient ĂȘtre accessibles en HTTPS uniquement. On fait donc une redirection forcĂ©e de HTTP vers HTTPS, de cette façon.

Exemple de Virtualhost pour beta.tela-botanica.org :
<VirtualHost *:80>
    ServerName beta.tela-botanica.org

    Redirect / https://beta.tela-botanica.org/

    ErrorLog ${APACHE_LOG_DIR}/proxy-beta_error.log
    CustomLog ${APACHE_LOG_DIR}/proxy-beta_access.log combined
</VirtualHost>

<VirtualHost *:443>
    ServerName beta.tela-botanica.org

    SSLEngine On
    SSLCertificateFile  [CHEMIN DU FICHIER]
    SSLCertificateKeyFile [CHEMIN DU FICHIER]
    SSLCertificateChainFile [CHEMIN DU FICHIER]

    SSLProtocol all -SSLv2 -SSLv3
    SSLHonorCipherOrder On
    SSLCipherSuite EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS

    SSLProxyEngine On
    ProxyPass "/" "http://192.168.0.124/"
    ProxyPreserveHost On

    ErrorLog ${APACHE_LOG_DIR}/proxy-beta_error.log
    CustomLog ${APACHE_LOG_DIR}/proxy-beta_access.log combined
</VirtualHost>