第 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_hugepages
和kernel_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 能够连接到它们。
流程
另外,还可查看
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。创建一个配置文件来为 Ansible Engine 操作设置默认和权限升级。
创建新 YAML 文件,并在文本编辑器中打开,例如:
# vi /home/jdoe/<ansible_project_name>/ansible.cfg
将以下内容插入到文件中:
[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
。
创建使用
kernel_settings
角色的 Ansible playbook。创建新 YAML 文件,并在文本编辑器中打开,例如:
# vi /home/jdoe/<ansible_project_name>/kernel_roles.yml
此文件代表一个 playbook,通常包含了一组有特定顺序的任务(也称为 play )列表。这些任何会根据
inventory
文件中选择的特定管理主机进行。将以下内容插入到文件中:
--- - 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 中的内核参数及其值,以满足您的需要。
(可选)验证 play 中的语法是否正确。
# ansible-playbook --syntax-check kernel-roles.yml playbook: kernel-roles.yml
本例演示了 playbook 成功验证。
执行 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
)。- 重启您的受管主机并检查受影响的内核参数,以验证是否应用了更改并在重启后保留。
其它资源
- 有关 RHEL 系统角色的更多信息,参阅开始使用 RHEL 系统角色。
-
有关目录中所有当前
kernel_settings
中支持的变量的更多信息,请参阅/usr/share/doc/rhel-system-roles/kernel_settings/
目录中的README.html
和README.md
文件。 - 如需有关 Ansible 清单的更多信息,请参阅 Ansible 文档中的使用清单。
- 如需有关 Ansible 配置文件的更多信息,请参阅 Ansible 文档中的配置 Ansible。
- 如需有关 Ansible playbook 的更多信息, 请参阅 Ansible 文档中的使用 Playbook。
- 如需有关 Ansible 变量的更多信息,请参阅 Ansible 文档中 的使用变量。
- 如需有关 Ansible 角色的更多信息,请参阅 Ansible 文档中的角色。
为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。