6.2. 使用 kernel_settings 角色应用所选内核参数
按照以下步骤准备并应用 Ansible playbook 来远程配置内核参数,从而对多个受管操作系统产生持久性。
先决条件
-
有
root
权限。 -
RHEL 订阅授权,您将在控制机器上安装
ansible-core
和rhel-system-roles
软件包。 - 受管主机清单存在于控制计算机上,Ansible 能够连接它们。
RHEL 8.0 - 8.5 提供对基于 Ansible 的自动化需要 Ansible Engine 2.9 的独立 Ansible 存储库的访问权限。Ansible Engine 包含命令行实用程序,如 ansible
、ansible-playbook
; 连接器,如 docker
和 podman
; 以及插件和模块的整个环境。有关如何获取并安装 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 软件包的范围。
步骤
另外,还可查看
清单(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。创建配置文件来为 Ansible 操作设置默认值和特权升级。
创建新 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
文件中选择的特定管理主机进行。将以下内容插入到文件中:
--- - 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
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 运行 playbook 之前,会提示您输入密码,以便受管主机上的用户可以切换到
root
,这在配置内核参数时是必需的。recap 部分显示 play 成功完成所有受管主机 (
failed=0
),并且已应用了 4 个内核参数 (changed=4)。
- 重启您的受管主机并检查受影响的内核参数,以验证是否应用了更改并在重启后保留。
其他资源
- 准备控制节点和受管节点以使用 RHEL 系统角色
-
/usr/share/doc/rhel-system-roles/kernel_settings/kernel_settings/
目录中的README.html
和README.md
文件 - 构建您的清单
- 配置 Ansible
- 使用 Playbook
- 使用变量
- 角色