Outils pour utilisateurs

Outils du site


machines:grifon:erispoe

Différences

Ci-dessous, les différences entre deux révisions de la page.


machines:grifon:erispoe [2019/06/05 18:16] (Version actuelle) – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Erispoe ======
  
 +===== Administrateurs =====
 +  * alarig
 +  * dotux
 +  * gizmo
 +
 +=== Serveur: ===
 +Dell R210 II
 +
 +=== Configuration : ===
 +  * CPU : Intel X3450 @ 2.67GHz
 +  * Ram : 4*4Go DDR3 ECC
 +  * OS : HGST HTS725050A7E630
 +  * Stockage : 2*2To Western Digital Red
 +  * Cache : Samsung SSD 850 EVO mSATA 120GB
 +  * Réseau : Broadcom Corporation NetXtreme II BCM5716 *2 (intégrées)
 +
 +
 +=== Hyperviseur : ===
 +Proxmox 4.2-4
 +
 +<code>
 +Linux erispoe 4.4.8-1-pve #1 SMP Thu May 12 13:25:49 CEST 2016 x86_64 GNU/Linux
 +</code>
 +
 +=== Réseau : ===
 +  *VMBR0 : Lan Admin Grifon (Eth0)
 +  *VMBR1 : Lan Public (Eth1)
 +
 +=== Stockage : ===
 +
 +Le stockage est assuré par un Raid1 géré par zfs sur 2*2To Western Digital Red avec les deux niveaux de caches déportés (L2ARC et ZLOG) sur un SSD mSATA afin d'apporter de la rapidité au Raid1.
 +
 +Deux partitions sont créées sur ce SSD:
 +  * Dédiée aux logs (ZLOG) : 16G
 +  * Dédiée au cache intermédiaire (L2ARC) : 95.8G
 +
 +<code>
 +root@erispoe:~# zpool status
 +  pool: tank
 + state: ONLINE
 +  scan: resilvered 223G in 8h36m with 0 errors on Sun Jun  5 02:13:35 2016
 +config:
 +
 + NAME                                          STATE     READ WRITE CKSUM
 + tank                                          ONLINE               0
 +   mirror-0                                    ONLINE               0
 +     sdb                                       ONLINE               0
 +     ata-WDC_WD20EFRX-68EUZN0_WD-WCC4M5PRF7D7  ONLINE               0
 + logs
 +   sdd1                                        ONLINE               0
 + cache
 +   sdd2                                        ONLINE               0
 +
 +errors: No known data errors
 +</code>
 +
 +Le cache ARC (cache en RAM) est limité à 5G:
 +<code>
 +root@erispoe:~# arcstat.py 
 +    time  read  miss  miss%  dmis  dm%  pmis  pm%  mmis  mm%  arcsz     c  
 +19:28:33              0        0        0        0   4.9G  5.0G 
 +</code>
 +
 +=== Custom : ===
 +
 +Le prefetch au niveau ZFS a été désactivé afin de pouvoir gagner en rapidité.
 +<code>
 +root@erispoe:~# cat /etc/modprobe.d/zfs.conf 
 +# Desactive le prefetch des fichiers, meilleurs iops
 +options zfs zfs_prefetch_disable=1
 +</code>
 +
 +===== Déploiement de VM (old) =====
 +Nous avons un script pour le déploiement des VMs. Son principe de base est de prendre le template, de le cloner, d’agrandir le disque en fonction de la taille demandée et de copier le conf (réseau, hostname, etc.) sur le VM par SSH.
 +
 +<file bash>
 +
 +#!/bin/sh
 +
 +usage() {
 + printf "Usage of $0:\n"
 + printf "\t-h, --help\tAffiche ce message d’aide\n"
 + printf "\t-u, --user\tNom d’utilisateur a qui appartiendera la VM\n"
 + printf "\t-m, --email\tAdresse mail à qui envoyer les informations \
 +relatives à la VM\n"
 + printf "\t-f, --firstname\tPrénom du propriétaire\n"
 + printf "\t-l, --lastname\tNom de famille du propriétaire\n"
 + printf "\t-t, --template\tTemplate de VM à utiliser\n"
 + printf "\t-s, --size\tTaille de la VM\n"
 + printf "\t-n, --hostname\tNom de la VM\n"
 + printf "\t-i, --id\tNuméro servant à la génération des IPs\n"
 +}
 +
 +nargs=$(($#/2))
 +
 +OPTS=$(getopt -o u:,m:,f,l,t:,s:,n:,i:,h \
 + -l user:,email:,firstname,lastname,template:,size:,hostname:,id:,help \
 + -- "$@")
 +if [ $? != 0 ]; then
 + exit 1
 +fi
 +
 +if [ $# -eq 0 ]; then
 + usage
 + exit 1
 +fi
 +
 +_mendarg() {
 +
 + echo "Argument $1"
 + echo "Valeur $2"
 +
 + if ! [ "$2" ]; then
 + echo "$1 : argument obligatoire"
 + exit 1
 + fi
 +}
 +
 +eval set -- "$OPTS"
 +
 +while :; do
 + case "$1" in
 + -h | --help) usage;
 + exit 0;;
 + -u | --user) USER="$2";
 + shift 2;;
 + -m | --email) EMAIL="$2";
 + shift 2;;
 + -f | --firstname) FIRSTNAME="$2";
 + shift 2;;
 + -l | --lastname) LASTNAME="$2";
 + shift 2;;
 + -t | --template) TMP_BASE="$2";
 + shift 2;;
 + -s | --size) SIZE="$2";
 + shift 2;;
 + -n | --hostname) hostname="$2";
 + host=1
 + shift 2;;
 + -i | --id) IPid="$2";
 + shift 2;;
 + --) shift; break;;
 + esac
 +done
 +
 +if ! [ $host ]; then
 + printf "L’argument de nom d’hôte n’est pas déclaré, utilisation du nom \
 +d’utilisateur à la place.\n"
 + hostname=$USER
 + nargs=$((nargs+1))
 +fi
 +
 +#if [ $nargs -ne 8 ]; then
 +# printf "Tous les arguments ne sont pas présents\n"
 +# usage
 +# exit 1
 +#fi
 +
 +# Récupération des identifiants des templates
 +case "$TMP_BASE" in 
 + deb) TEMPLATE=900 ;;
 + ubt-512) TEMPLATE=902 ;;
 + ubt-1) TEMPLATE=903 ;;
 + blank-512) TEMPLATE='blank-512' ;;
 + blank-1) TEMPLATE='blank-1' ;;
 + *) echo "Template inconnue"; exit 1;; 
 +esac
 +
 +# Génération du mot de passe
 +echo "1 - Génération du mot de passe"
 +PASSWORD="$(head -c 12 /dev/urandom | base64)"
 +
 +# Vérification de l’existence du pool
 +echo "2 - Vérification de l’existence du pool"
 +CHECK_POOL=`pvesh get /pools/$USER`
 +
 +# Création du pool réservé à l’utilisateur
 +if [ "$CHECK_POOL" != "" ]; then
 + echo "Le pool existe déjà"
 +else
 + echo "3 - Création du pool utilisateur"
 + pvesh create /pools -poolid $USER
 +fi
 +
 +# Vérification de l’existence de l’utilisateur
 +echo "4 - Vérification de l’utilisateur local"
 +CHECK_USER=$(grep $USER /etc/passwd | cut -d':' -f1)
 +
 +# Création de l’utilisateur local
 +if [ "$CHECK_USER" != "" ]; then
 + echo "L’utilisateur existe déjà"
 +else
 + echo "5 - Création de l’utilisateur local"
 + useradd --no-create-home --password $(openssl passwd -1 $PASSWORD) $USER
 + echo $PASSWORD
 +fi
 +
 +# Vérification de l’existence de l’utilisateur GUI
 +echo "6 - Vérification de l’utilisateur GUI"
 +CHECK_USER_GUI=`cat /etc/pve/user.cfg | grep $USER`
 +
 +if [ "$CHECK_USER_GUI" != "" ]; then
 + echo "L’utilisateur existe déjà"
 +else
 + # Création de l’utilisateur GUI
 + echo "7 - Création de l’utilisateur GUI"
 + pveum useradd $USER@pam -groups "Membres" -email $EMAIL \
 + -firstname $FIRSTNAME -lastname $LASTNAME
 + pveum aclmod /pool/$USER -roles "PVEVMUser" -users $USER@pam
 +fi
 +
 +
 +# $(($(qm list | grep -v -e "Tmp.*deb" -e "Tmp.*ubt" | wc -l) + 100)) sert à
 +# déterminer l’id de la VM
 +echo "8 - Déploiement du template"
 +#ID_VM="$(($(qm list | grep -vi -e "tmp-deb" -e "tmp.*ubt" | wc -l) + 100))"
 +GET_ID="$(pvesh get /cluster/nextid > /tmp/id)"
 +ID_VM="$(cat /tmp/id | sed 's/"//g')"
 +echo $ID_VM
 +qm clone $TEMPLATE $ID_VM -full -name $hostname -pool $USER -storage Raid1
 +rm /tmp/id
 +
 +# Gros bourrin powa, j’agrandis le disque puis je redimensionne la partition
 +# directement depuis erispoe
 +# Ne pas le faire quand la VM est bootée, sinon on ne reboote pas
 +qm resize $ID_VM virtio0 +${SIZE}G
 +parted /dev/zvol/tank/vm-$ID_VM-disk-1 resizepart 1 $(($SIZE+1))GB
 +e2fsck -fp /dev/zvol/tank/vm-$ID_VM-disk-1-part1
 +resize2fs /dev/zvol/tank/vm-$ID_VM-disk-1-part1
 +e2fsck -fp /dev/zvol/tank/vm-$ID_VM-disk-1-part1
 +
 +qm start $ID_VM
 +
 +# TODO: utiliser salt ou cloud-init
 +
 +MAC=$(grep net0 /etc/pve/qemu-server/$ID_VM.conf | cut -d '=' -f 2 | \
 + cut -d ',' -f 1)
 +FE80=$(ipv6calc --action prefixmac2ipv6 --in prefix+mac \
 + --out ipv6addr fe80:: $MAC)
 +
 +sleep 20 # attendre que la VM démarre
 +
 +# ne pas enregistrer ni vérifier le fingerprint
 +SSH_OPT="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
 +
 +echo $hostname > /tmp/etchostname
 +scp $SSH_OPT /tmp/etchostname root@[$FE80%vmbr1]:/etc/hostname
 +
 +echo "127.0.0.1 localhost
 +89.234.186.$IPid $hostname
 +2a00:5884:$((8200+$IPid))::1 $hostname
 +
 +# The following lines are desirable for IPv6 capable hosts
 +::1     localhost ip6-localhost ip6-loopback
 +ff02::1 ip6-allnodes
 +ff02::2 ip6-allrouters" > /tmp/etchosts
 +scp $SSH_OPT /tmp/etchosts root@[$FE80%vmbr1]:/etc/hosts
 +
 +echo "# This file describes the network interfaces available on your system
 +# and how to activate them. For more information, see interfaces(5).
 +
 +source /etc/network/interfaces.d/*
 +
 +# The loopback network interface
 +auto lo
 +iface lo inet loopback
 +
 +# The primary network interface
 +allow-hotplug eth0
 +iface eth0 inet static
 + address 89.234.186.$IPid
 + netmask 255.255.255.255
 + network 89.234.186.0
 + broadcast 89.234.186.255
 +
 + #Route statique vers la passerelle
 + up ip route add default via 89.234.186.1 dev eth0 onlink
 +
 + dns-nameservers 89.234.186.1
 + dns-search grifon.fr
 +
 +iface eth0 inet6 static
 + address 2a00:5884:$((8200+$IPid))::1
 + netmask 48
 + gateway fe80::215:17ff:fe39:f01b" > /tmp/eni
 +scp $SSH_OPT /tmp/eni root@[$FE80%vmbr1]:/etc/network/interfaces
 +
 +# détermination du fingerprint
 +file=$(mktemp)
 +ssh-keyscan $FE80%vmbr1 >$file 2>/dev/null
 +SSH_FP="$(ssh-keygen -l -f $file)"
 +rm $file
 +
 +ssh $SSH_OPT root@$FE80%vmbr1 'rm ~/.bash_history'
 +ssh $SSH_OPT root@$FE80%vmbr1 'echo "" > /root/.ssh/authorized_keys ; reboot'
 +
 +#qm shutdown $ID_VM
 +#qm start $ID_VM
 +
 +echo "Déploiement terminé."
 +
 +echo "9 - Envoi du mail d’info"
 +
 +SUBJECT=$(perl -wse "use utf8; use Encode qw(encode); print encode(\"MIME-Q\",\
 + \"Votre machine virtuelle $hostname vient d’être créée\");")
 +
 +echo "From: Adminsys grifon <adminsys@grifon.fr>
 +To: $EMAIL
 +Cc: adminsys@grifon.fr
 +Content-Type: text/plain; charset=UTF-8
 +Subject: $SUBJECT
 +
 +Bonjour,
 +Votre machine virtuelle vient d’être créée.
 +L’adresse d’accès est : https://hv-access.grifon.fr
 +Il vous faudra demander un certificat client à adminsys@grifon.fr¹
 +Votre identifiant: $USER
 +Votre mot de passe: $PASSWORD
 +
 +Vous pouvez vous connecter en SSH avec le mot de passe « degermatagrifon » via
 +ssh root@89.234.186.$IPid
 +ssh root@2a00:5884:$((8200+$IPid))::1
 +
 +Nous vous recommendons très vivement de changer ce mot de passe ainsi que 
 +d’interdire la connexion par SSH en tant que root sans mot de passe.
 +
 +Voir pouvez donc vous connecter, démarrer votre machine virtuelle 
 +et la configurer comme vous le souhaitez.
 +
 +Le fingerprint SSH de votre VM est :
 +$SSH_FP
 +
 +Si vous souhaitez avoir un reverse DNS, vous pouvez contacter
 +adminsys@grifon.fr en précisant si vous souhaitez une délagation ou en donnant
 +le FQDN.
 +
 +
 +1 https://grifon.fr/adminsys/cacert-client.html
 +
 +Cordialement,
 +-- 
 +Les adminsys de grifon" | /usr/sbin/sendmail -f adminsys@grifon.fr -t
 +
 +echo "Script terminé"
 +
 +printf "Route à ajouter sur nominoe : \
 +ipv6_route_$hostname=\"2a00:5884:$((8200+$IPid))::/48 "$FE80"%%em1\"\n"
 +
 +exit 0
 +</file>
machines/grifon/erispoe.txt · Dernière modification : 2019/06/05 18:16 de 127.0.0.1