linux-system-roles.kernel_settings

Rôle de Paramètres du Noyau

ansible-lint.yml ansible-test.yml codeql.yml markdownlint.yml python-unit-test.yml shellcheck.yml tft.yml tft_citest_bad.yml woke.yml

Ce rôle est utilisé pour modifier les paramètres du noyau. Par exemple, sur Linux, les paramètres dans /proc/sys (en utilisant sysctl), /sys/fs, et certains autres paramètres. Il utilise tuned comme fournisseur par défaut sur les systèmes d'Enterprise Linux et ses dérivés (RHEL et CentOS) ainsi que Fedora.

Exigences

Voir ci-dessous

Exigences de collection

Si vous souhaitez gérer les systèmes rpm-ostree avec ce rôle, vous devrez installer des collections supplémentaires. Veuillez exécuter la ligne de commande suivante pour installer la collection.

ansible-galaxy collection install -vv -r meta/collection-requirements.yml

Variables de Rôle

Les valeurs de certains des paramètres kernel_settings_GROUP sont une liste d'objets dict. Chaque dict a les clés suivantes :

  • name - Généralement requis - Le nom du paramètre, ou le nom d'un fichier sous /sys pour le groupe sysfs. name est omis lors de l'utilisation de replaced.
  • value - Généralement requis - La valeur pour le paramètre. value est omis lors de l'utilisation de state ou previous. Les valeurs ne doivent pas être de type booléen YAML. Une situation où cela pourrait être un problème est l'utilisation de value: on ou d'autres valeurs de type booléen YAML. Vous devez mettre ces valeurs entre guillemets, ou sinon les passer en tant que valeur de type str, par exemple value: "on".
  • state - Facultatif - la valeur absent signifie supprimer un paramètre nommé name d'un groupe - name doit être fourni.
  • previous - Facultatif - la seule valeur est replaced - cela sert à indiquer que les valeurs précédentes dans un groupe doivent être remplacées par les valeurs données.

kernel_settings_sysctl

Une liste de paramètres à appliquer à l'aide de sysctl. Les paramètres sont donnés dans le format décrit ci-dessus. Notez que les paramètres sont additifs - par défaut, chaque paramètre est ajouté aux paramètres existants, ou remplace le paramètre du même nom s'il existe déjà. Si vous souhaitez supprimer un paramètre spécifique, utilisez state: absent au lieu de donner une value. Si vous souhaitez supprimer tous les paramètres sysctl existants et les remplacer par les paramètres donnés, spécifiez previous: replaced comme l'une des valeurs de la liste. Si vous souhaitez supprimer tous les paramètres sysctl, utilisez la valeur dict {"state": "empty"}, au lieu d'une list, comme seule valeur pour le paramètre. Voir ci-dessous pour des exemples.

kernel_settings_sysfs

Une liste de paramètres à appliquer à /sys. Les paramètres sont donnés dans le format décrit ci-dessus. Notez que les paramètres sont additifs - par défaut, chaque paramètre est ajouté aux paramètres existants, ou remplace le paramètre du même nom s'il existe déjà. Si vous souhaitez supprimer un paramètre spécifique, utilisez state: absent au lieu de donner une value. Si vous souhaitez supprimer tous les paramètres sysfs existants et les remplacer par les paramètres donnés, spécifiez previous: replaced comme l'une des valeurs de la liste. Si vous souhaitez supprimer tous les paramètres sysfs, utilisez la valeur dict {"state": "empty"}, au lieu d'une list, comme seule valeur pour le paramètre. Voir ci-dessous pour des exemples.

kernel_settings_systemd_cpu_affinity

Pour définir la valeur, spécifiez une string dans le format spécifié par https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html#CPUAffinity=. Si vous souhaitez supprimer le paramètre, utilisez la valeur dict {"state": "absent"}, au lieu d'une string, comme valeur pour le paramètre.

kernel_settings_transparent_hugepages

Pour définir la valeur, spécifiez l'une des valeurs string suivantes : always, madvise, never. C'est la valeur pour les pages énormes transparentes du sous-système mémoire. Si vous souhaitez supprimer le paramètre, utilisez la valeur dict {"state": "absent"}, au lieu d'une string, comme valeur pour le paramètre.

