Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
leria:cloud [19/05/2020 17:53]
Chantrein Jean-Mathieu [Service de serveurs privés virtuels (VPS)]
leria:cloud [15/09/2020 14:45] (Version actuelle)
Chantrein Jean-Mathieu [Pour ne pas avoir à attendre trop longtemps lors de la suppression/création de VPS]
Ligne 1: Ligne 1:
 ====== Cloud pédagogique et cloud recherche ====== ====== Cloud pédagogique et cloud recherche ======
  
-<note warning>​Ce ​service est en version alpha. Actuellement disponible uniquement ​sur leria-dev.univ-angers.fr. ​A terme: +  * Le service ​de cloud pédagogique ​est en production ​sur leria-etud.univ-angers.fr ​pour les étudiants de LP, L3, M1 et M2
-  * testeurs: leria-dev.univ-angers.fr +  * Vous pouvez y accéder en ssh sur le port 2019
-  * etudiants et enseignants (cloud pédagogique):​ leria-etud.univ-angers.fr +  * Pour le cloud recherche, veuillez contacter l'​équipe technique
-  * enseignants chercheurs (cloud recherche)leria.univ-angers.fr + 
 +<note warning>​ 
 +<wrap em >Vous devez utiliser [[https://www.linode.com/​docs/​security/​authentication/​use-public-key-authentication-with-ssh/​|une authentification par clé ssh]], faute de quoi, en cas de multiple saisie de mot de passe et/ou de login, vous seriez banni automatiquement et vous perdriez alors l'​accès à ce serviceVous ne souhaitez certainement pas que cela vous arrive pendant un examen ...</​wrap>​
 </​note>​ </​note>​
  
-Alpĥa testeurs: +<note warning> 
-  * David Genest +<wrap em >Nous ne garantissons pas la pérennité de vos données. Vous devez faire vous même vos sauvegardes. __En cas de nécessité__,​ nous nous réservons le droit de supprimer vos VPS sans votre accord préalable.</​wrap>​ 
-  * Vincent Barichard+</​note>​
  
 +<note warning>
 +  * La création d'un VPS ([[https://​fr.wikipedia.org/​wiki/​Serveur_d%C3%A9di%C3%A9_virtuel|Virtual Private Server]]) peut prendre plus ou moins de temps en fonction de l'​affluence,​ il faut donc parfois être patient. Dans le meilleur des cas, il faut souvent attendre plus de 1,5 minutes avant que le VPS ne soit accessible, parfois il faut attendre plus de 10 minutes. Au delà de ce temps, vous pouvez réessayer la manipulation en supprimant et en recréant votre fichier de création.
 +  * Pour éviter ce temps d'​attente et par courtoisie pour les utilisateurs qui ont vraiment besoin de créer/​supprimer des VPS, pensez à suivre les bonnes pratiques: https://​wiki.info.univ-angers.fr/​leria:​cloud#​bonnes_pratiques
 +  * Pensez également à consulter vos mails pour savoir quand vos actions ont été réalisés.
 +  * Ce service est partagé, merci de penser aux autres utilisateurs (ne pas laisser des commandes en tâche de fond qui gaspilleraient inutilement les ressources par exemple)
 +
 +Vous pouvez contacter l'​équipe technique par mail ou venir directement au bureau H105 pour tous renseignements complémentaires.
 +
 +</​note>​
 ===== Service de serveurs privés virtuels (VPS) ===== ===== Service de serveurs privés virtuels (VPS) =====
  
 <wrap em>​**VOUS DEVEZ IMPÉRATIVEMENT LIRE LE PARAGRAPHE SÉCURITÉ DANS L’EXEMPLE DE FICHIER CI-DESSOUS**</​wrap>​ <wrap em>​**VOUS DEVEZ IMPÉRATIVEMENT LIRE LE PARAGRAPHE SÉCURITÉ DANS L’EXEMPLE DE FICHIER CI-DESSOUS**</​wrap>​
  
-Votre VPS peut-être de type kvm et/ou lxc. La notation {kvm,lxc} signifie que vous devez spécifier:​ +<note warning>​ 
-  * lxc pour un VPS de type lxc (linux container) +<wrap em>​ATTENTION AUX COPIERS/​COLLERS DEPUIS LA DOCUMENTATION</​wrap>​ 
-  * kvm pour un VPS de type kvm (kernel virtual machine)+ 
 +\\ 
 +Votre VPS peut-être de type kvm et/ou lxc. <wrap em >La notation {kvm,lxc} signifie que vous devez spécifier:</​wrap>​ 
 +  * <wrap em >​soit</​wrap> ​lxc pour un VPS de type lxc (linux container) 
 +  * <wrap em >​soit</​wrap> ​kvm pour un VPS de type kvm (kernel virtual machine) 
 + 
 +Par exemple, si vous voyez dans la documentation:​ 
 + 
 +  touch $HOME/​{kvm,​lxc}.create 
 + 
 +Cela signifie que vous devez faire: 
 + 
 +<wrap em >​soit</​wrap>​ 
 + 
 +  touch $HOME/​kvm.create 
 + 
 +<wrap em >​soit</​wrap>​ 
 + 
 +  touch $HOME/​lxc.create 
 +  
 +</​note>​
  
 <note tip> <note tip>
Ligne 23: Ligne 54:
   * Les conteneurs LXC :   * Les conteneurs LXC :
     * sont plus légers et moins énergivore que les machine virtuelles qemu/kvm     * sont plus légers et moins énergivore que les machine virtuelles qemu/kvm
-    * dépendent du noyeau ​linux de leurs hôtes, de fait, certaines applications peuvent ne pas fonctionner dans un conteneur LXC, mais c'est très rare: il s'agit d'​applications très spécifiques +    * dépendent du noyau linux de leurs hôtes, de fait, certaines applications peuvent ne pas fonctionner dans un conteneur LXC, mais c'est très rare: il s'agit d'​applications très spécifiques 
-    * ne sont pas capables (dans la configuration ​proposé) de faire fonctionner des conteneurs docker ou des machines virtuelles+    * ne sont pas capables (dans la configuration ​proposée) de faire fonctionner des conteneurs docker ou des machines virtuelles
   * Les machines virtuelles qemu/kvm:   * Les machines virtuelles qemu/kvm:
-    * sont capables de réaliser exactement la même chose que n'​importe quelle machine physique.+    * sont capables de réaliser exactement la même chose que n'​importe quelle machine physique
     * sont plus énergivores et consomment plus de ressources que les conteneurs LXC     * sont plus énergivores et consomment plus de ressources que les conteneurs LXC
     * sont capables de faire fonctionner des conteneurs docker ou des conteneur LXC      * sont capables de faire fonctionner des conteneurs docker ou des conteneur LXC 
Ligne 33: Ligne 64:
 Vous ne devriez opter pour une machine virtuelle que dans des cas bien spécifiques. Vous ne devriez opter pour une machine virtuelle que dans des cas bien spécifiques.
  
-Vous êtes bien entendu libre de tester les 2 types de VPS et de choisir celui que vous préférez, voir même d'​utiliser les 2 types de VPS en même temps, mais gardez bien à l'​esprit que vos choix ont des impacts en terme de ressource et de consommation d'​energie.+Vous êtes bien entendu libre de tester les 2 types de VPS et de choisir celui que vous préférez, voir même d'​utiliser les 2 types de VPS en même temps, mais gardez bien à l'​esprit que vos choix ont des impacts en terme de ressource et de consommation d’énergie.
 </​note>​ </​note>​
 +
 +==== Première création ====
  
 Pour créer votre vps, il suffit de créer le fichier "​{kvm,​lxc}.create"​ à la racine de votre home sur star{gate,​wars,​wars-dev}:​ Pour créer votre vps, il suffit de créer le fichier "​{kvm,​lxc}.create"​ à la racine de votre home sur star{gate,​wars,​wars-dev}:​
  
-  touch $HOME/{kvm,lxc}.start+  ​cd 
 +  touch lxc.create # ou bien touch kvm.create si besoin de vps de type kvm 
 +  watch ls lxc.* # La commande watch va rejouer la commande ls toutes les 2 secondes. Ctrl + C pour quitter
  
-Votre fichier sera automatiquement renommé en {kvm,​lxc}.create.in_progress puis en {kvm,​lxc}.running.+  * Votre fichier sera automatiquement renommé en {kvm,​lxc}.create.in_progress puis en {kvm,​lxc}.running
 +  * La création de votre VPS peut prendre plusieurs minutes en fonctions de l'​affluence de demande de création. 
 +    * Au delà de 10 minutes d'​attente,​ si rien ne s'est passé, supprimez le fichier lxc.create et recommencez l'​opération. 
 +      * Si cela ne fonctionne toujours pas, contactez l'​équipe technique. 
 +  * Un mail vous sera envoyé une fois que l'​action de création sera terminé.
  
-  watch ls $HOME/{kvm,lxc}.*  + Une fois que votre fichier a été renommé ​lxc.running, faites la commande suivante
-  # Commande permettant de surveiller les modifications de vos fichiers. Ctrl + C pour quitter +
-  # La création de votre VPS peut prendre plusieurs minutes en fonctions de l'​affluence de demande de création+
  
 +  mv lxc.running lxc.snapshot
 +  watch ls lxc.* # Attendez que le fichier soit de nouveau automatiquement renommé lxc.running
 + 
 Les instructions de connexions à votre vps seront inscrites à la fin de votre fichier {kvm,​lxc}.running. Les instructions de connexions à votre vps seront inscrites à la fin de votre fichier {kvm,​lxc}.running.
  
Ligne 53: Ligne 93:
  
 **Vous devez lire** le contenu du fichier {kvm,​lxc}.running car vous y trouverez également quelques informations supplémentaire sur les conditions d'​utilisation de votre vps. **Vous devez lire** le contenu du fichier {kvm,​lxc}.running car vous y trouverez également quelques informations supplémentaire sur les conditions d'​utilisation de votre vps.
 +
 +==== Pour aller plus loin ====
 +
  
 Ci-dessous, voici un exemple de contenu de fichier {kvm,​lxc}.running : Ci-dessous, voici un exemple de contenu de fichier {kvm,​lxc}.running :
Ligne 67: Ligne 110:
  
 # TOUT MANQUEMENT A CES REGLES ENTRAINERA AUTOMATIQUEMENT:​ # TOUT MANQUEMENT A CES REGLES ENTRAINERA AUTOMATIQUEMENT:​
-# - L'​ARRET DE VOTRE VPS ET POTENTIELLEMENT SON BLOQUAGE +# - L'​ARRET DE VOTRE VPS ET POTENTIELLEMENT SON BLOCAGE 
-# - UN SIGNALEMENT A LA DIRECTION DU DEPARTEMENT INFORMATIQUE ET POTENTIELLEMENT UN BANISSEMENT ​DU SERVICE+# - UN SIGNALEMENT A LA DIRECTION DU DEPARTEMENT INFORMATIQUE ET POTENTIELLEMENT UN BANNISSEMENT ​DU SERVICE
  
 # Nous avons un accès root à vos VPS par plusieurs mécanismes,​ vous n'​êtes donc pas le seul administrateur de la machine. # Nous avons un accès root à vos VPS par plusieurs mécanismes,​ vous n'​êtes donc pas le seul administrateur de la machine.
Ligne 117: Ligne 160:
 # "​{kvm,​lxc}.snapshot" ​ --> Votre VPS sera snapshoté( MAX 1 snapshot par VPS ) et votre fichier sera temporairement renommé "​{kvm,​lxc}.snapshot.in_progress"​ avant de revenir à l'​état précédent. TOUT SNAPSHOT SUPPLÉMENTAIRE SUPPRIMERA LE PRÉCÉDENT. # "​{kvm,​lxc}.snapshot" ​ --> Votre VPS sera snapshoté( MAX 1 snapshot par VPS ) et votre fichier sera temporairement renommé "​{kvm,​lxc}.snapshot.in_progress"​ avant de revenir à l'​état précédent. TOUT SNAPSHOT SUPPLÉMENTAIRE SUPPRIMERA LE PRÉCÉDENT.
 # "​{kvm,​lxc}.revert" ​   --> Votre VPS reviendra à l'​état dans lequel il était lorsque vous avez fait votre snapshot (si vous en aviez fait un), toute modification depuis votre snapshot sera irréversiblement perdue. Votre fichier sera temporairement renommé “{kvm,​lxc}.revert.in_progress” et “{kvm,​lxc}.stopped”. Vous devrez démarrer votre VPS en renommant votre fichier en {kvm,​lxc}.start # "​{kvm,​lxc}.revert" ​   --> Votre VPS reviendra à l'​état dans lequel il était lorsque vous avez fait votre snapshot (si vous en aviez fait un), toute modification depuis votre snapshot sera irréversiblement perdue. Votre fichier sera temporairement renommé “{kvm,​lxc}.revert.in_progress” et “{kvm,​lxc}.stopped”. Vous devrez démarrer votre VPS en renommant votre fichier en {kvm,​lxc}.start
-# "​{kvm,​lxc}.status" ​   --> Votre fichier sera renommé dans l'​état dans lequel est votre VPS (started, stopped, ou deleted). Utile en cas de suppression accidentelle de fichier {kvm,lxc}.*+# "​{kvm,​lxc}.status" ​   --> Votre fichier sera renommé dans l'​état dans lequel est votre VPS (running, stopped, ou deleted). Utile en cas de suppression accidentelle de fichier {kvm,lxc}.*
 # "​{kvm,​lxc}.key" ​  ​-->​ Redéploiement de votre clé publique ssh. Utile en cas de suppression accidentelle de votre clé publique ssh dans /​root/​.ssh.autorized_keys .Votre fichier sera temporairement renommé "​{kvm,​lxc}.key.in_progress"​ avant de revenir à l'​état précédent # "​{kvm,​lxc}.key" ​  ​-->​ Redéploiement de votre clé publique ssh. Utile en cas de suppression accidentelle de votre clé publique ssh dans /​root/​.ssh.autorized_keys .Votre fichier sera temporairement renommé "​{kvm,​lxc}.key.in_progress"​ avant de revenir à l'​état précédent
 # #
 # Si votre fichier est automatiquement renommé: # Si votre fichier est automatiquement renommé:
-# "​{kvm,​lxc}.{start,​stop,delete,​snapshot,​revert,​key}.in_progress"​ --> Patientez jusqu'​à ce qu’ il soit renommé "​{kvm,​lxc}.started", "​{kvm,​lxc}.stopped",​ "​{kvm,​lxc}.failed"​ ou"​{kvm,​lxc}.deleted"​+# "​{kvm,​lxc}.{create,​delete,​start,​stop,​snapshot,​revert,status,​key}.in_progress"​ --> Patientez jusqu'​à ce qu’ il soit renommé "​{kvm,​lxc}.running", "​{kvm,​lxc}.stopped",​ "​{kvm,​lxc}.failed"​ ou"​{kvm,​lxc}.deleted"​
 # #
 # "​{kvm,​lxc}.failed" ​   --> Mauvaise nouvelle: # "​{kvm,​lxc}.failed" ​   --> Mauvaise nouvelle:
Ligne 127: Ligne 170:
 #     → Vous pouvez regarder si il y a des informations concernant la cause de l’échec dans le fichier {kvm,lxc}.* #     → Vous pouvez regarder si il y a des informations concernant la cause de l’échec dans le fichier {kvm,lxc}.*
 #     ​-->​ Si cela ne change rien, vous devez contacter un administrateur système (Bureau H101 ou H105 et/ou mail à technique.info at listes.univ-angers.fr) #     ​-->​ Si cela ne change rien, vous devez contacter un administrateur système (Bureau H101 ou H105 et/ou mail à technique.info at listes.univ-angers.fr)
 +#
 +# ATTENTION: Si votre fichier est nommé {kvm,​lxc}.running MAIS que votre vps est injoignable,​ COMMENCEZ par renommer votre fichier {kvm,​lxc}.running en {kvm,​lxc}.status
 # #
 ########################################################​ ########################################################​
Ligne 150: Ligne 195:
 # https://​{ec,​etud,​dev}-{kvm,​lxc}-login-ENT.leria{,​-etud,​-dev}.univ-angers.fr # https://​{ec,​etud,​dev}-{kvm,​lxc}-login-ENT.leria{,​-etud,​-dev}.univ-angers.fr
 # #
 +# Vous trouverez vos adresses de connexions exactes ci dessous:
 +ssh root@kvm-etud-fake-name
 +https://​kvm-etud-fake-name.leria-etud.univ-angers.fr
 </​code>​ </​code>​
 +
 +===== Limitations =====
 +==== Quota ====
 +
 +  * En utilisation d'​espace disque: 2GB soft limit et 3GB hard limit: en cas de dépassement de quota de 2 GB, vous avez 7 jours pour repasser en dessous du quota (vous serez prévenu par le système). Passez ce délai, ou passé le quota de 3GB, vous ne pourrez plus écrire de données.
 +  * En nombre d'​inode:​ 100000 soft limit et 200000 hard limit: en cas de dépassement de quota de 100000 inode, vous avez 7 jours pour repasser en dessous du quota (vous serez prévenu par le système). Passez ce délai, ou passé le quota de 200000 inodes, vous ne pourrez plus créer de fichiers.
 +
 +Pour savoir ou vous en êtes:
 +
 +  du -sh ~ # Vous permet d'​obtenir l'​espace disque que vous utilisez
 +  du -s --inodes ~ # Vous permet de savoir combien d'​inodes vous utilisez
 +
 +===== Bonnes pratiques =====
 +==== Pour ne pas avoir à attendre trop longtemps lors de la suppression/​création de VPS ====
 +
 +  * Lorsque vous créez votre VPS, le premier réflexe à avoir est de faire un snapshot:
 +
 +  mv kvm.running kvm.snapshot
 +
 +de cette manière, en cas de volonté de suppression du VPS, vous pouvez alors faire:
 +
 +  mv kvm.running kvm.revert
 +
 +plutôt que kvm.delete. Vous récupérerez alors bien plus vite un VPS comme si il était nouvellement créé. Toutefois, pensez à faire un:
 +
 +  apt-get update && apt-get dist-upgrade
 +
 +pour obtenir les éventuelles mises à jour.
 +
 +Après l'​action revert, le VPS sera éteinr, il faudra alors le redémarré:​
 +
 +  mv kvm.stopped kvm.start
 +
 +
 +===== Serveur web apache, php et potentiellement mariadb/​postgresql/​... (cloud pédagogique uniquement) =====
 +
 +Pour publier des pages web sans avoir à créer de conteneur, il vous suffit de créer un répertoire public_html à la racine de votre home et d'y placer vos pages web:
 +
 +<​code>​
 +loginEnt@starwars:/​home$ tree
 +.
 +└── loginEnt
 +    └── public_html
 +        ├── index.html
 +        └── script.php
 +</​code>​
 +
 +Vous pourrez alors accéder à vos pages web en allant à l'​adresse https://​leria-dev.univ-angers.fr/​~loginEnt/​index.html
 +
 +Si vous souhaitez des fonctionnalitées de debug, test, etc, vous devez utiliser des VPS.
 +Si vous avez besoin d'une base de donnée, vous pouvez:
 +  * utiliser sqlite en local
 +  * installer une base de donnée dans un VPS de type KVM
 +    * Attention de configurer correctement votre base (pour mariadb, lancez l'​exécutable mysql_secure_installation après l'​installation)
 +    * Pensez à exposer votre BDD à l'​extérieur (pour mariadb, modifiez la ligne bind-address dans le fichier /​etc/​mysql/​mariadb.conf.d/​50-server.cnf en mettant l'@IP de votre serveur, noubliez de pas de relancer le serveur mariadb ensuite )
 +
 +<note important>​Aucun accès en http n'est autorisé sur le réseau depuis l'​extérieur,​ il y a une réécriture automatique du http en https, cela peut parfois créer des problèmes avec des applications qui indique des liens css en http (par exemple wordpress). Il vous appartient de configurer vos applications pour qu'​elles n'​utilisent que du https</​note>​
  
 ===== Création de projet: proposition de méthode de travail ===== ===== Création de projet: proposition de méthode de travail =====
Ligne 161: Ligne 266:
   * https://​docs.ansible.com/​ansible/​latest/​user_guide/​playbooks_best_practices.html   * https://​docs.ansible.com/​ansible/​latest/​user_guide/​playbooks_best_practices.html
  
-En utilisant Ansible:+En utilisant Ansible ​**en respectant les bonnes pratiques**:
   * vous serez capable de déployer autant de fois que vous le souhaitez vos applications   * vous serez capable de déployer autant de fois que vous le souhaitez vos applications
-  * vous pourrez facilement ​versionné ​et sauvegarder les "​recettes"​ permettant de déployer vos applications+  * vous pourrez facilement ​versionner ​et sauvegarder les "​recettes"​ permettant de déployer vos applications
   * vous pourrez partager facilement vos "​recettes"​   * vous pourrez partager facilement vos "​recettes"​
-  * si vos projets ont vocationq ​à être hébergés de manière ​officiel ​au département informatique/​Leria,​ ceux-ci devraient pouvoir être déployés facilement dans notre infrastructure.+  * si vos projets ont vocation ​à être hébergés de manière ​officielle ​au département informatique/​Leria,​ ceux-ci devraient pouvoir être déployés facilement dans notre infrastructure.
  
-Egalement ​et en complément d'​Ansible,​ vous pourriez être intéréssé ​par l'​utilisation de docker via docker-compose:​+Également ​et en complément d'​Ansible,​ vous pourriez être intéressé ​par l'​utilisation de docker via docker-compose:​
   * https://​www.docker.com/​   * https://​www.docker.com/​
   * https://​training.play-with-docker.com/​   * https://​training.play-with-docker.com/​
Ligne 173: Ligne 278:
   * https://​labs.play-with-k8s.com/​   * https://​labs.play-with-k8s.com/​
  
 +===== Utilisation d'​ansible avec les VPS =====
  
-===== Public html =====+==== Arborescence ​====
  
 +Afin de respectez les bonnes pratiques d'​ansible,​ vous devez avoir une arborescence de cette forme [[https://​docs.ansible.com/​ansible/​latest/​user_guide/​playbooks_best_practices.html#​directory-layout[là]] dans un répertoire /​home/​loginEnt/​ansible. Dans un premier temps, vous pouvez faire abstraction des fichiers d'​inventaires "​production"​ et "​staging"​ et utiliser un fichier d'​inventaire unique "​hosts.yml"​ à la place.
  
 +==== Inventaire ====
  
 +Lorque vous allez utiliser ansible, il faudra spécifier le chemin de votre fichier d'​inventaire:​
 +
 +  logintEnt@starwars:​~/​ansible$ ansible -i hosts.yml -m ping all
 +
 +<​note>​A noter que le module ping de ansible ne fait pas un ping au sens réseau du terme (protocole icmp) mais vérifie si il est possible de joindre la cible via une connexion ssh</​note>​
 +
 +Il est tout à fait possible (voir souhaitable) de spécifier dans votre fichier d'​inventaire hosts.yml les variables permettant la connexion à vos VPS:
 +
 +  * voici un exemple sans notions de groupe:
 +
 +<​code>​
 +all:
 +  vars:
 +    ansible_user:​ root
 +  hosts:
 +    dev-kvm-login-ent:​
 +    dev-lxc-login-ent:​
 +</​code>​
 +
 +  * voici un exemple avec un groupe "​vps":​
 +
 +<​code>​
 +all:
 +  children:
 +    vps:
 +      vars:
 +        ansible_user:​ root
 +      hosts:
 +        dev-kvm-login-ent:​
 +        dev-lxc-login-ent:​
 +</​code>​
  
leria/cloud.1589903610.txt.gz · Dernière modification: 19/05/2020 17:53 par Chantrein Jean-Mathieu
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0