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.
tuned
Homepage - 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/sys
für diesysfs
Gruppe.name
wird weggelassen, wennreplaced
verwendet wird.value
- Normalerweise erforderlich - Der Wert für die Einstellung.value
wird weggelassen, wennstate
oderprevious
verwendet wird. Werte dürfen kein YAML bool Typ sein. Ein Beispiel, wo dies problematisch sein könnte, ist die Verwendung vonvalue: on
oder einem anderen YAMLbool
Typwert. Sie müssen diese Werte in Anführungszeichen setzen oder sie anders alsstr
Typ übergeben, z.B.value: "on"
.state
- Optional - Der Wertabsent
bedeutet, eine Einstellung mit dem Namenname
aus einer Gruppe zu entfernen -name
muss 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:
sysctl
Dateien haben die höchste Priorität -/etc/sysctl.conf
und/etc/sysctl.d/*
werden alles andere überschreiben- Einstellungen der
kernel_settings
Rolle haben die nächsthöhere Priorität - Manuell mit dem
sysctl
Befehl 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