linux-system-roles.kernel_settings

Kernel-Einstellungen Rolle

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

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.

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 die sysfs Gruppe. name wird weggelassen, wenn replaced verwendet wird.
  • value - Normalerweise erforderlich - Der Wert für die Einstellung. value wird weggelassen, wenn state oder previous verwendet wird. Werte dürfen kein YAML bool Typ sein. Ein Beispiel, wo dies problematisch sein könnte, ist die Verwendung von value: on oder einem anderen YAML bool Typwert. Sie müssen diese Werte in Anführungszeichen setzen oder sie anders als str Typ übergeben, z.B. value: "on".
  • state - Optional - Der Wert absent bedeutet, eine Einstellung mit dem Namen name aus einer Gruppe zu entfernen - name muss bereitgestellt werden.
  • previous - Optional - Der einzige Wert ist replaced - 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)

Installieren
ansible-galaxy install linux-system-roles.kernel_settings
Lizenz
other
Downloads
5.8k