linux-system-roles.kernel_settings

Rola Ustawień Jądra

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

Ta rola służy do modyfikowania ustawień jądra. Na przykład, w systemie Linux, ustawienia w /proc/sys (używając sysctl), /sys/fs i inne ustawienia. Używa tuned jako domyślnego dostawcy w systemach Enterprise Linux oraz ich pochodnych (RHEL i CentOS) oraz w Fedory.

Wymagania

Patrz poniżej

Wymagania dotyczące kolekcji

Jeśli chcesz zarządzać systemami rpm-ostree za pomocą tej roli, musisz zainstalować dodatkowe kolekcje. Uruchom poniższe polecenie, aby zainstalować kolekcję.

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

Zmienne Roli

Wartości niektórych parametrów kernel_settings_GROUP to lista obiektów dict. Każdy dict ma następujące klucze:

  • name - Zazwyczaj wymagane - Nazwa ustawienia lub nazwa pliku w /sys dla grupy sysfs. name jest pomijane, gdy używa się replaced.
  • value - Zazwyczaj wymagane - Wartość ustawienia. value jest pomijane, gdy używa się state lub previous. Wartości nie mogą być typem bool w YAML. Jednym z przypadku, gdy może to być problemem, jest użycie value: on lub innej wartości typu bool w YAML. Musisz ująć te wartości w cudzysłów lub inaczej przekazać je jako wartość typu str, np. value: "on".
  • state - Opcjonalne - wartość absent oznacza usunięcie ustawienia o nazwie name z grupy - name musi być podane.
  • previous - Opcjonalne - jedyna wartość to replaced - używa się do określenia, że poprzednie wartości w grupie powinny zostać zastąpione podanymi wartościami.

kernel_settings_sysctl

Lista ustawień, które mają być zastosowane za pomocą sysctl. Ustawienia są podawane w formacie opisanym powyżej. Zauważ, że ustawienia są dodatkowe - domyślnie każde ustawienie jest dodawane do istniejących lub zastępuje ustawienie o tej samej nazwie, jeśli już istnieje. Jeśli chcesz usunąć konkretne ustawienie, użyj state: absent zamiast podawania value. Jeśli chcesz usunąć wszystkie istniejące ustawienia sysctl i zastąpić je podanymi ustawieniami, określ previous: replaced jako jedną z wartości w liście. Jeśli chcesz usunąć wszystkie ustawienia sysctl, użyj wartości dict {"state": "empty"}, zamiast list, jako jedynej wartości parametru. Zobacz poniżej przykłady.

kernel_settings_sysfs

Lista ustawień do zastosowania w /sys. Ustawienia są podawane w formacie opisanym powyżej. Zauważ, że ustawienia są dodatkowe - domyślnie każde ustawienie jest dodawane do istniejących ustawień lub zastępuje ustawienie o tej samej nazwie, jeśli już istnieje. Jeśli chcesz usunąć konkretne ustawienie, użyj state: absent zamiast podawania value. Jeśli chcesz usunąć wszystkie istniejące ustawienia sysfs i zastąpić je podanymi ustawieniami, określ previous: replaced jako jedną z wartości w liście. Jeśli chcesz usunąć wszystkie ustawienia sysfs, użyj wartości dict {"state": "empty"}, zamiast list, jako jedynej wartości parametrów. Zobacz poniżej przykłady.

kernel_settings_systemd_cpu_affinity

Aby ustawić wartość, podaj string w formacie określonym przez https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html#CPUAffinity=. Aby usunąć ustawienie, użyj wartości dict {"state": "absent"}, zamiast string, jako wartości parametru.

kernel_settings_transparent_hugepages

Aby ustawić wartość, podaj jedną z następujących wartości string: always, madvise, never. To jest wartość przezroczystych dużych stron pamięci. Aby usunąć ustawienie, użyj wartości dict {"state": "absent"}, zamiast string, jako wartości parametru.

kernel_settings_transparent_hugepages_defrag

Aby ustawić wartość, podaj jedną z następujących wartości string: always, defer, defer+madvise, madvise, never. To jest wartość zarządzania fragmentacją przezroczystych dużych stron pamięci. Rzeczywiste wspierane wartości mogą się różnić w zależności od twojego systemu operacyjnego. Aby usunąć ustawienie, użyj wartości dict {"state": "absent"}, zamiast string, jako wartości parametru.

kernel_settings_purge

domyślnie false - Jeśli true, to istniejąca konfiguracja zostanie całkowicie usunięta i zastąpiona twoimi podanymi ustawieniami kernel_settings_GROUP.

kernel_settings_reboot_ok

domyślnie false - Jeśli true, to jeśli rola wykryje, że coś zostało zmienione, co wymaga ponownego uruchomienia, rola zrestartuje zarządzany host. Jeśli false, to do ciebie należy określenie, kiedy zrestartować zarządzany host. Rola zwróci zmienną kernel_settings_reboot_required (patrz poniżej) z wartością true, aby wskazać, że zaszła jakaś zmiana, która wymaga ponownego uruchomienia.

kernel_settings_transactional_update_reboot_ok

