Chapitre 5. Préparation de l'environnement pour la gestion de l'IdM à l'aide des playbooks Ansible
En tant qu'administrateur système gérant la gestion des identités (IdM), lorsque vous travaillez avec Red Hat Ansible Engine, il est recommandé de procéder comme suit :
- Créez un sous-répertoire dédié aux playbooks Ansible dans votre répertoire personnel, par exemple ~/MyPlaybooks.
-
Copiez et adaptez les exemples de playbooks Ansible des répertoires et sous-répertoires
/usr/share/doc/ansible-freeipa/*
et/usr/share/doc/rhel-system-roles/*
dans votre répertoire ~/MyPlaybooks. - Incluez votre fichier d'inventaire dans votre répertoire ~/MyPlaybooks.
Grâce à cette pratique, vous pouvez retrouver tous vos playbooks en un seul endroit.
Vous pouvez exécuter vos séquences ansible-freeipa
sans invoquer les privilèges root
sur les nœuds gérés. Les exceptions incluent les playbooks qui utilisent les rôles ipaserver
, ipareplica
, ipaclient
, ipasmartcard_server
, ipasmartcard_client
et ipabackup
ansible-freeipa
. Ces rôles nécessitent un accès privilégié aux répertoires et au gestionnaire de paquets logiciels dnf
.
Les playbooks de la documentation de Red Hat Enterprise Linux IdM supposent la configuration de sécurité suivante :
-
L'IdM
admin
est votre utilisateur Ansible distant sur les nœuds gérés. -
Vous stockez le mot de passe IdM
admin
crypté dans un coffre-fort Ansible. - Vous avez placé le mot de passe qui protège le coffre-fort Ansible dans un fichier de mots de passe.
- Vous bloquez l'accès au fichier de mots de passe de l'espace de stockage à tout le monde, sauf à votre utilisateur local ansible.
- Vous devez régulièrement supprimer et recréer le fichier des mots de passe de la chambre forte.
Envisager également d'autres configurations de sécurité.
5.1. Préparation d'un nœud de contrôle et de nœuds gérés pour la gestion de l'IdM à l'aide de playbooks Ansible
Cette section décrit comment créer le répertoire ~/MyPlaybooks et le configurer de manière à ce que vous puissiez l'utiliser pour stocker et exécuter des playbooks Ansible.
Conditions préalables
- Vous avez installé un serveur IdM sur vos nœuds gérés, server.idm.example.com et replica.idm.example.com.
- Vous avez configuré le DNS et le réseau pour pouvoir vous connecter aux nœuds gérés, server.idm.example.com et replica.idm.example.comdirectement à partir du nœud de contrôle.
-
Vous connaissez le mot de passe de l'IdM
admin
.
Procédure
Créez un répertoire pour votre configuration Ansible et vos playbooks dans votre répertoire personnel :
$ mkdir ~/MyPlaybooks/
Allez dans le répertoire ~/MyPlaybooks/:
$ cd ~/MyPlaybooks
Créez le fichier ~/MyPlaybooks/ansible.cfg avec le contenu suivant :
[defaults] inventory = /home/your_username/MyPlaybooks/inventory remote_user = admin
Créez le fichier ~/MyPlaybooks/inventory avec le contenu suivant :
[eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
Cette configuration définit deux groupes d'hôtes, eu et us, pour les hôtes de ces sites. En outre, cette configuration définit le groupe d'hôtes ipaserver, qui contient tous les hôtes des groupes eu et us.
[Facultatif] Créez une clé publique et une clé privée SSH. Pour simplifier l'accès dans votre environnement de test, ne définissez pas de mot de passe pour la clé privée :
$ ssh-keygen
Copiez la clé publique SSH dans le compte IdM
admin
sur chaque nœud géré :$ ssh-copy-id admin@server.idm.example.com $ ssh-copy-id admin@replica.idm.example.com
Ces commandes nécessitent la saisie du mot de passe IdM
admin
.Créez un fichier password_file qui contient le mot de passe du coffre-fort :
redhat
Modifier les autorisations de modification du fichier :
$ chmod 0600 password_file
Créer un coffre-fort Ansible secret.yml pour stocker le mot de passe IdM
admin
:Configurez password_file pour qu'il stocke le mot de passe de l'espace de stockage :
$ ansible-vault create --vault-password-file=password_file secret.yml
Lorsque vous y êtes invité, saisissez le contenu du fichier secret.yml:
ipaadmin_password: Secret123
Pour utiliser la version cryptée de ipaadmin_password
dans un playbook, vous devez utiliser la directive vars_file
. Par exemple, un playbook simple pour supprimer un utilisateur IdM peut ressembler à ce qui suit :
--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete user robot ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: robot state: absent
Lors de l'exécution d'un playbook, demandez à Ansible d'utiliser le mot de passe de l'espace de stockage pour décrypter ipaadmin_password
en ajoutant l'option --vault-password-file=password_file
à Ansible. Par exemple :
ansible-playbook -i inventory --vault-password-file=password_file del-user.yml
Pour des raisons de sécurité, supprimez le fichier des mots de passe de la chambre forte à la fin de chaque session et répétez les étapes 7 à 9 au début de chaque nouvelle session.