Q20.
|
Quelle est l'instruction de configuration
initiale du gestionnaire LXD ?
Utiliser l'aide de la commande lxd.
|
|
C'est l'instruction lxd
init qui nous intéresse.
Voici une copie d'écran de son exécution.
lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (lvm, btrfs, ceph, cephobject, dir) [default=btrfs]:
Create a new BTRFS pool? (yes/no) [default=yes]:
Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]:
Size in GiB of the new loop device (1GiB minimum) [default=23GiB]:
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: enp0s1
Would you like the LXD server to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]:
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: |
Q21.
|
Quelle est l'instruction qui permet
d'afficher le profil par défaut des conteneur ?
Rechercher dans les options de la commande lxc.
|
|
Voici un exemple d'exécution.
lxc profile show default
config: {}
description: Default LXD profile
devices:
eth0:
name: eth0
nictype: macvlan
parent: enp0s1
type: nic
root:
path: /
pool: default
type: disk
name: default
used_by: [] |
Q22.
|
Quelle est l'instruction de lancement d'un
conteneur ?
Rechercher dans les options de la commande lxc.
Tester son exécution avec un conteneur de type debian/12 .
|
|
Voici un exemple d'exécution.
for i in {0..2}; do lxc launch images:debian/12 c$i; done
Creating c0
Starting c0
Creating c1
Starting c1
Creating c2
Starting c2
lxc ls
+------+---------+------+-------------------------------------------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+------+-------------------------------------------+-----------+-----------+
| c0 | RUNNING | | fda0:7a62:1b8:0:216:3eff:fe9a:c1d1 (eth0) | CONTAINER | 0 |
+------+---------+------+-------------------------------------------+-----------+-----------+
| c1 | RUNNING | | fda0:7a62:1b8:0:216:3eff:fe57:7019 (eth0) | CONTAINER | 0 |
+------+---------+------+-------------------------------------------+-----------+-----------+
| c2 | RUNNING | | fda0:7a62:1b8:0:216:3eff:fe6b:c9de (eth0) | CONTAINER | 0 |
+------+---------+------+-------------------------------------------+-----------+-----------+ |
Q23.
|
Comment automatiser l'adressage
IPv4 statique de chaque
conteneur ?
Comme la gestion de la configuration des interfaces est assurée
par systemd-networkd , il faut
s'intéresser à la syntaxe du fichier /etc/systemd/network/eth0.network de chaque
conteneur.
Une fois la syntaxe d'un fichier de configuration établie, il
faut l'intégrer dans un script Bash avec une boucle qui parcourt
toutes les instances de conteneurs.
|
|
Voici une proposition de code qui permet d'appliquer une
configuration statique et de redémarrer le gestionnaire de
configuration réseau de chacun des trois conteneurs.
#!/bin/bash
for i in {0..2}
do
echo ">>>>>>>>>>>>>>>>> c$i"
config=$(cat << EOF
[Match]
Name=eth0
[Network]
DHCP=false
Address=192.0.2.$((i + 10))/24
Address=fda0:7a62:1b8::$(printf "%x" $((i + 10)))/64
Gateway=192.0.2.1
DNS=172.16.0.2
EOF
)
lxc exec c$i -- bash -c "echo \"${config}\" | tee /etc/systemd/network/eth0.network"
lxc exec c$i -- systemctl restart systemd-networkd
done
exit 0
Si le code du script ci-dessus est placé dans un fichier appelé
c-static-addresses.sh , on peut
l'exécuter directement et relever les résultats.
bash c-static-addresses.sh
lxc ls
+------+---------+-------------------+-------------------------------------------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+---------+-------------------+-------------------------------------------+-----------+-----------+
| c0 | RUNNING | 192.0.2.10 (eth0) | fda0:7a62:1b8::a (eth0) | CONTAINER | 0 |
| | | | fda0:7a62:1ae:0:216:3eff:fe9a:c1d1 (eth0) | | |
+------+---------+-------------------+-------------------------------------------+-----------+-----------+
| c1 | RUNNING | 192.0.2.11 (eth0) | fda0:7a62:1b8::b (eth0) | CONTAINER | 0 |
| | | | fda0:7a62:1ae:0:216:3eff:fe57:7019 (eth0) | | |
+------+---------+-------------------+-------------------------------------------+-----------+-----------+
| c2 | RUNNING | 192.0.2.12 (eth0) | fda0:7a62:1b8::c (eth0) | CONTAINER | 0 |
| | | | fda0:7a62:1ae:0:216:3eff:fe6b:c9de (eth0) | | |
+------+---------+-------------------+-------------------------------------------+-----------+-----------+ |
Q24.
|
Comment vérifier la connectivité réseau
depuis les conteneurs ?
La question précédente montre qu'à ce stade de la configuration
les conteneurs ne disposent que d'adresses IPv6. C'est donc sur ce protocole que les tests
doivent porter.
|
|
Voici un exemple de test ICMP.
for i in {0..2}
do
echo ">>>>>>>>>>>>>>>>> c$i"
lxc exec c$i -- ping -c2 2620:fe::fe
done
>>>>>>>>>>>>>>>>> c0
PING 2620:fe::fe(2620:fe::fe) 56 data bytes
64 bytes from 2620:fe::fe: icmp_seq=1 ttl=58 time=44.8 ms
64 bytes from 2620:fe::fe: icmp_seq=2 ttl=58 time=42.9 ms
--- 2620:fe::fe ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 42.936/43.857/44.778/0.921 ms
>>>>>>>>>>>>>>>>> c1
PING 2620:fe::fe(2620:fe::fe) 56 data bytes
64 bytes from 2620:fe::fe: icmp_seq=1 ttl=58 time=43.4 ms
64 bytes from 2620:fe::fe: icmp_seq=2 ttl=58 time=42.8 ms
--- 2620:fe::fe ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 42.762/43.104/43.447/0.342 ms
>>>>>>>>>>>>>>>>> c2
PING 2620:fe::fe(2620:fe::fe) 56 data bytes
64 bytes from 2620:fe::fe: icmp_seq=1 ttl=58 time=43.6 ms
64 bytes from 2620:fe::fe: icmp_seq=2 ttl=58 time=42.7 ms
--- 2620:fe::fe ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 42.676/43.144/43.612/0.468 ms
On peut ensuite passer à la gestion de paquets après paramétrage
du resolver DNS.
for i in {0..2}
do
echo ">>>>>>>>>>>>>>>>> c$i"
lxc exec c$i -- apt update
lxc exec c$i -- apt -y full-upgrade
lxc exec c$i -- apt clean
done |