diff --git a/divers/manuel_Asus_KGPN_D16.pdf b/divers/manuel_Asus_KGPN_D16.pdf new file mode 100644 index 0000000..ad166a8 Binary files /dev/null and b/divers/manuel_Asus_KGPN_D16.pdf differ diff --git a/images/Carte_de_France.svg b/images/Carte_de_France.svg new file mode 100644 index 0000000..76a7d63 --- /dev/null +++ b/images/Carte_de_France.svg @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/Carte_infra.xopp b/images/Carte_infra.xopp new file mode 100644 index 0000000..0f2ae15 Binary files /dev/null and b/images/Carte_infra.xopp differ diff --git a/images/image_carte_infra.png b/images/image_carte_infra.png new file mode 100644 index 0000000..daf9d91 Binary files /dev/null and b/images/image_carte_infra.png differ diff --git a/procédures/acces_serveurs.md b/procédures/acces_serveurs.md new file mode 100644 index 0000000..7c3f152 --- /dev/null +++ b/procédures/acces_serveurs.md @@ -0,0 +1,50 @@ +## Accès aux serveurs physiques de l'infrastructure + +### Configuration SSH côté infra + +Pour un administrateur d'infrastructure, l'accès aux serveurs de l'infra se fait sur le compte sudoer `admin666` via le compte `cominfra`, authentifié par clé SSH. +Pour qu'un nouvel administrateur puisse accéder aux serveurs, il faut : + +- Sur `mother`, ajouter la clé publique (ssh) du nouvel admin dans `/home/cominfra/.ssh/authorized_keys` et `/home/admin666/.ssh/authorized_keys` + +- Sur `aunt`, ajouter la clé publique (ssh) du nouvel admin dans `/home/cominfra/.ssh/authorized_keys` et `/home/admin666/.ssh/authorized_keys` + +### Configuration SSH client + + host mother.libre-en-communs.org + User cominfra + Port 222 + SendEnv GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL + + host mother666.libre-en-communs.org + User admin666 + Hostname mother.libre-en-communs.org + Port 222 + ProxyCommand ssh -q -W %h:%p mother.libre-en-communs.org + SendEnv GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL + + host aunt.libre-en-communs.org + User cominfra + Port 223 + SendEnv GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL + + host aunt666.libre-en-communs.org + User admin666 + Hostname aunt.libre-en-communs.org + Port 223 + ProxyCommand ssh -q -W %h:%p aunt.libre-en-communs.org + SendEnv GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL + +### Procédure de connexion avec config dans ~/.ssh/config + +Le nouvel admin n'a plus qu'à utiliser `ssh mother666.libre-en-communs.org` pour accéder au serveur `mother` + +### Procédure de connexion sans config + +Le nouvel admin peut utiliser `ssh -i 'CLE_PRIV' -J cominfra@mother.libre-en-communs.org:222 admin666@localhost -p 222` pour accéder au serveur `mother` + +### Accès aux machines virtuelles + +Si besoin, l'administrateur d'infrastructure peut accéder aux machines virtuelles qui tournent sur les serveurs, et ce depuis le compte `admin666` de n'importe quel serveur. Il suffira d'utiliser la commande `ssh `. + +Par exemple, pour accéder à la machine `dns` : `ssh dns` diff --git a/procédures/acces_vm.md b/procédures/acces_vm.md new file mode 100644 index 0000000..c099f13 --- /dev/null +++ b/procédures/acces_vm.md @@ -0,0 +1,76 @@ +## Accès aux machines virtuelles de l'infrastructure + +### Configuration SSH côté infra + +En règle générale, l'accès aux machines virtuelles ne se fait pas directement. Il faut passer par `mother` ou `aunt`. +Pour qu'un nouvel administrateur puisse accéder à des machines, il faut : + +- Sur `mother` ou `aunt`, ajouter la clé publique (ssh) du nouvel admin dans `/home/cominfra/.ssh/authorized_keys` + +- Sur chaque machine virtuelle concernée, ajouter la clé publique (ssh) du nouvel admin dans `/home/admin666/.ssh/authorized_keys` + +Note : en IPV6, la connexion directe peut être possible. A voir au cas par cas. + +**Attention** : les noms de machines virtuelles de Chalec contiennent ".chalec.org" en suffixe. + +### Configuration SSH client + +Soit en passant par `mother` + + host mother.libre-en-communs.org + User cominfra + Port 222 + SendEnv GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL + + match host *.a-lec.org + User admin666 + Hostname %h + Port 22 + ProxyJump mother.libre-en-communs.org + SendEnv GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL + + host *.chalec.org + User admin666 + Port 22 + ProxyJump mother.libre-en-communs.org + SendEnv GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL + +Ou bien en passant par `aunt` + + host aunt.libre-en-communs.org + User cominfra + Port 223 + SendEnv GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL + + match host *.a-lec.org + User admin666 + Hostname %h + Port 22 + ProxyJump aunt.libre-en-communs.org + SendEnv GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL + + host *.chalec.org + User admin666 + Port 22 + ProxyJump aunt.libre-en-communs.org + SendEnv GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL + +Pour fixer les variables Git directement dans la conf, ajouter un `SetEnv` avant `SendEnv` : +``` +SetEnv GIT_AUTHOR_NAME="Moi" GIT_AUTHOR_EMAIL="moncourriel" +``` + +Note : avoir les deux configurations peut être utile en cas de panne de l'un ou l'autre des serveurs. + + +### Procédure de connexion avec config dans ~/.ssh/config + +Le nouvel admin n'a plus qu'à utiliser `ssh NOM_DE_VM.a-lec.org` pour accéder à la machine virtuelle + +### Procédure de connexion sans config + +Le nouvel admin peut utiliser au choix : + +- `ssh -i 'CLE_PRIV' -J cominfra@mother.libre-en-communs.org:222 admin666@NOM_DE_VM.a-lec.org -p 22` + +- `ssh -i 'CLE_PRIV' -J cominfra@aunt.libre-en-communs.org:223 admin666@NOM_DE_VM.a-lec.org -p 22` diff --git a/procédures/création_pm.md b/procédures/création_pm.md new file mode 100644 index 0000000..c39ab50 --- /dev/null +++ b/procédures/création_pm.md @@ -0,0 +1,40 @@ +# Création d'une nouvelle machine physique + +Le but est d'intégrer une nouvelle machine physique dans le SI. + +Configurer la machine : +- installer une Debian stable ; + - premier compte : admin666, +- la mettre à jour ; + +Remplacer le noyau par Linux-libre-lts : +- TODO + + +Installer les paquets de base : +``` +sudo apt install etckeeper mollyguard tig lm-sensors fancontrol screen emacs-nox vrms needrestart iotop htop curl ncdu iptraf tig unzip +``` + +Mettre l'IPV6 statique à l'image de l'IPV4 choisie : +- éditer ̀`/etc/network/interfaces`. + +Nommer la machine : +``` +sudo hostnamectl set-hostname NOM +``` + +Configurer le courriel : +- TODO + + +Configuration du routage : +- aller sur https://routeur.libre-en-communs.org/cgi-bin/luci/admin/network/dhcp +- onglet Static Leases, bouton Add : + - Hostname : nom de PM en domaine, + - MAC : dispo sur la machine, + - IPv4 : choisir entre : + - un 192.168.0.x pour infra générale (si pas un service que des commissions vont utiliser), + - un 192.168.1.x pour infra, + - un 192.168.2.x pour Chalec, +- valider les changements. diff --git a/procédures/création_vm.md b/procédures/création_vm.md new file mode 100644 index 0000000..c433d18 --- /dev/null +++ b/procédures/création_vm.md @@ -0,0 +1,43 @@ +# Création d'une nouvelle machine virtuelle + +- Creation de la VM par clonage de generic ou generic.chalec.org + +- Aller sur https://routeur.libre-en-communs.org/cgi-bin/luci/admin/network/dhcp + + + Onglet Static Leases, bouton Add + + - Hostname : nom de VM en domaine + + - MAC : dispo dans virt-manager + + + - IPv4 : choisir entre : + + + un 192.168.0.x pour infra générale + + + un 192.168.1.x pour infra + + + un 192.168.2.x pour chalec + + + Valider les changements + + +- sudo virsh console NOM_DE_VM + + + login = admin666 + + + sudo nano /etc/network/interfaces + + - Changer l'IPv6 statique à l'image de l'IPv4 choisie + + - Changer les hostnames (chaque nano signifie qu'il faut remplacer le generic ou generic.chalec.org par NOM_DE_VM) + + + sudo hostnamectl set-hostname NOM_DE_VM + + + sudo nano /etc/postfix/virtual && sudo postmap /etc/postfix/virtual + + + sudo nano /etc/mailname + + + sudo nano /etc/postfix/main.cf && sudo postfix reload + + + sudo reboot diff --git a/procédures/migration_vm.md b/procédures/migration_vm.md new file mode 100644 index 0000000..e27b152 --- /dev/null +++ b/procédures/migration_vm.md @@ -0,0 +1,30 @@ +# Migration de machines virtuelles entre machines physiques + +Il y a plusieurs méthodes de migration de machines virtuelles en mother et aunt + +## Migration "normale" d'une machine par son nom + +Pour migrer une machine de mother à aunt : + + /opt/sharedfs/outils/migrate_to_aunt.sh NOM_DE_VM + +Pour migrer une machine de aunt à mother : + + /opt/sharedfs/outils/migrate_to_mother.sh NOM_DE_VM + +## Migration "normale" d'un groupe de machine par nombre + +Pour migrer X machines de mother vers aunt : + + /opt/sharedfs/outils/migrate_many_to_aunt.sh X + +Pour migrer X machines de aunt vers mother : + + /opt/sharedfs/outils/migrate_many_to_mother.sh X + +## Migration d'urgence (P2P) de aunt vers mother (sans DRBD) + +Pour migrer une machine de aunt vers mother lorsque DRBD ne fonctionne pas : + + /opt/sharedfs/outils/migrate_to_mother_p2p.sh NOM_DE_VM + diff --git a/procédures/reboot_physique.md b/procédures/reboot_physique.md new file mode 100644 index 0000000..681eb2a --- /dev/null +++ b/procédures/reboot_physique.md @@ -0,0 +1,45 @@ +# Redémarrages de machines physiques + +## Annoncer le downtime + +Il faut annoncer le downtime sur isengard (cf [la procédure dédiée](supervision.md#activation-dun-downtime)). + +## Migrer les machines virtuelles présentes sur l'hôte physique vers un autre hôte + +Utiliser les instructions de la [procédure dédiée](migration_vm.md). + +## Lancer le redémarrage + +Lancer le redémarrage avec : + + sudo systemctl start kexec.target + +*Ne pas utiliser la commande reboot sauf nécessité absolue* + +*Ne pas utiliser la commande shutdown sauf nécessité absolue* + +## Vérifier l'état de DRBD après redémarrage + +Avec la commande : + + sudo cat /proc/drbd + +Et vérifier que l'état est _cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate_ + +## Monter la partition DRBD + +Avec la commande : + + sudo mount /opt/sharedfs + +## Vérifier le bon fonctionnement + +Avec : + + sudo systemctl status + +en vérifiant que le statut est _running_ et qu'aucun job n'est en fail. + +## Migrer les machines virtuelles depuis l'autre hôte vers le présent hôte physique à présent prêt + +Utiliser les instructions de la [procédure dédiée](migration_vm.md). diff --git a/procédures/reboot_vm.md b/procédures/reboot_vm.md new file mode 100644 index 0000000..0911238 --- /dev/null +++ b/procédures/reboot_vm.md @@ -0,0 +1,22 @@ +# Redémarrages de machines virtuelles + +## Annoncer le downtime + +Il faut annoncer le downtime sur isengard (cf [la procédure dédiée](supervision.md#activation-dun-downtime)). + +## Lancer le redémarrage + +Lancer le redémarrage avec : + + sudo reboot + +`mollyguard` va demander de confirmer le nom d'hôte de la machine à redémarrer. + +## Vérifier le bon fonctionnement après redémarrage + +Avec : + + sudo systemctl status + +en vérifiant que le statut est _running_ et qu'aucun job n'est en fail. + diff --git a/procédures/sauvegardes.md b/procédures/sauvegardes.md new file mode 100644 index 0000000..bf502c1 --- /dev/null +++ b/procédures/sauvegardes.md @@ -0,0 +1,40 @@ +# Gestion des sauvegardes l'infrastructure + +Pour les sauvegardes, nous utilisons au sein de notre infrastructure les logiciels suivants : + +- rsync pour les machines physiques +- [virt-backup](https://pypi.org/project/virt-backup/) pour les machines virtuelles +- les [scripts d'administration](https://git.a-lec.org/a-lec/commissions/infrastructure/infra-generale) + +Les sauvegardes sont configurées comme indiqués dans le [dépôt dédié](https://git.a-lec.org/a-lec/commissions/infrastructure/sauvegardes) + +## Sauvegarde des machines virtuelles + +Sur une des machines physiques (ex: mother ou aunt). + +### Lister les sauvegardes + +Pour lister le résumé des sauvegardes : + + sudo virt-backup list + +Pour lister les sauvegardes d'une machine particulière : + + sudo virt-backup list -D NOM_DE_VM + +### Pour réaliser une sauvegarde de toutes les machines d'un hôte physique + +Il n'est pas possible de réaliser une sauvegarde d'une machine isolée. + + sudo virt-backup backup + +### Pour restorer une sauvegarde + +Nous avons un script spécial pour restaurer une sauvegarde : + + sudo /opt/sharedfs/restore.sh NOM_DE_VM DATE_DE_SAUVEGARDE NOM_DE_DISQUE CHEMIN_CIBLE + +### Nettoyer les sauvegardes + + sudo virt-backup clean + diff --git a/procédures/supervision.md b/procédures/supervision.md new file mode 100644 index 0000000..bdf0081 --- /dev/null +++ b/procédures/supervision.md @@ -0,0 +1,210 @@ +# Installation de la supervision sur une machine virtuelle + +## Générer un ticket sur isengard.libre-en-communs.org + + sudo icinga2 pki ticket --cn NOM_DE_DOMAINE_DE_VM + +On obtient un ticket à noter dans l'issue. Il sera redemandé plus tard. + +## En SSH sur la machine virtuelle, installer l'agent de supervision + + sudo apt install icinga2 monitoring-plugins monitoring-plugins-contrib + +## Modifier la configuration de la sonde de mémoire vive (pour corriger un bug) + +
+/usr/share/icinga2/include/plugins-contrib.d/operating-system.conf + + object CheckCommand "mem" { + command = [ PluginContribDir + "/check_memory" ] + + arguments = { + "-u" = { + set_if = "$mem_used$" + description = "Check USED memory" + } + "-f" = { + set_if = "$mem_free$" + description = "Check FREE memory" + } + "-C" = { + set_if = "$mem_cache$" + description = "Count OS caches as FREE memory" + } + "-w" = { + value = "$mem_warning$" + description = "Percent free/used when to warn" + } + "-c" = { + value = "$mem_critical$" + description = "Percent free/used when critical" + } + } + + vars.mem_used = false + vars.mem_free = false + vars.mem_cache = false + } + +
+ +## Connecter notre agent au serveur de supervision + + sudo icinga2 node wizard + +
+On réalise la configuration interactive suivante: + + Welcome to the Icinga 2 Setup Wizard! + + We will guide you through all required configuration details. + + Please specify if this is an agent/satellite setup ('n' installs a master setup) [Y/n]: + + Starting the Agent/Satellite setup routine... + + Please specify the common name (CN) [NOM_DE_DOMAINE_DE_VM]: + + Please specify the parent endpoint(s) (master or satellite) where this node should connect to: + Master/Satellite Common Name (CN from your master/satellite node): isengard.libre-en-communs.org + + Do you want to establish a connection to the parent node from this node? [Y/n]: + Please specify the master/satellite connection information: + Master/Satellite endpoint host (IP address or FQDN): isengard.libre-en-communs.org + Master/Satellite endpoint port [5665]: + + Add more master/satellite endpoints? [y/N]: + Parent certificate information: + + Version: 3 + Subject: CN = isengard.libre-en-communs.org + Issuer: CN = Icinga CA + Valid From: Dec 9 14:36:07 2021 GMT + Valid Until: Dec 5 14:36:07 2036 GMT + Serial: c4:3f:53:b2:cf:09:f7:b5:2e:88:39:03:e9:96:c8:fc:99:a1:ca:3a + + Signature Algorithm: sha256WithRSAEncryption + Subject Alt Names: isengard.libre-en-communs.org + Fingerprint: 54 78 22 83 24 22 3A A7 FD 00 01 E4 10 67 71 B6 CA 3E A2 71 93 63 F8 64 29 E9 45 1F D1 35 A9 95 + + Is this information correct? [y/N]: y + + Please specify the request ticket generated on your Icinga 2 master (optional). + (Hint: # icinga2 pki ticket --cn 'NOM_DE_DOMAINE_DE_VM'): INSERER_NUMERO_DE_TICKET_ICI + Please specify the API bind host/port (optional): + Bind Host []: + Bind Port []: + + Accept config from parent node? [y/N]: y + Accept commands from parent node? [y/N]: y + + Reconfiguring Icinga... + Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect. + Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. + + Local zone name [NOM_DE_DOMAINE_DE_VM]: + Parent zone name [master]: + + Default global zones: global-templates director-global + Do you want to specify additional global zones? [y/N]: + + Do you want to disable the inclusion of the conf.d directory [Y/n]: + Disabling the inclusion of the conf.d directory... + + Done. + + Now restart your Icinga 2 daemon to finish the installation! + +
+ +## Créer le fichier de zone pour la nouvelle machine dans isengard.libre-en-communs.org + +
+/etc/icinga2/zones.d/master/NOM_DE_DOMAINE_DE_VM.conf + + object Endpoint "NOM_DE_DOMAINE_DE_VM" { + } + + object Zone "NOM_DE_DOMAINE_DE_VM" { + endpoints = [ "NOM_DE_DOMAINE_DE_VM" ] + parent = "master" + } + + object Host "NOM_DE_DOMAINE_DE_VM" { + import "generic-host" + address = "NOM_DE_DOMAINE_DE_VM" + address6 = "NOM_DE_DOMAINE_DE_VM" + vars.os = "GNU/Linux" + vars.client_endpoint = name + + vars.notification["mail"] = { + groups = [ "icingaadmins" ] + } + + } + +
+ +# Interface web d'Isengard + +Site web : https://isengard.libre-en-communs.org/ + +## Activation d'un downtime + +Downtimer : +- Menu gauche > Overview > Hosts +- sélectionner la vm visée +- partie droite > Schedule downtime +- Comment : mettre la raison du downtime, exemple : reboot noyal +- End time : par défaut 1h +- All services : coché +- Child Hosts : Schedule triggered downtime for all child hosts (/!\ utile ?) +- cliquer sur Schedule downtime + +## Ajout d'une entrée de menu pour ses vm + +Ajout : +- Menu gauche > Overview > Hosts ; +- sélectionner les vm désirées (Ctrl + clique gauche) +- partie droite > menu > chevron bas (à droite de History) > Add to menu +- Name : mettre le nom qui apparaîtra dans le menu +- Target : Single Column +- cliquer Save Changes + +## Ajout d'une entrée de menu ses services + +Ajout : +- Menu gauche > Overview > Services ; +- cliquer sur l'icone filtre à droite de la zone de recherche +- première case : Host (Case insensitive) +- deuxième case : = +- troisième case : le nom de votre vm, exemple : audio.chalec.org +- cliquer sur + et sélectionner OR +- recommencer autant de fois que voulu +- cliquer sur Apply +- menu du haut > chevron bas (à droite de Service) > Add to menu +- Name : mettre le nom qui apparaîtra dans le menu +- Target : Single Column +- cliquer Save Changes + +## Éditer une entrée personnalisée de menu + +Pour éditer une entrée personnalisée du menu : +- Menu gauche > vous@a-lec.org > My account > Navigation +- dans la liste, cliquer sur l'entrée à éditer. + +## Supprimer une entrée de menu personnalisée + +Pour supprimer une entrée personnalisée du menu : +- Menu gauche > vous@a-lec.org > My account > Navigation +- dans la liste, cliquer sur l'entrée à éditer +- cliquer sur l'icone croix rouge ; + +## Downtime de tous ses services en 2 clics + +Prérequis : avoir créer une entrée personnalisée du menu pour ses vm. + +Downtimer ses services : +- Menu gauche > entrée personnalisée de vos vm +- cliquer sur « Schedule downtimes » +- …