2.2. Préparation d'un nœud géré
Les nœuds gérés sont les systèmes répertoriés dans l'inventaire et qui seront configurés par le nœud de contrôle conformément au cahier de jeu. Il n'est pas nécessaire d'installer Ansible sur les hôtes gérés.
Conditions préalables
- Vous avez préparé le nœud de contrôle. Pour plus d'informations, voir Préparation d'un nœud de contrôle sur RHEL 9.
Vous disposez d'un accès SSH à partir du nœud de contrôle.
ImportantL'accès SSH direct en tant qu'utilisateur
root
présente un risque pour la sécurité. Pour réduire ce risque, vous créerez un utilisateur local sur ce nœud et configurerez une politiquesudo
lors de la préparation d'un nœud géré. Ansible sur le nœud de contrôle peut alors utiliser le compte d'utilisateur local pour se connecter au nœud géré et exécuter des playbooks en tant qu'utilisateurs différents, tels queroot
.
Procédure
Créez un utilisateur nommé
ansible
:useradd ansible
[root@managed-node-01]# useradd ansible
Copy to Clipboard Copied! Le nœud de contrôle utilise ensuite cet utilisateur pour établir une connexion SSH avec cet hôte.
Définir un mot de passe pour l'utilisateur
ansible
:passwd ansible
[root@managed-node-01]# passwd ansible Changing password for user ansible. New password: <password> Retype new password: <password> passwd: all authentication tokens updated successfully.
Copy to Clipboard Copied! Vous devez saisir ce mot de passe lorsque Ansible utilise
sudo
pour effectuer des tâches en tant qu'utilisateurroot
.Installez la clé publique SSH de l'utilisateur
ansible
sur le nœud géré :Connectez-vous au nœud de contrôle en tant qu'utilisateur
ansible
et copiez la clé publique SSH sur le nœud géré :ssh-copy-id managed-node-01.example.com
[ansible@control-node]$ ssh-copy-id managed-node-01.example.com /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'managed-node-01.example.com (192.0.2.100)' can't be established. ECDSA key fingerprint is SHA256:9bZ33GJNODK3zbNhybokN/6Mq7hu3vpBXDrCxe7NAvo.
Copy to Clipboard Copied! Lorsque vous y êtes invité, connectez-vous en entrant
yes
:Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Copy to Clipboard Copied! Lorsque vous y êtes invité, saisissez le mot de passe :
ansible@managed-node-01.example.com's password: <password> Number of key(s) added: 1 Now try logging into the machine, with: "ssh '<managed-node-01.example.com>'" and check to make sure that only the key(s) you wanted were added.
ansible@managed-node-01.example.com's password: <password> Number of key(s) added: 1 Now try logging into the machine, with: "ssh '<managed-node-01.example.com>'" and check to make sure that only the key(s) you wanted were added.
Copy to Clipboard Copied! Vérifiez la connexion SSH en exécutant à distance une commande sur le nœud de contrôle :
ssh <managed-node-01.example.com> whoami
[ansible@control-node]$ ssh <managed-node-01.example.com> whoami ansible
Copy to Clipboard Copied!
Créer une configuration
sudo
pour l'utilisateuransible
:Créez et modifiez le fichier
/etc/sudoers.d/ansible
à l'aide de la commandevisudo
:visudo /etc/sudoers.d/ansible
[root@managed-node-01]# visudo /etc/sudoers.d/ansible
Copy to Clipboard Copied! L'avantage d'utiliser
visudo
plutôt qu'un éditeur normal est que cet utilitaire fournit des contrôles de base et vérifie les erreurs d'analyse avant d'installer le fichier.Configurez une politique
sudoers
dans le fichier/etc/sudoers.d/ansible
qui réponde à vos besoins, par exemple :Pour autoriser l'utilisateur
ansible
à exécuter toutes les commandes en tant qu'utilisateur et groupe sur cet hôte après avoir saisi le mot de passe de l'utilisateuransible
, utilisez l'option suivante :ansible ALL=(ALL) ALL
ansible ALL=(ALL) ALL
Copy to Clipboard Copied! Pour autoriser l'utilisateur
ansible
à exécuter toutes les commandes en tant qu'utilisateur et groupe sur cet hôte sans saisir le mot de passe de l'utilisateuransible
, utilisez la commande suivanteansible ALL=(ALL) NOPASSWD: ALL
ansible ALL=(ALL) NOPASSWD: ALL
Copy to Clipboard Copied!
Vous pouvez également configurer une politique plus fine qui correspond à vos exigences en matière de sécurité. Pour plus d'informations sur les politiques de
sudoers
, voir la page de manuelsudoers(5)
.
Vérification
Vérifiez que vous pouvez exécuter des commandes à partir du nœud de contrôle sur tous les nœuds gérés :
ansible all -m ping
[ansible@control-node]$ ansible all -m ping BECOME password: <password> managed-node-01.example.com | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" } ...
Copy to Clipboard Copied! Le groupe all codé en dur contient dynamiquement tous les hôtes répertoriés dans le fichier d'inventaire.
Vérifiez que l'escalade des privilèges fonctionne correctement en exécutant l'utilitaire
whoami
sur un hôte géré à l'aide du module Ansiblecommand
:ansible managed-node-01.example.com -m command -a whoami
[ansible@control-node]$ ansible managed-node-01.example.com -m command -a whoami BECOME password: <password> managed-node-01.example.com | CHANGED | rc=0 >> root
Copy to Clipboard Copied! Si la commande renvoie la valeur root, vous avez configuré correctement
sudo
sur les nœuds gérés.