linux-system-roles.kernel_settings
Kernel-Einstellungen Rolle
Diese Rolle wird verwendet, um Kernel-Einstellungen zu ändern. Zum Beispiel, auf Linux, Einstellungen in /proc/sys (unter Verwendung von sysctl), /sys/fs und einige andere Einstellungen. Sie verwendet tuned als Standardanbieter für Enterprise Linux und Derivate (RHEL und CentOS) und Fedora.
tunedHomepage - https://github.com/redhat-performance/tuned
Anforderungen
Siehe unten.
Sammlung Anforderungen
Wenn Sie rpm-ostree Systeme mit dieser Rolle verwalten möchten, müssen Sie zusätzliche Sammlungen installieren. Bitte führen Sie die folgende Befehlszeile aus, um die Sammlung zu installieren.
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
Rollenvariablen
Die Werte für einige der verschiedenen kernel_settings_GROUP Parameter sind eine Liste von dict Objekten. Jedes dict hat die folgenden Schlüssel:
name- Normalerweise erforderlich - Der Name der Einstellung oder der Name einer Datei unter/sysfür diesysfsGruppe.namewird weggelassen, wennreplacedverwendet wird.value- Normalerweise erforderlich - Der Wert für die Einstellung.valuewird weggelassen, wennstateoderpreviousverwendet wird. Werte dürfen kein YAML bool Typ sein. Ein Beispiel, wo dies problematisch sein könnte, ist die Verwendung vonvalue: onoder einem anderen YAMLboolTypwert. Sie müssen diese Werte in Anführungszeichen setzen oder sie anders alsstrTyp übergeben, z.B.value: "on".state- Optional - Der Wertabsentbedeutet, eine Einstellung mit dem Namennameaus einer Gruppe zu entfernen -namemuss bereitgestellt werden.previous- Optional - Der einzige Wert istreplaced- damit wird angegeben, dass die vorherigen Werte in einer Gruppe durch die angegebenen Werte ersetzt werden sollen.
kernel_settings_sysctl
Eine Liste von Einstellungen, die mit sysctl angewendet werden sollen. Die Einstellungen werden im oben beschriebenen Format angegeben. Beachten Sie, dass die Einstellungen additiv sind - standardmäßig wird jede Einstellung zu den vorhandenen Einstellungen hinzugefügt oder ersetzt die Einstellung mit demselben Namen, wenn sie bereits existiert. Wenn Sie eine bestimmte Einstellung entfernen möchten, verwenden Sie state: absent, anstatt einen value anzugeben. Wenn Sie alle bestehenden sysctl Einstellungen entfernen und sie durch die angegebenen Einstellungen ersetzen möchten, geben Sie previous: replaced als einen der Werte in der Liste an. Wenn Sie alle sysctl Einstellungen entfernen möchten, verwenden Sie den dict Wert {"state": "empty"}, anstelle einer Liste, als den einzigen Wert für den Parameter. Siehe unten für Beispiele.
kernel_settings_sysfs
Eine Liste von Einstellungen, die auf /sys angewendet werden sollen. Die Einstellungen werden im oben beschriebenen Format angegeben. Beachten Sie, dass die Einstellungen additiv sind - standardmäßig wird jede Einstellung zu den vorhandenen Einstellungen hinzugefügt oder ersetzt die Einstellung mit demselben Namen, wenn sie bereits existiert. Wenn Sie eine bestimmte Einstellung entfernen möchten, verwenden Sie state: absent, anstatt einen value anzugeben. Wenn Sie alle bestehenden sysfs Einstellungen entfernen und sie durch die angegebenen Einstellungen ersetzen möchten, geben Sie previous: replaced als einen der Werte in der Liste an. Wenn Sie alle sysfs Einstellungen entfernen möchten, verwenden Sie den dict Wert {"state": "empty"}, anstelle einer Liste, als den einzigen Wert für den Parameter. Siehe unten für Beispiele.
kernel_settings_systemd_cpu_affinity
Um den Wert festzulegen, geben Sie eine Zeichenfolge im angegebenen Format an, wie unter
https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html#CPUAffinity=. Wenn Sie die Einstellung entfernen möchten, verwenden Sie den dict Wert {"state": "absent"}, anstelle einer Zeichenfolge, als den Wert für den Parameter.
kernel_settings_transparent_hugepages
Um den Wert festzulegen, geben Sie einen der folgenden Zeichenfolge Werte an: always madvise never. Dies ist der Wert für die transparente Hugepages des Speichersystems. Wenn Sie die Einstellung entfernen möchten, verwenden Sie den dict Wert {"state": "absent"}, anstelle einer Zeichenfolge, als den Wert für den Parameter.
kernel_settings_transparent_hugepages_defrag
Um den Wert festzulegen, geben Sie einen der folgenden Zeichenfolge Werte an: always defer defer+madvise madvise never. Dies ist der Wert für die Fragmentierung von transparenten Hugepages im Speichersystem. Die tatsächlich unterstützten Werte können je nach Ihrem Betriebssystem unterschiedlich sein. Wenn Sie die Einstellung entfernen möchten, verwenden Sie den dict Wert {"state": "absent"}, anstelle einer Zeichenfolge, als den Wert für den Parameter.
kernel_settings_purge
Standard false - Wenn true, wird die bestehende Konfiguration vollständig gelöscht und durch Ihre angegebenen kernel_settings_GROUP Einstellungen ersetzt.
kernel_settings_reboot_ok
Standard false - Wenn true, dann wird die Rolle, wenn sie erkennt, dass etwas geändert wurde, das einen Neustart erfordert, den verwalteten Host neu starten. Wenn false, liegt es an Ihnen zu bestimmen, wann der verwaltete Host neu gestartet werden soll. Die Rolle gibt die Variable kernel_settings_reboot_required (siehe unten) mit dem Wert true zurück, um anzuzeigen, dass eine Änderung stattgefunden hat, die einen Neustart erfordert.
kernel_settings_transactional_update_reboot_ok
Diese Variable wird verwendet, um Neustarts zu behandeln, die durch transaktionale Updates erforderlich sind. Wenn ein transaktionales Update einen Neustart erfordert, wird die Rolle mit dem Neustart fortfahren, wenn kernel_settings_transactional_update_reboot_ok auf true gesetzt ist. Wenn auf false gesetzt, wird die Rolle den Benutzer benachrichtigen, dass ein Neustart erforderlich ist, was eine benutzerdefinierte Handhabung der Neustartanforderung ermöglicht. Wenn diese Variable nicht gesetzt ist, wird die Rolle fehlschlagen, um sicherzustellen, dass die Neustartanforderung nicht übersehen wird.
Von der Rolle exportierte Variablen
Die Rolle wird die folgenden Variablen exportieren:
kernel_settings_reboot_required - Standard false - wenn true, bedeutet dies, dass eine Änderung stattgefunden hat, die einen Neustart des verwalteten Hosts erfordert, damit sie wirksam wird. Wenn Sie möchten, dass die Rolle den verwalteten Host neu startet, setzen Sie kernel_settings_reboot_ok: true, andernfalls müssen Sie den Neustart der Maschine selbst verwalten.
Beispiele für die Verwendung von Einstellungen
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
HINWEIS, dass die Listen-Werteinstellungen additiv sind. Das heißt, sie werden zusätzlich zu allen aktuellen Einstellungen angewendet. Zum Beispiel, wenn Sie bereits hatten
kernel_settings_sysctl:
- name: kernel.threads-max
value: 29968
- name: vm.max_map_count
value: 65530
dann hätten Sie nach der Anwendung des Obigen
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
Dies ermöglicht mehreren höheren Rollen oder Playbooks, diese Rolle zu verwenden, um die spezifischen Kernel-Einstellungen für diese Komponente bereitzustellen. Zum Beispiel, wenn Sie einen Webserver und einen Datenbankserver auf demselben Gerät installieren und beide Kernelparameter setzen müssen, ermöglicht die Rolle kernel_settings das Setzen beider.
Wenn Sie mehrere Einstellungen mit demselben Namen in einem Abschnitt angeben, wird die letzte verwendet.
Wenn Sie alle Einstellungen in einem Abschnitt durch Ihre bereitgestellten Werte ersetzen möchten, verwenden Sie previous: replaced als ein einzelnes, vorzugsweise erstes Element in der Liste der Einstellungen. Dies zeigt an, dass die vorherigen Einstellungen im System durch die angegebenen Einstellungen ersetzen werden sollen. Zum Beispiel:
kernel_settings_sysctl:
- previous: replaced
- name: kernel.threads-max
value: 30000
- name: vm.max_map_count
value: 50000
Dies wird bewirken, dass alle bestehenden Einstellungen für kernel_settings_sysctl entfernt und die angegebenen Einstellungen hinzugefügt werden.
Wenn Sie eine einzelne Einstellung entfernen möchten, geben Sie state: absent in der einzelnen Einstellung an, anstatt einen value anzugeben:
kernel_settings_sysctl:
- name: kernel.threads-max
value: 30000
- name: vm.max_map_count
state: absent
Dies wird die Einstellung vm.max_map_count von den
kernel_settings_sysctl Einstellungen entfernen. Wenn Sie alle Einstellungen aus einer Gruppe entfernen möchten, geben Sie state: empty als dict anstelle einer list an:
kernel_settings_sysctl:
state: empty
Dies wird bewirken, dass alle kernel_settings_sysctl
Einstellungen entfernt werden.
Verwenden Sie {"state":"absent"} um einen skalarwertigen Parameter zu entfernen. Zum Beispiel, um alle von kernel_settings_systemd_cpu_affinity,
kernel_settings_transparent_hugepages, und
kernel_settings_transparent_hugepages_defrag Einstellungen zu entfernen, verwenden Sie dies:
kernel_settings_systemd_cpu_affinity:
state: absent
kernel_settings_transparent_hugepages:
state: absent
kernel_settings_transparent_hugepages_defrag:
state: absent
Beispiel Playbook
- name: Verwaltung von Kernel-Einstellungen
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
Warnungen
Die kernel_settings Rolle wird andere sysctl Einstellungen anwenden, wenn die tuned Implementation verwendet wird, die standardmäßig aktiv ist. Dies kann passieren, wenn Sie manuell Dateien in /etc/sysctl.d/ bearbeiten oder wenn die sysctl.d Dateien von einem Systempaket installiert werden. Zum Beispiel, auf Fedora, das Installieren des libreswan Pakets stellt die Datei /etc/sysctl.d/50-libreswan.conf bereit. Die Verwendung der kernel_settings Rolle wird dazu führen, dass diese Datei neu geladen und erneut angewendet wird. Wenn dieses Verhalten nicht gewünscht ist, müssen Sie die tuned Konfiguration auf den verwalteten Hosts in /etc/tuned/tuned-main.conf bearbeiten und reapply_sysctl=0 setzen.
Die Einstellungen, die Sie mit der kernel_settings Rolle anwenden, können mit anderen Einstellungen in Konflikt stehen. Zum Beispiel, wenn Sie manuell den sysctl Befehl ausführen oder /etc/sysctl.d/ Dateien manuell bearbeiten, oder wenn die sysctl.d Dateien von einem Systempaket installiert werden, können sie dieselben Werte setzen, die Sie mit der kernel_settings Rolle festlegen. Für sysctl Einstellungen gilt folgende Reihenfolge:
sysctlDateien haben die höchste Priorität -/etc/sysctl.confund/etc/sysctl.d/*werden alles andere überschreiben- Einstellungen der
kernel_settingsRolle haben die nächsthöhere Priorität - Manuell mit dem
sysctlBefehl gesetzte Einstellungen haben die niedrigste Priorität
Für alle anderen Einstellungen wie sysfs haben die Einstellungen aus der kernel_settings Rolle die höchste Priorität.
rpm-ostree
Siehe README-ostree.md
Lizenz
Einige Teile, die sich auf tuned beziehen, sind GPLv2+. Diese sind in den Kopfzeilen der Dateien vermerkt. Alles andere ist MIT, sofern nicht anders angegeben. Siehe die Datei LICENSE für weitere Informationen.
Autoreninformation
Rich Megginson (richm auf github, rmeggins in meiner Firma)
Kernel settings role, implemented with tuned
ansible-galaxy install linux-system-roles.kernel_settings