Paramétrage de base sur chaque nœud#
Je vais me connecter à mon nœud de contrôle principal control00
. Celui dédié comme « control plane » pour mon cluster Kubernetes.
Tout d’abord, nous devons confirmer que tous nos nœuds sont opérationnels :
#switch to root
sudo -su
#installez nmap
apt install nmap
#scan du réseau local pour voir si les sereurs sont up
nmap -sP 192.168.1.1-254
Cela a confirmé que tous mes nœuds sont opérationnels et connectés. Je vais utiliser ce nœud principal pour me connecter à tout ce qui se trouve dans ce réseau. Cependant, avant de pouvoir tirer parti de l’automatisation avec Ansible, il y a quelques tâches manuelles à effectuer.
Tout d’abord, préparez le fichier /etc/hosts sur le nœud de contrôle sur lequel vous vous trouvez actuellement :
# Editez le fichier /etc/hosts avec votre éditeur favoris, mon fichier ressemble à cela:
127.0.1.1 localhost
192.168.1.21 control00 control00.local
192.168.1.42 cube00 cube00.local
192.168.1.77 cube01 cube01.local
Simplifiez-vous la vie avec Ansible#
Je vais utiliser Ansible de manière très simple pour que tout le monde puisse comprendre ce qui se passe. Bien entendu, toutes les étapes suivantes peuvent être réalisées via un playbook, que vous exécuterez et laisserez le temps d’un café…
Installer Ansible#
apt install ansible
Ensuite, nous devons créer un fichier /etc/ansible/hosts
et ajouter nos hôtes. En substance, nous définissons ici les hôtes et les groupes d’hôtes qu’Ansible essaiera de gérer.
# Editez le fichier /etc/ansible/hosts
[control]
control00 ansible_connection=local
[workers]
cube00 ansible_connection=ssh
cube01 ansible_connection=ssh
[cube:children]
control
workers
Ci-dessus, vous pouvez voir que j’ai ajouté 3 groupes : control
, workers
et cube
. Le nom du groupe est celui qui se trouve entre [ ]
. Il a été divisé de sorte que si je souhaite exécuter certaines actions uniquement sur le serveur de contrôle, j’utilise le groupe « contrôle ». Le groupe « cube » a des enfants. Cela signifie essentiellement qu’il s’agit d’un groupe de groupes et que lorsque je l’utilise, cube
je cible chaque nœud des groupes répertoriés.
Variable : ansible_connection
nous indiquons à Ansible comment se connecter à cet hôte. La méthode principale est ssh, mais j’ai spécifié « local » pour control00
, car il s’agit du nœud à partir duquel nous exécutons Ansible. De cette façon, il n’essaiera pas de se connecter à lui-même via SSH.
Enfin, nous allons faire en sorte que l’utilisateur root
puisse se connecter à d’autres nœuds control00
sans mot de passe à l’aide d’une clé SSH. Cette étape est facultative, mais après cela, vous n’aurez plus besoin de saisir le mot de passe à chaque fois que vous exécuterez Ansible.
# Assurez-vous d'utiliser le compte root
cd
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# Ne rien indiquez lorsque le prompt apparait,appuyez simplement sur la touche "enter"
ssh-keygen -t rsa
# Copier la clé sur tous les noeuds:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@cube00
ssh-copy-id -i ~/.ssh/id_rsa.pub root@cube01
.
.
.
Après cela, nous sommes prêts pour quelques réglages de masse avec Ansible, mais cela sera dans la prochaine partie. J’essaie de les garder plus courts pour que vous ne soyez pas submergé par des murs de texte.
Votre toute première commande Ansible#
C’est la dernière chose avant de passer à l’article suivant. Nous allons vérifier si Ansible fonctionne correctement et peut se connecter à tous les nœuds :
# Lancez les commandes avec l'utilisateur root
# Nous allons exécuter la commande ping via ansible, en indiquant le groupe "cube" comme paramétré plus tôt
# -m signifie que nous allons utiliser un module, dans notre cas: ping
root@control00 ~ ❯ ansible cube -m ping
#Voici le résultat escompté :
root@control00 ~ ❯ ansible cube -m ping
control00 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
cube00 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
cube01 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
.
.
.