Table des matières

Creation conteneur en utilisant LXD

Création d'un conteneur

Étapes préliminaires :

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 :

Il est possible d'adapter ces limites après coup si nécessaire, en utilisant les commandes lxc config ... .

Pour mémoire, la sortie du script quand il s'exécute correctement :

<HTML> <pre> root@karadoc:/root# ./new-lxc-ct.sh CT hostname ? test-doc IPv6 addr ? (ex: 2001:0912:3064:127::1) 2001:912:3064:134::1 Creating test-doc Starting test-doc Get:1 http://ftp.rezopole.net/ubuntu xenial InRelease [247 kB] Get:2 http://ftp.rezopole.net/ubuntu xenial-updates InRelease [102 kB] […] Fetched 16.3 MB in 6s (2508 kB/s) Reading package lists… Done Reading package lists… Done Building dependency tree Reading state information… Done The following additional packages will be installed:

libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python-minimal python2.7 python2.7-minimal

Suggested packages:

python-doc python-tk python2.7-doc binutils binfmt-support

The following NEW packages will be installed:

libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal

0 upgraded, 7 newly installed, 0 to remove and 18 not upgraded. Need to get 3915 kB of archives. After this operation, 16.6 MB of additional disk space will be used. Get:1 http://ftp.rezopole.net/ubuntu xenial-updates/main amd64 libpython2.7-minimal amd64 2.7.12-1ubuntu0~16.04.1 [339 kB] […] Fetched 3915 kB in 0s (11.8 MB/s) Selecting previously unselected package libpython2.7-minimal:amd64. […] Device eth0 added to test-doc Fin de l'install, restart CT </pre> </HTML> Une fois le conteneur crée, il doit apparaître dans le résultat de la commande lxc list comme “RUNNING”.

Pour obtenir un prompt sur le conteneur directement depuis l'hyperviseur, on peut utiliser la commande lxc exec ${HOSTNAME} bash

Mise en place du réseau

Si jamais le conteneur a besoin d'être accédé en IPv4 depuis l'extérieur, sur perceval:

Normalisation et installation des bases avec ansible

<HTML><ul></HTML> <HTML><li></HTML>Depuis l'hyperviseur, utiliser la commande lxc exec ${HOSTNAME} bash pour obtenir un prompt sur notre nouveau conteneur.<HTML></li></HTML> <HTML><li></HTML>Ajouter sa clef ssh, temporairement, au /root/.ssh/authorized_keys du conteneur nouvellement crée<HTML></li></HTML> <HTML><li></HTML>Vérifier que l'on parvient à se connecter en SSH depuis sa machine.<HTML></li></HTML> <HTML><li></HTML>Sur sa propre machine, installer ansible et cloner le dépot git qui contient les rôles ansible: <HTML> <pre> sudo apt install git ansible mkdir ~/Hadoly cd ~/Hadoly git clone https://git.hadoly.fr/CS_CT/ansible_hadoly.git cd admin/ansible </pre> </HTML><HTML></li></HTML> <HTML><li></HTML>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> <HTML><li></HTML>Exécuter le playbook ansible etckeeper.yml: ansible-playbook -l new etckeeper.yml<HTML></li></HTML> <HTML><li></HTML>É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> <HTML><li></HTML>Se connecter au conteneur en SSH avec son compte attitré.<HTML></li></HTML> <HTML><li></HTML>Initialiser son mot de passe sudo avec sudo passwd-init.<HTML></li></HTML> <HTML><li></HTML>Supprimer sa clef ssh du /root/.ssh/authorized_keys.<HTML></li></HTML> <HTML><li></HTML>Redémarrer ssh avec systemctl restart ssh.<HTML></li></HTML> <HTML><li></HTML>A partir de cet instant, il faut se connecter en ssh sur le port 6900.<HTML></li></HTML> <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.<HTML></li></HTML> <HTML><li></HTML>git commit et git push pour posser sur le dépot git les modifications liées à l'ajout du nouveau conteneur.<HTML></li></HTML> <HTML><li></HTML>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>