Ta zmienna służy do obsługi ponownych uruchomień wymaganych przez aktualizacje transakcyjne. Jeśli aktualizacja transakcyjna wymaga ponownego uruchomienia, rola przeprowadzi ponowne uruchomienie, jeśli kernel_settings_transactional_update_reboot_ok jest ustawiona na true. Jeśli ustawiona na false, rola powiadomi użytkownika, że ponowne uruchomienie jest wymagane, co pozwoli na dostosowane zarządzanie wymaganiem ponownego uruchomienia. Jeśli ta zmienna nie jest ustawiona, rola zakończy działanie, aby upewnić się, że wymaganie ponownego uruchomienia nie zostanie przeoczone.

Zmienne eksportowane przez rolę

Rola wyeksportuje następujące zmienne:

kernel_settings_reboot_required - domyślnie false - jeśli true, oznacza to, że zaszła zmiana, która wymaga ponownego uruchomienia zarządzanego hosta w celu jego wdrożenia. Jeśli chcesz, aby rola zrestartowała zarządzany host, ustaw kernel_settings_reboot_ok: true, w przeciwnym razie będziesz musiał zająć się ponownym uruchomieniem maszyny.

Przykłady użycia ustawień

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

UWAGA, że ustawienia o wartości listdodatkowe. To znaczy, że są stosowane oprócz wszystkich bieżących ustawień. Na przykład, jeśli już miałeś

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

to po zastosowaniu powyższego, miałbyś

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

To pozwala wielu wyższym rolom lub skryptom używać tej roli do dostosowywania ustawień jądra specyficznych dla danego komponentu. Na przykład, jeśli instalujesz serwer WWW i serwer bazy danych na tej samej maszynie, a oba wymagają ustawienia parametrów jądra, rola kernel_settings umożliwia ustawienie ich obu.

Jeśli podasz wiele ustawień o tej samej nazwie w sekcji, użyta zostanie ostatnia z nich.

Jeśli chcesz zastąpić wszystkie ustawienia w sekcji swoimi podanymi wartościami, użyj previous: replaced jako jedynego, najlepiej pierwszego elementu w liście ustawień. To wskazuje, że poprzednie ustawienia w systemie powinny zostać zastąpione podanymi ustawieniami. Na przykład:

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

To spowoduje usunięcie wszystkich istniejących ustawień dla kernel_settings_sysctl i dodanie podanych ustawień. Jeśli chcesz usunąć pojedyncze ustawienie, określ state: absent w poszczególnym ustawieniu, zamiast value:

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

To usunie ustawienie vm.max_map_count z ustawień kernel_settings_sysctl. Jeśli chcesz usunąć wszystkie ustawienia z grupy, określ state: empty jako dict zamiast list:

kernel_settings_sysctl:
  state: empty

To spowoduje usunięcie wszystkich ustawień kernel_settings_sysctl.

Użyj {"state":"absent"} do usunięcia składnika o wartości skalara. Na przykład, aby usunąć wszystkie ustawienia kernel_settings_systemd_cpu_affinity, kernel_settings_transparent_hugepages i kernel_settings_transparent_hugepages_defrag, użyj:

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

Przykład Playbooka

- name: Zarządzaj ustawieniami jądra
  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

Ostrzeżenia

Rola kernel_settings spowoduje zastosowanie innych ustawień sysctl, gdy używana jest implementacja tuned, która jest domyślna. Może to nastąpić, gdy ręcznie edytujesz pliki w /etc/sysctl.d/, lub jeśli pliki sysctl.d są instalowane przez jakiś pakiet systemowy. Na przykład, w Fedory, instalacja pakietu libreswan dostarcza plik /etc/sysctl.d/50-libreswan.conf. Użycie roli kernel_settings spowoduje ponowne załadowanie i zastosowanie tego pliku. Jeśli to zachowanie nie jest pożądane, musisz edytować konfigurację tuned na zarządzanych hostach w /etc/tuned/tuned-main.conf i ustawić reapply_sysctl=0.

Ustawienia, które stosujesz za pomocą roli kernel_settings, mogą kolidować z innymi ustawieniami. Na przykład, jeśli ręcznie uruchamiasz polecenie sysctl lub ręcznie edytujesz pliki w /etc/sysctl.d/, lub jeśli pliki sysctl.d są instalowane przez jakiś pakiet systemowy, mogą ustawić te same wartości, które ustalasz za pomocą roli kernel_settings. Dla ustawień sysctl priorytet ustawień jest następujący:

  • pliki sysctl mają najwyższy priorytet - /etc/sysctl.conf oraz /etc/sysctl.d/* zastąpią wszystko
  • ustawienia roli kernel_settings mają następny najwyższy priorytet
  • ustawienia ustawione ręcznie za pomocą polecenia sysctl mają najniższy priorytet

Dla wszystkich innych ustawień, takich jak sysfs, ustawienia z roli kernel_settings mają najwyższy priorytet.

rpm-ostree

Zobacz README-ostree.md

Licencja

Niektóre części związane z tunedGPLv2+. Są one zaznaczone w nagłówkach plików. Wszystko inne jest MIT, chyba że zaznaczono inaczej. Zobacz plik LICENSE po więcej informacji.

Informacje o Autorze

Rich Megginson (richm na githubie, rmeggins w mojej firmie)

Zainstaluj
ansible-galaxy install linux-system-roles.kernel_settings
Licencja
other
Pobrania
5.8k
Właściciel