kernel_settings_transparent_hugepages_defrag

Pour définir la valeur, spécifiez l'une des valeurs string suivantes : always, defer, defer+madvise, madvise, never. C'est la valeur pour la gestion de la fragmentation des pages énormes transparentes du sous-système mémoire. Les valeurs réelles prises en charge peuvent être différentes selon votre système d'exploitation. Si vous souhaitez supprimer le paramètre, utilisez la valeur dict {"state": "absent"}, au lieu d'une string, comme valeur pour le paramètre.

kernel_settings_purge

valeur par défaut false - Si true, alors la configuration existante sera complètement effacée et remplacée par vos paramètres kernel_settings_GROUP donnés.

kernel_settings_reboot_ok

valeur par défaut false - Si true, alors si le rôle détecte que quelque chose a changé et nécessite un redémarrage pour prendre effet, le rôle redémarrera l’hôte géré. Si false, il vous appartient de déterminer quand redémarrer l’hôte géré. Le rôle renverra la variable kernel_settings_reboot_required (voir ci-dessous) avec la valeur true pour indiquer qu'un changement a eu lieu nécessitant un redémarrage pour prendre effet.

kernel_settings_transactional_update_reboot_ok

Cette variable est utilisée pour gérer les redémarrages requis par les mises à jour transactionnelles. Si une mise à jour transactionnelle nécessite un redémarrage, le rôle procédera au redémarrage si kernel_settings_transactional_update_reboot_ok est défini sur true. S'il est défini sur false, le rôle notifiera l'utilisateur qu'un redémarrage est requis, permettant une gestion personnalisée de cette exigence. Si cette variable n'est pas définie, le rôle échouera à garantir que l'exigence de redémarrage ne soit pas négligée.

Variables exportées par le rôle

Le rôle exportera les variables suivantes :

kernel_settings_reboot_required - valeur par défaut false - si true, cela signifie qu'un changement a eu lieu qui nécessitera le redémarrage de l’hôte géré pour prendre effet. Si vous souhaitez que le rôle redémarre l’hôte géré, définissez kernel_settings_reboot_ok: true, sinon, vous devrez gérer le redémarrage de la machine.

Exemples d'utilisation des paramètres

kernel_settings_sysctl:
  - name: fs.epoll.max_user_watches
    value: 785592
  - name: fs.file-max
    value: 379724
kernel_settings_sysfs:
  - name: /sys/kernel/debug/x86/pti_enabled
    value: 0
  - name: /sys/kernel/debug/x86/retp_enabled
    value: 0
  - name: /sys/kernel/debug/x86/ibrs_enabled
    value: 0
kernel_settings_systemd_cpu_affinity: "1,3,5,7"
kernel_settings_transparent_hugepages: madvise
kernel_settings_transparent_hugepages_defrag: defer

REMARQUE que les paramètres de type list sont additifs. C'est-à-dire qu'ils sont appliqués en plus de tout paramètre actuel. Par exemple, si vous aviez déjà

kernel_settings_sysctl:
  - name: kernel.threads-max
    value: 29968
  - name: vm.max_map_count
    value: 65530

alors après application de ce qui précède, vous auriez

kernel_settings_sysctl:
  - name: kernel.threads-max
    value: 29968
  - name: vm.max_map_count
    value: 65530
  - name: fs.epoll.max_user_watches
    value: 785592
  - name: fs.file-max
    value: 379724

Cela permet à plusieurs rôles ou playbooks de niveau supérieur d'utiliser ce rôle pour fournir les paramètres du noyau spécifiques à ce composant. Par exemple, si vous installez un serveur web et un serveur de base de données sur la même machine, et qu'ils nécessitent tous les deux des réglages des paramètres du noyau, le rôle kernel_settings vous permet de les définir tous les deux.

Si vous spécifiez plusieurs paramètres avec le même nom dans une section, le dernier sera utilisé.

Si vous souhaitez remplacer tous les paramètres dans une section par vos valeurs fournies, utilisez previous: replaced comme un seul élément de préférence en premier dans la liste des paramètres. Cela indique que les paramètres previous dans le système doivent être remplacés par les paramètres donnés. Par exemple :

kernel_settings_sysctl:
  - previous: replaced
  - name: kernel.threads-max
    value: 30000
  - name: vm.max_map_count
    value: 50000

