| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| documentation_technique:lxc:creation_conteneur_en_utilisant_lxd [01/23/2025 20:02:13] – thomas | documentation_technique:lxc:creation_conteneur_en_utilisant_lxd [02/20/2025 20:14:13] (Version actuelle) – typo thomas |
|---|
| ==== Creation conteneur en utilisant LXD ==== | ==== Creation conteneur en utilisant incus ==== |
| |
| ====== Création d'un conteneur ====== | ====== Création d'un conteneur ====== |
| ===== Création effective du conteneur ===== | ===== Création effective du conteneur ===== |
| |
| Sur l'//hyperviseur// lxd, lancer le script ''%%new-lxc-ct.sh%%'' situé dans /root. Aucun paramètre n'est nécessaire. Le script demande le hostname et l'IPv6 principale a utiliser directement sur la stdin. Ce script crée le conteneur, le démarre, change ses dépots apt, le met à jour, installe python (nécessaire pour qu'ansible fonctionne par la suite) et définie les limites suivantes : | Sur l'//hyperviseur// lxd, lancer le script ''%%new-incus-ct.sh%%'' situé dans /root. Aucun paramètre n'est nécessaire. Le script demande le hostname et l'IPv6 principale a utiliser directement sur la stdin. Ce script crée le conteneur, le démarre, change ses dépots apt, le met à jour, installe python (nécessaire pour qu'ansible fonctionne par la suite) et définie les limites suivantes : |
| |
| * CPU = 1 ( ''%%lxc config set ${hostname} limits.cpu 1%%'') | * CPU = 1 ( ''%%incus config set ${hostname} limits.cpu 1%%'') |
| * RAM = 256Mo (''%%lxc config set ${hostname} limits.memory 256MB%%'') | * RAM = 256Mo (''%%incus config set ${hostname} limits.memory 256MB%%'') |
| * Pas de Swap (''%%lxc config set ${hostname} limits.memory.swap true%%'') | * Pas de Swap (''%%incus config set ${hostname} limits.memory.swap true%%'') |
| * Taille du / = 5Go (''%%lxc config device set ${hostname} root size 5GB%%'') | * Taille du / = 5Go (''%%incus config device set ${hostname} root size 5GB%%'') |
| | * Gestion stricte de la RAM (''%%incus config device set ${hostname} limits.memory.enforce: hard%%'') |
| |
| Il est possible d'adapter ces limites après coup si nécessaire, en utilisant les commandes ''%%lxc config ...%%'' . | Il est possible d'adapter ces limites après coup si nécessaire, en utilisant les commandes ''%%incus config ...%%'' . |
| |
| Pour mémoire, la sortie du script quand il s'exécute correctement : | Pour mémoire, la sortie du script quand il s'exécute correctement : |
| | <code> |
| <HTML> | root@karadoc:/root# ./new-incus-ct.sh |
| <pre> | |
| root@karadoc:/root# ./new-lxc-ct.sh | |
| CT hostname ? | CT hostname ? |
| test-doc | test-doc |
| Device eth0 added to test-doc | Device eth0 added to test-doc |
| Fin de l'install, restart CT | Fin de l'install, restart CT |
| </pre> | </code> |
| </HTML> | |
| Une fois le conteneur crée, il doit apparaître dans le résultat de la commande ''%%lxc list%%'' comme "RUNNING". | Une fois le conteneur crée, il doit apparaître dans le résultat de la commande ''%%incus list%%'' comme "RUNNING". |
| |
| Pour obtenir un prompt sur le conteneur directement depuis l'hyperviseur, on peut utiliser la commande ''%%lxc exec ${HOSTNAME} bash%%'' | Pour obtenir un prompt sur le conteneur directement depuis l'hyperviseur, on peut utiliser la commande ''%%incus exec ${HOSTNAME} bash%%'' |
| |
| ====== Mise en place du réseau ====== | ====== Mise en place du réseau ====== |
| ====== Normalisation et installation des bases avec ansible ====== | ====== Normalisation et installation des bases avec ansible ====== |
| |
| Depuis l'hyperviseur, utiliser la commande ''%%lxc exec ${HOSTNAME} bash%%'' pour obtenir un prompt sur notre nouveau conteneur.<HTML></li></HTML> | Depuis l'hyperviseur, utiliser la commande ''%%incus exec ${HOSTNAME} bash%%'' pour obtenir un prompt sur notre nouveau conteneur.<HTML></li></HTML> |
| |
| Ajouter sa clef ssh, temporairement, au ''%%/root/.ssh/authorized_keys%%'' du conteneur nouvellement crée<HTML></li></HTML> | Ajouter sa clef ssh, temporairement, au ''%%/root/.ssh/authorized_keys%%'' du conteneur nouvellement crée<HTML></li></HTML> |
| cd admin/ansible | cd admin/ansible |
| </code> | </code> |
| | Editer le fichier ''%%ansible/hosts%%'' et ajouter le nouveau CT dans la section new, en suivant le modèle: ''%%2001:912:3064:XXX ansible_user=root ansible_port=22%%'' |
| |
| Editer le fichier ''%%ansible/hosts%%'' et ajouter le nouveau CT dans la section new, en suivant le modèle: ''%%2001:912:3064:XXX ansible_user=root ansible_port=22%%''<HTML></li></HTML> | Exécuter le playbook ansible //etckeeper.yml//: ''%%ansible-playbook -l new etckeeper.yml%%'' |
| |
| Exécuter le playbook ansible //etckeeper.yml//: ''%%ansible-playbook -l new etckeeper.yml%%''<HTML></li></HTML> | Éditer le fichier ''%%roles/base/vars/main.yml%%'' ajouter la nouvelle machine. Executer le playbook //base.yml// avec la commande ''%%ansible-playbook -l new base.yml%%'' |
| |
| Éditer le fichier ''%%roles/base/vars/main.yml%%'' ajouter la nouvelle machine. Executer le playbook //main.yml// avec la commande ''%%ansible-playbook -l new base.yml%%''<HTML></li></HTML> | Se connecter au conteneur en SSH avec son compte attitré. |
| |
| Se connecter au conteneur en SSH avec son compte attitré.<HTML></li></HTML> | Initialiser son mot de passe sudo avec ''%%sudo passwd-init%%''. |
| |
| Initialiser son mot de passe sudo avec ''%%sudo passwd-init%%''.<HTML></li></HTML> | Supprimer sa clef ssh du ''%%/root/.ssh/authorized_keys%%''. |
| |
| Supprimer sa clef ssh du ''%%/root/.ssh/authorized_keys%%''.<HTML></li></HTML> | Redémarrer ssh avec ''%%systemctl restart ssh%%''. |
| |
| Redémarrer ssh avec ''%%systemctl restart ssh%%''.<HTML></li></HTML> | A partir de cet instant, il faut se connecter en ssh sur le port **6900**. |
| |
| A partir de cet instant, il faut se connecter en ssh sur le port **6900**.<HTML></li></HTML> | Sur sa machine, éditer a nouveau le fichier ''%%ansible/hosts%%'', supprimer l'hote de la section new, le mettre dans la section conteneur avec tous les autres. |
| |
| Sur sa machine, éditer a nouveau le fichier ''%%ansible/hosts%%'', supprimer l'hote de la section new, le mettre dans la section conteneur avec tous les autres.<HTML></li></HTML> | ''%%git commit%%'' et ''%%git push%%'' pour posser sur le dépot git les modifications liées à l'ajout du nouveau conteneur. |
| |
| '%%git commit%%'' et ''%%git push%%'' pour posser sur le dépot git les modifications liées à l'ajout du nouveau conteneur.<HTML></li></HTML> | Ne pas oublier d'//etc-commiter// sur toutes les machines où il y a eu des changements de conf. |
| | |
| Ne pas oublier d'//etc-commiter// sur toutes les machines où il y a eu des changements de conf.<HTML></li></HTML><HTML></ul></HTML> | |
| |
| |
| mettre à jour https://wiki.hadoly.fr/documentation_technique:machines | mettre à jour https://wiki.hadoly.fr/documentation_technique:machines |
| | |
| | ====== Déploiement agent zabbix ====== |
| | |
| | Exécuter le playbook "zabbix_client.yml": ''%%ansible-playbook -l CHANGEME zabbix_client.yml%%'' #CHANGEME étant le nom du container défini dans le fichier hosts. |
| | |
| | On peut ignorer l'erreur "create zabbix mysql account" |
| | |
| | À ce stade, le client [[documentation_technique:supervision|zabbix]] est fonctionnel et la machine s'est normalement enregistrée auprès de https://infra.opendoor.Fr/zabbix |
| | |
| | Les éléments suivants sont surveillés: |
| | * espace disque |
| | * disponibilité de la machine |
| | * nombre de processus en cours de fonctionnement |
| | * charge cpu, mémoire et IO |
| | |
| | Une fois les services déployées sur la machine, il est possible de se connecter sur le serveur zabbix pour parfaire la supervision |
| | |
| | ====== Déploiement backup ====== |
| | |
| | Voir [[:documentation_technique:sauvegardes?s[]=borg#mise_en_œuvre|la page sauvegarde]] |
| | |
| | |
| | |