fr:rapports:2021:23-05
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
fr:rapports:2021:23-05 [2021/10/03 13:29] – tharyrok | fr:rapports:2021:23-05 [2021/12/28 16:43] (Version actuelle) – supprimée tharyrok | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | # 2021/05/23 (Neutriton) : Installation des VMs | ||
- | * [Réunion précédente](https:// | ||
- | * [Pad de la réunion](https:// | ||
- | * [Liste des sujets Neutriton](https:// | ||
- | |||
- | Présences : | ||
- | |||
- | - Celo | ||
- | - Tharyrok | ||
- | - HgO | ||
- | - ~~tierce~~ Il est là mais pas là | ||
- | - zefredz | ||
- | - squeak | ||
- | - niko | ||
- | |||
- | Caldarium : https:// | ||
- | |||
- | ## Météo | ||
- | |||
- | *Moment informel durant lequel on exprime **en peu de mots** comment on se sent et si on a une attente forte pour la réunion.* | ||
- | |||
- | *Ce n'est pas un moment de discussion mais d' | ||
- | |||
- | ### Attente(s) forte(s) | ||
- | |||
- | *Si l'une ou l' | ||
- | |||
- | ## Ordre du jour | ||
- | |||
- | ### Installation des VMs | ||
- | |||
- | Prendre le temps d’installer des VMs via Ansible. | ||
- | |||
- | La journée sera divisée en deux partie : | ||
- | - Le matin un petit rappel théorique + préparation des VMs dans Proxmox | ||
- | - L' | ||
- | |||
- | ### Pourquoi Ansible ? | ||
- | |||
- | |||
- | Dans Neutrinet, plusieurs niveaux d' | ||
- | |||
- | Comment garder une documentation de ce qu'on a et comment on l'a ? Ansible est une première réponse parce qu'il nous pousse à décrire l' | ||
- | |||
- | Lors d'un Neutriton précédent, | ||
- | |||
- | Le choix s'est porté sur Ansible pour sa facilité d' | ||
- | |||
- | On désire aussi avoir un labo pour pouvoir faire des tests, puis le mettre dans l' | ||
- | |||
- | En résumé, cet outil va rendre visible l' | ||
- | |||
- | ### C'est quoi Ansible ? | ||
- | |||
- | C'est un outil créé en python qui va lire des fichiers yaml. | ||
- | Actuellement géré par RedHat. | ||
- | Utilise SSH pour se connecter aux serveurs | ||
- | |||
- | Le schéma classique est de lancer un playbook, un ensemble de recettes écrites avant, et Ansible va se connecter en SSH sur le serveur et en fonction de ce qui est écrit dans les playbook, va identifier une différence et lancer les instructions pour que cela correspondent au playbook. Si le playbook est bien fait, lors qu'on le lance une seconde fois, il ne va rien faire. | ||
- | |||
- | Quand on va vouloir installer un paquet sur Debian, Ansible va détecter qu'il est déjà installé. S'il est installé, Ansible ne fera rien (tâche ok), sinon il l' | ||
- | |||
- | Ansible utilise SSH et a souvent besoin des droits root, entre autres pour installer un paquet. | ||
- | |||
- | Plusieurs possibilités : | ||
- | - autoriser root de se connecter en ssh | ||
- | - utiliser l' | ||
- | |||
- | Si on ne lance jamais Ansible, les changements ne seront pas appliqués. Il faut donc lancer manuellement le playbook (depuis sa machine) après l' | ||
- | |||
- | Dans Ansible, il y a aussi une notion d' | ||
- | |||
- | Plusieurs niveaux de variables : | ||
- | |||
- | - au niveau du playbook | ||
- | - au niveau des rôles (des variables par défauts qui peuvent être définies et qui peuvent être communes, indépendantes de l' | ||
- | |||
- | Fichier d' | ||
- | |||
- | Sur chaque ligne, on a un host auquel on peut ajouter des variables. On peut aussi mettre ces variables dans un fichier séparé. | ||
- | |||
- | Catégories et groupes : la même chose pour Ansible. Elles sont à la fin du fichier d' | ||
- | |||
- | L' | ||
- | |||
- | ### Playbooks de Neutrinet | ||
- | |||
- | Un préalable le nommage : le nom des machines, le lieu (le data center), pour la nouvelle infra, on ajoute le cluster, ici ce sera patata. | ||
- | |||
- | Chez Neutrinet, on a choisi de faire un playbook commun à tout qui s' | ||
- | |||
- | Lecture ligne par ligne : ligne 5 ```hosts: all``` -> tous les hôtes repris dans l' | ||
- | |||
- | Ligne : 8 pre_tasks: indique que c'est une tâche qui va être jouée avant les rôles (d' | ||
- | |||
- | Ligne 13 : -> liste des rôles. | ||
- | |||
- | On voit quels rôles sont listé dans le dossier roles. Là, les rôles sont définis. | ||
- | |||
- | Pour un rôle, Ansible commence par le fichier Yaml mais va ensutie trouver le fichier tasks pour les tâches, etc... Quand on inclut un rôle, fichier main.yaml, on utilise l' | ||
- | |||
- | Ansible lit toujours du haut vers le bas. | ||
- | |||
- | Fichier repos.yml on a : | ||
- | |||
- | un nom, c'est pas obligatoire, | ||
- | |||
- | Template est une action propre à Ansible, documentée ici : https:// | ||
- | |||
- | Les variables : sont entre double brackets {{}}. Une des premières choses faites par Ansible, c'est récupérer les facts. Ceux-ci sont des variables sur notre machines (infos du système, OS, version de l'OS, IP, disques durs, CPU, etc.) Une varialbe {{ansible_distribution_relaese}} renvera buster pour une Debian Buster. Si Ansible ne peut remplir la variable, il va renvoyer une erreur. | ||
- | |||
- | Ansible : permet de poser des contraintes avec when -> idée, si les repos ont changé, on actualise les repos, sinon pas. | ||
- | |||
- | Dans 50_unattended_upgrades, | ||
- | |||
- | Dans all, on a des variables par défaut dans défaults. Elles seront utilisées pour nos tests en local par exemple, mais une fois en situation elle seront remplacées par des variables plus précises. | ||
- | |||
- | On peut mettre le nom complet des actions dans Ansible pour plus de précision. En général le nom du module suffit mais parfois il y a des ambiguités (Ansible le signale en principe). | ||
- | |||
- | locale_gen : permet de générer les locales sur un serveur. Ce qui fait que si on se connecte avec une machine qui a une locale, on ne se retrouve pas avec un serveur qui ne la trouve pas. ansible.builtin.package par ex. | ||
- | |||
- | Dans loop : on met les trois langues et ensuite on explique comment on définit la variable qui va nous servir. {{locale}} ne contiendra qu'un seul élément. | ||
- | |||
- | Comment Neutrinet a résolu le problème de lancer sudo sans mot de passe root. On a fait le choix d' | ||
- | |||
- | Pour s' | ||
- | |||
- | Fichier user : -> la liste des utilisateurs et leurs clés SSH. -> une boucle loop sur les utilisateurs. | ||
- | |||
- | notify : si on appelle le nom du handler, il n' | ||
- | |||
- | Les handler, le mieux est de les exécuter le plus tôt possible. | ||
- | |||
- | |||
- | ### Matinée | ||
- | |||
- | - Rappel des différents concepts liés à Ansible (structure des dossiers, playbook, inventaire, ttasks, etc.) | ||
- | - Création des VMs dans Proxmox | ||
- | |||
- | ### Midi | ||
- | |||
- | - On mange ensemble \o/ | ||
- | - Moments informels pour papoter, se reposer, se balader, etc. | ||
- | |||
- | ### Après-midi | ||
- | |||
- | On va se baser sur l' | ||
- | |||
- | On va faire du ceph S3 : https:// | ||
- | |||
- | Le repo git de Neutrinet : https:// | ||
- | |||
- | - Création des playbooks Ansible pour les VMs suivantes : | ||
- | - Reverse proxy (pour configurer les haproxy) | ||
- | - PostgreSQL HA (patroni + etcd + postgres) | ||
- | - Website static (pour y placer les anciens wiki) | ||
- | - Hedgedoc, Nextcloud ou n' | ||
- | - Installation des services | ||
- | |||
- | #### Auto install de debian | ||
- | |||
- | On va utiliser un fichier de preseed de debian. On ne rentre pas dans les détails de comment ça fonctionne aujourd' | ||
- | |||
- | On découpe en petits bouts : | ||
- | - langue | ||
- | - timezone | ||
- | - compte root | ||
- | - config de apt | ||
- | - install de paquets spécifiques (openssh, python3) pour ansible | ||
- | - tasksel none -> install minimaliste de debian | ||
- | - partitionnement | ||
- | - post-install -> autorise connexion ssh | ||
- | |||
- | La doc de debian explique bien comment ajouter le fichier de preseed pour une image debian : https:// | ||
- | |||
- | Note : Chez Centos, ils appellent ça un kickstarter : | ||
- | |||
- | On a donc installé haproxy-01 et haproxy-02 :) \o/ | ||
- | |||
- | #### Création playbook haproxy | ||
- | |||
- | - acme-bot | ||
- | - template acme-bot | ||
- | - apt install haproxy | ||
- | - template haproxy | ||
- | |||
- | ![](https:// | ||
- | |||
- | #### Création de la VM web-static | ||
- | |||
- | - Créer une VM depuis l'iso preseed-debian-10-neutrinet | ||
- | - | ||
- | |||
- | #### Comment ajouter un utilisateur | ||
- | |||
- | - Ajouter la clé SSH dans le repo git | ||
- | - Ajouter l' | ||
- | - Ajouter l' | ||
- | - Se connecter via root + mdp dans le password manager, le tout en Linux PAM | ||
- | - Dans Datacenter > Permissions > Users, ajouter l' | ||
- | - Se connecter en ssh sur 80.67.181.17 (gateway) avec l' | ||
- | - Configurer FoxyProxy | ||
- | - socks5 vers localhost: | ||
- | - modèle d' | ||
- | - Se connecter au pfsense: https:// | ||
- | - Se connecter au Proxmox: https:// | ||
- | - Choisir Proxmox VE | ||
- | |||
- | |||
- | ## Prochaine réunion | ||
- | |||
- | :warning: Prochain Neutriton : JJ/MM à HH:MM | ||
- | |||
- | :warning: Lieu : Mumble et/ou Caldarium ? | ||
- | |||
- | ## Météo de fin | ||
- | |||
- | *Moment informel durant lequel on exprime **en peu de mots** comment, à titre personnel, la réunion a été vécue que ce soit positif ou négatif.* | ||
- | *Si une ou plusieurs **tension est née** durant la réunion, il est peut-être nécessaire d' |
fr/rapports/2021/23-05.1633260599.txt.gz · Dernière modification : 2021/10/03 13:29 de tharyrok