Cela aura pour effet de supprimer tous les paramètres existants pour kernel_settings_sysctl, et d'ajouter les paramètres spécifiés. Si vous souhaitez supprimer un seul paramètre, spécifiez state: absent dans le paramètre individuel, au lieu d'une value :

kernel_settings_sysctl:
  - name: kernel.threads-max
    value: 30000
  - name: vm.max_map_count
    state: absent

Cela supprimera le paramètre vm.max_map_count des paramètres kernel_settings_sysctl. Si vous souhaitez supprimer tous les paramètres d'un groupe, spécifiez state: empty en tant que dict au lieu d'une list :

kernel_settings_sysctl:
  state: empty

Cela aura pour effet de supprimer tous les paramètres kernel_settings_sysctl.

Utilisez {"state":"absent"} pour supprimer un paramètre de valeur scalaire. Par exemple, pour supprimer tous les paramètres kernel_settings_systemd_cpu_affinity, kernel_settings_transparent_hugepages, et kernel_settings_transparent_hugepages_defrag, utilisez ceci :

kernel_settings_systemd_cpu_affinity:
  state: absent
kernel_settings_transparent_hugepages:
  state: absent
kernel_settings_transparent_hugepages_defrag:
  state: absent

Exemple de Playbook

- name: Gérer les paramètres du noyau
  hosts: all
  vars:
    kernel_settings_sysctl:
      - name: fs.epoll.max_user_watches
        value: 785592
      - name: fs.file-max
        value: 379724
      - name: kernel.threads-max
        state: absent
    kernel_settings_sysfs:
      - name: /sys/kernel/debug/x86/pti_enabled
        value: 0
      - name: /sys/kernel/debug/x86/retp_enabled
        value: 0
      - name: /sys/kernel/debug/x86/ibrs_enabled
        value: 0
    kernel_settings_systemd_cpu_affinity: "1,3,5,7"
    kernel_settings_transparent_hugepages: madvise
    kernel_settings_transparent_hugepages_defrag: defer
  roles:
    - linux-system-roles.kernel_settings

Avertissements

Le rôle kernel_settings appliquera d'autres paramètres sysctl lors de l'utilisation de l'implémentation tuned, qui est le défaut. Cela peut se produire lorsque vous modifiez manuellement les fichiers sous /etc/sysctl.d/, ou si ces fichiers sysctl.d sont installés par un paquet système. Par exemple, sur Fedora, l'installation du paquet libreswan fournit /etc/sysctl.d/50-libreswan.conf. L'utilisation du rôle kernel_settings entraînera le rechargement et la réapplication de ce fichier. Si ce comportement n'est pas souhaité, vous devrez modifier la configuration tuned sur les hôtes gérés dans /etc/tuned/tuned-main.conf et définir reapply_sysctl=0.

Les paramètres que vous appliquez avec le rôle kernel_settings peuvent entrer en conflit avec d'autres paramètres. Par exemple, si vous exécutez manuellement la commande sysctl, ou modifiez manuellement les fichiers sous /etc/sysctl.d/, ou si les fichiers sysctl.d sont installés par un paquet système, ils peuvent définir les mêmes valeurs que celles que vous définissez avec le rôle kernel_settings. Pour les paramètres sysctl, la précedence est la suivante :

  • Les fichiers sysctl ont la plus haute précedence - /etc/sysctl.conf et /etc/sysctl.d/* écraseront tout
  • Les paramètres du rôle kernel_settings ont la précedence suivante
  • Les paramètres définis manuellement à l'aide de la commande sysctl ont la plus basse précedence

Pour tous les autres paramètres tels que sysfs, les paramètres du rôle kernel_settings ont la plus haute précedence.

rpm-ostree

Voir README-ostree.md

Licence

Certaines parties liées à tuned sont GPLv2+. Cela est noté dans les en-têtes des fichiers. Tout le reste est MIT, sauf mention contraire. Voir le fichier LICENSE pour plus d'informations.

Informations sur l'auteur

Rich Megginson (richm sur github, rmeggins à ma société)

Installer
ansible-galaxy install linux-system-roles.kernel_settings
Licence
other
Téléchargements
5.8k
Propriétaire