==== Creation conteneur en utilisant LXD ==== ====== Création d'un conteneur ====== ===== Étapes préliminaires : ===== * Déterminer le hostname du futur conteneur * Déterminer son adresse IPv6 principale en utilisant le [[documentation_technique:plan_adressage]]. Vérifier que l'adresse choisie n'est pas utilisée (au minimum en essayant de la ping6) * Editer la configuration DNS : [[documentation_technique:dns]] ===== 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 : * CPU = 1 ( ''%%lxc config set ${hostname} limits.cpu 1%%'') * RAM = 256Mo (''%%lxc config set ${hostname} limits.memory 256MB%%'') * Pas de Swap (''%%lxc config set ${hostname} limits.memory.swap true%%'') * Taille du / = 5Go (''%%lxc config device set ${hostname} root size 5GB%%'') 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 :
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
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 ====== * Sur l'hyperviseur, éditer le fichier ''%%/etc/bird/bird6.conf%%'', et ajouter dans le "protocol static" une route pour le conteneur nouvellement crée. Ceci permet d'ajouter une route statique vers le /64 du conteneur. Cette même route est ensuite propagée automatiquement vers le routeur Perceval via bgp. * Vérifier la conf de bird6 avec la commande ''%%birdc6 conf check%%'' * Si la conf est ok, lancer la reconfiguration de bird6 avec la commande ''%%birdc6 conf%%'' * Si tous s'est bien passé, le conteneur est joignable depuis Internet (en IPv6) ! Si jamais le conteneur a besoin d'être accédé en IPv4 depuis l'extérieur, sur perceval: * éditer le fichier ''%%/etc/tayga.conf%%'' pour y ajouter une ligne //map// faisant correspondre une IPv4 disponible avec l'ipv6 principale du conteneur. Puis redémarrer taygua ''%%systemctl restart tayga%%'' pour appliquer le changement. * éditer le fichier ''%%/etc/bird/bird.conf%%'' pour y ajouter une route en /32 vers l'interface nat64. Puis vérifier que la conf est syntaxiquement correcte avec ''%%birdc configure check%%''; si c'est le cas, appliquer la conf avec ''%%birdc configure %%'' ====== Normalisation et installation des bases avec ansible ======