23.2. Application des paramètres sélectionnés du noyau à l'aide du rôle kernel_settings
Suivez ces étapes pour préparer et appliquer un playbook Ansible afin de configurer à distance les paramètres du noyau avec un effet persistant sur plusieurs systèmes d'exploitation gérés.
Conditions préalables
-
Vous avez les autorisations
root
. -
En vertu de votre abonnement RHEL, vous avez installé les paquets
ansible-core
etrhel-system-roles
sur la machine de contrôle. - Un inventaire des hôtes gérés est présent sur la machine de contrôle et Ansible peut s'y connecter.
RHEL 8.0 - 8.5 donne accès à un dépôt Ansible séparé qui contient Ansible Engine 2.9 pour l'automatisation basée sur Ansible. Ansible Engine contient des utilitaires de ligne de commande tels que ansible
, ansible-playbook
; des connecteurs tels que docker
et podman
; et tout l'univers des plugins et des modules. Pour plus d'informations sur la manière d'obtenir et d'installer Ansible Engine, reportez-vous à la section Comment télécharger et installer Red Hat Ansible Engine ?
RHEL 8.6 et 9.0 a introduit Ansible Core (fourni en tant que ansible-core
RPM), qui contient les utilitaires de ligne de commande Ansible, les commandes et un petit ensemble de plugins Ansible intégrés. Le dépôt AppStream fournit ansible-core
, qui a une portée de support limitée. Pour en savoir plus, consultez le document Scope of support for the ansible-core package included in the RHEL 9 AppStream.
Procédure
Si vous le souhaitez, vous pouvez consulter le fichier
inventory
à des fins d'illustration :# cat /home/jdoe/<ansible_project_name>/inventory [testingservers] pdoe@192.168.122.98 fdoe@192.168.122.226 [db-servers] db1.example.com db2.example.com [webservers] web1.example.com web2.example.com 192.0.2.42
Ce fichier définit le groupe
[testingservers]
et d'autres groupes. Il vous permet d'exécuter Ansible plus efficacement sur un ensemble spécifique de systèmes.Créer un fichier de configuration pour définir les valeurs par défaut et l'escalade des privilèges pour les opérations Ansible.
Créez un nouveau fichier YAML et ouvrez-le dans un éditeur de texte, par exemple :
# vi /home/jdoe/<ansible_project_name>/ansible.cfg
Insérez le contenu suivant dans le fichier :
[defaults] inventory = ./inventory [privilege_escalation] become = true become_method = sudo become_user = root become_ask_pass = true
La section
[defaults]
indique un chemin d'accès au fichier d'inventaire des hôtes gérés. La section[privilege_escalation]
définit que les privilèges de l'utilisateur doivent passer àroot
sur les hôtes gérés spécifiés. Ceci est nécessaire pour une configuration réussie des paramètres du noyau. Lorsque le playbook Ansible est exécuté, vous serez invité à saisir le mot de passe de l'utilisateur. L'utilisateur passe automatiquement àroot
par le biais desudo
après s'être connecté à un hôte géré.
Créer un playbook Ansible qui utilise le rôle
kernel_settings
.Créez un nouveau fichier YAML et ouvrez-le dans un éditeur de texte, par exemple :
# vi /home/jdoe/<ansible_project_name>/kernel-roles.yml
Ce fichier représente un playbook et contient généralement une liste ordonnée de tâches, également appelées plays, qui sont exécutées contre des hôtes gérés spécifiques sélectionnés dans votre fichier
inventory
.Insérez le contenu suivant dans le fichier :
--- - hosts: testingservers name: "Configure kernel settings" roles: - rhel-system-roles.kernel_settings vars: kernel_settings_sysctl: - name: fs.file-max value: 400000 - name: kernel.threads-max value: 65536 kernel_settings_sysfs: - name: /sys/class/net/lo/mtu value: 65000 kernel_settings_transparent_hugepages: madvise
La clé
name
est facultative. Elle associe une chaîne arbitraire à la pièce en tant qu'étiquette et identifie l'objet de la pièce. La cléhosts
de la pièce spécifie les hôtes contre lesquels la pièce est exécutée. La ou les valeurs de cette clé peuvent être fournies sous forme de noms individuels d'hôtes gérés ou de groupes d'hôtes tels que définis dans le fichierinventory
.La section
vars
représente une liste de variables contenant les noms des paramètres du noyau sélectionnés et les valeurs auxquelles ils doivent être définis.La clé
roles
spécifie le rôle du système qui va configurer les paramètres et les valeurs mentionnés dans la sectionvars
.NoteVous pouvez modifier les paramètres du noyau et leurs valeurs dans le playbook en fonction de vos besoins.
En option, vérifiez que la syntaxe de votre pièce est correcte.
# ansible-playbook --syntax-check kernel-roles.yml playbook: kernel-roles.yml
Cet exemple montre la vérification réussie d'un playbook.
Exécutez votre cahier des charges.
# ansible-playbook kernel-roles.yml ... BECOME password: PLAY [Configure kernel settings] ********************************************************************************** PLAY RECAP ******************************************************************************************************** fdoe@192.168.122.226 : ok=10 changed=4 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0 pdoe@192.168.122.98 : ok=10 changed=4 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0
Avant qu'Ansible n'exécute votre playbook, vous allez être invité à saisir votre mot de passe afin qu'un utilisateur sur les hôtes gérés puisse être basculé sur
root
, ce qui est nécessaire pour configurer les paramètres du noyau.La section récapitulative montre que la lecture s'est terminée avec succès (
failed=0
) pour tous les hôtes gérés, et que 4 paramètres du noyau ont été appliqués (changed=4
).- Redémarrez les hôtes gérés et vérifiez les paramètres du noyau concernés pour vous assurer que les changements ont été appliqués et qu'ils persistent après les redémarrages.
Ressources supplémentaires
- Préparation d'un nœud de contrôle et de nœuds gérés à l'utilisation des rôles système RHEL
-
README.html
etREADME.md
dans le répertoire/usr/share/doc/rhel-system-roles/kernel_settings/
- Constituez votre inventaire
- Configuration d'Ansible
- Travailler avec des Playbooks
- Utilisation de variables
- Rôles