6.2. 使用 kernel_settings 角色应用所选内核参数


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

先决条件

  • root 权限。
  • RHEL 订阅授权,您将在控制机器上安装 ansible-corerhel-system-roles 软件包。
  • 受管主机清单存在于控制计算机上,Ansible 能够连接它们。
重要

RHEL 8.0 - 8.5 提供对基于 Ansible 的自动化需要 Ansible Engine 2.9 的独立 Ansible 存储库的访问权限。Ansible Engine 包含命令行实用程序,如 ansibleansible-playbook; 连接器,如 dockerpodman; 以及插件和模块的整个环境。有关如何获取并安装 Ansible Engine 的信息,请参阅如何下载和安装 Red Hat Ansible Engine?

RHEL 8.6 和 9.0 引入了 Ansible Core(以 ansible-core RPM 提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。AppStream 存储库提供 ansible-core,它的范围有限。如需更多信息,请参阅 RHEL 9 AppStream 中包含的 ansible-core 软件包的范围

步骤

  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
    Copy to Clipboard Toggle word wrap

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

  2. 创建配置文件来为 Ansible 操作设置默认值和特权升级。

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

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

      [defaults]
      inventory = ./inventory
      
      [privilege_escalation]
      become = true
      become_method = sudo
      become_user = root
      become_ask_pass = true
      Copy to Clipboard Toggle word wrap

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

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

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

      #  vi /home/jdoe/<ansible_project_name>/kernel-roles.yml
      Copy to Clipboard Toggle word wrap

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

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

      ---
      -
        hosts: testingservers
        name: "Configure kernel settings"
        roles:
          - rhel-system-roles.kernel_settings
        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
      Copy to Clipboard Toggle word wrap

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

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

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

      注意

      您可以修改 playbook 中的内核参数及其值以符合您的需要。

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

    #  ansible-playbook --syntax-check kernel-roles.yml
    
    playbook: kernel-roles.yml
    Copy to Clipboard Toggle word wrap

    本例演示了对 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
    Copy to Clipboard Toggle word wrap

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

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

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

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat