第 3 章 使用 Ansible 角色永久配置内核参数

作为熟悉 Red Hat Ansible Engine 经验丰富的用户,您可以使用角色 kernel_settings 同时在多个客户端中配置内核参数。这个解决方案:

  • 提供带有有效输入设置的友好界面。
  • 在同一个位置保留所有预期内核参数。

在您从控制机器运行 kernel_settings 角色后,内核参数会立即应用于受管系统,并在重启后保留。

3.1. 内核设置角色简介

RHEL 系统角色是 Ansible Automation Platform 中的角色和模块集合,可提供一致的配置界面来远程管理多个系统。

RHEL 系统角色用于使用 kernel_settings 系统角色自动配置内核。rhel-system-roles 软件包包含这个系统角色以及参考文档。

要自动在一个或多个系统中应用内核参数,请在 playbook 中使用您选择的 kernel_settings 一个或多个角色变量的角色。playbook 是一个或多个 play 的列表,可人类可读,并以 YAML 格式编写。

您可以使用清单文件来定义一组您希望 Ansible Engine 根据 playbook 配置的系统。

使用 kernel_settings 角色,您可以配置:

  • 使用 kernel_settings_sysctl 角色变量的内核参数
  • 使用 kernel_settings_sysfs 角色变量的各种内核子系统、硬件设备和设备驱动程序
  • systemd 服务管理者的 CPU 关联性,并使用 kernel_settings_systemd_cpu_affinity 角色变量处理其 fork
  • 内核内存子系统使用 kernel_settings_transparent_hugepageskernel_settings_transparent_hugepages_defrag 角色变量透明巨页

其它资源

  • 如需有关 kernel_settings 角色变量和示例 playbook 的详细引用,安装 rhel-system-roles 软件包,以及查看 README.md README.html /usr/share/doc/rhel-system-roles/kernel_settings/ 目录中的文件。
  • 如需有关 playbook 的更多信息,请参阅 Ansible 文档中的 使用 playbook
  • 如需有关创建和使用清单的更多信息,请参阅 Ansible 文档中的如何构建您的清单

3.2. 使用内核设置角色应用所选内核参数

按照以下步骤准备并应用 Ansible playbook 来远程配置内核参数,从而对多个受管操作系统产生持久性。

先决条件

  • 您的 Red Hat Ansible Engine 订阅已附加到系统,也称 控制机器,您要从其中运行 kernel_settings 角色。如需更多信息,请参阅如何下载和安装 Red Hat Ansible Engine 文章。
  • 在控制机器上启用 Ansible Engine 软件仓库。
  • Ansible Engine 已安装在控制机器上。

    注意

    您不需要在要配置内核参数的系统中(也称为 受管主机)安装 Ansible Engine。

  • rhel-system-roles 软件包安装在控制机器上。
  • 控制机器上存在受管主机的清单,Ansible Engine 能够连接到它们。

流程

  1. 另外,还可查看 inventory 文件:

    #  cat /home/jdoe/<ansible_project_name>/inventory
    [testingservers]
    pdoe@192.168.122.98
    fdoe@192.168.122.226
    
    [db-servers]
    db1.example.com
    db2.example.com
    
    [webservers]
    web1.example.com
    web2.example.com
    192.0.2.42

    该文件定义 [testingservers] 组和其它组。它允许您针对特定系统集合更有效地运行 Ansible Engine。

  2. 创建一个配置文件来为 Ansible Engine 操作设置默认和权限升级。

    1. 创建新 YAML 文件,并在文本编辑器中打开,例如:

      #  vi /home/jdoe/<ansible_project_name>/ansible.cfg
    2. 将以下内容插入到文件中:

      [defaults]
      inventory = ./inventory
      
      [privilege_escalation]
      become = true
      become_method = sudo
      become_user = root
      become_ask_pass = true

      [defaults] 部分指定受管主机清单文件的路径。[privilege_escalation] 部分定义了将用户权限切换到指定的受管主机 root 上。这对成功配置内核参数是必需的。运行 Ansible playbook 时,会提示您输入用户密码。在连接到受管主机后,用户会通过 sudo 切换为 root

  3. 创建使用 kernel_settings 角色的 Ansible playbook。

    1. 创建新 YAML 文件,并在文本编辑器中打开,例如:

      #  vi /home/jdoe/<ansible_project_name>/kernel_roles.yml

      此文件代表一个 playbook,通常包含了一组有特定顺序的任务(也称为 play )列表。这些任何会根据 inventory 文件中选择的特定管理主机进行。

    2. 将以下内容插入到文件中:

      ---
      - name: Configure kernel settings
        hosts: testingservers
      
        vars:
          kernel_settings_sysctl:
            - name: fs.file-max
              value: 400000
            - name: kernel.threads-max
              value: 65536
          kernel_settings_sysfs:
            - name: /sys/class/net/lo/mtu
              value: 65000
          kernel_settings_transparent_hugepages: madvise
      
        roles:
          - linux-system-roles.kernel_settings

      name 键是可选的。它把任意字符串与这个 play 相关联,作为一个标签来标识这个 play 的作用。play 中的 hosts 键指定 play 被运行的主机。此键的值或值可以作为被管理的主机的单独名称提供,也可以作为 inventory 文件中定义的一组主机提供。

      vars 部分代表包含所选内核参数名称和值的变量列表。

      roles 键指定要配置 vars 部分中提到的参数和值的系统角色。

      注意

      您可以修改 playbook 中的内核参数及其值,以满足您的需要。

  4. (可选)验证 play 中的语法是否正确。

    #  ansible-playbook --syntax-check kernel-roles.yml
    
    playbook: kernel-roles.yml

    本例演示了 playbook 成功验证。

  5. 执行 playbook。

    #  ansible-playbook kernel-roles.yml
    BECOME password:
    
    PLAY [Configure kernel settings]  ... PLAY RECAP **
    fdoe@192.168.122.226       : ok=10   changed=4    unreachable=0    failed=0    skipped=6    rescued=0    ignored=0
    pdoe@192.168.122.98        : ok=10   changed=4    unreachable=0    failed=0    skipped=6    rescued=0    ignored=0

    在 Ansible Engine 运行 playbook 之前,会提示您输入密码,以便受管主机上的用户能够切换至 root,这在配置内核参数时是必需的。

    recap 部分显示所有受管主机的 play 都成功完成(failed=0)且应用了 4 个内核参数(changed=4)。

  6. 重启您的受管主机并检查受影响的内核参数,以验证是否应用了更改并在重启后保留。

其它资源


为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。