11.13. Red Hat Enterprise Linux 系统角色
指定多个用户不再会导致资源与错误的用户关联
在以前的版本中,当为两个不同的用户管理资源时,var 和 set_fact 都用来设置 __podman_user 和 __podman_user_home_dir 变量。这会导致无法预计和未定义的行为,因为系统使用第二个用户的旧值,从而导致第二个用户的配置错误地引用第一个用户数据。
在这个版本中,该角色只使用 set_fact 设置 podman_user 变量,而 __podman_user_home_dir 变量只使用 vars 设置。另外,已重构了相应的代码,以使用 __podman_handle_user 而不是 __podman_user,其中角色可以使用 vars。因此,您将保留多个用户的数据并确保一致的配置。
如果禁用了 IPv6 接口,postfix RHEL 系统角色会自动探测
默认 postfix 配置使用 inet_interfaces = localhost 设置,它会告知 postfix 侦听解析到 localhost 的所有接口,包括 IPv4 和 IPv6 接口。在此次更新之前,如果主机上禁用了 IPv6,则会出现问题。在这种情况下,postfix 角色及其命令行工具(如reply )会返回错误。整个角色都失败。在这个版本中,该角色确定是否禁用了 IPv6。如果是这样,它会设置 inet_protocols = ipv4,以便 postfix 仅使用 IPv4 接口。因此,postfix 角色也可以工作,即使禁用 IPv6。
SELinux 角色不再因为 Ansible 检查模式下未定义的 tempdir 路径而生成错误
在此次更新之前,在 Ansible 检查模式中没有定义 tempdir 路径,__selinux_item.path 可以是 undefined。因此,当以检查模式运行时,selinux RHEL 系统角色会生成各种变量未定义的错误。在这个版本中,角色会跳过需要定义 tempdir.path 的任务,并可以处理变量未定义的情况。因此,该角色可在检查模式中正常工作。
改进了使用 swigrhel-system-roles中的值删除内核选项
在以前的版本中,当用户只提供密钥时,无法删除指定为 key=value 的内核引导选项,从而导致持久不需要的引导参数,按名称管理内核选项。在这个版本中,在 swigmod_boot_args 函数中的正则表达式已被更新,以正确匹配并删除内核选项,并添加了自动测试以验证正确的行为。
因此,现在可以按名称可靠地删除内核选项,即使将 key=value 设置为 key=value,确保准确的配置和改进的系统管理。
确保 ha_cluster RHEL 系统角色需要 /var/lib/pcsd 目录
在此次更新之前,/var/lib/pcsd 目录是在安装过程中创建的,但更新的版本依赖 systemd 服务在 pcsd 服务启动时创建这个目录。因此,当角色尝试访问它时,该目录可能不存在,从而导致执行错误或失败。
在这个版本中,该角色明确确保 /var/lib/pcsd 目录在使用前存在。因此,它可防止因为缺少目录而导致运行时问题,并改进角色执行可靠性。
Jira:RHEL-100819[1]
LVM RAID 现在支持加密和分区的设备
在此次更新之前,LVM RAID 代码假设 raid_disks 中指定的磁盘是所有 LVM RAID 设置的 PV 的父设备。这不适用于加密或分区的设备。因此,当加密 LUKS 层添加了一个额外的存储层时,或者在没有父设备的情况下使用直接分区时出现错误。在这个版本中,LVM RAID 中的 PV 解析被改进来支持加密和分区的设备。现在,您可以指定 PV 分区而不是底层磁盘。
在这个版本中,为缺失或无效的 RAID 磁盘条目添加了错误处理,并引进了相应的测试以确保稳定性。
RAID 现在报告无效或不支持的配置的明确错误
在此次更新之前,可以指定无效的 RAID 级别或磁盘不足,而不会造成明显错误。这会导致阵列创建失败或不一致。因此,错误消息不明确,RAID 设置不太可靠。在这个版本中,RAID 参数会在阵列创建前验证,并强制使用最小磁盘计数。因此,会引发清晰的错误,并尝试创建带有没有磁盘不足的 RAID 被阻止。
在这个版本中,删除了已弃用的 process_device_numbers 帮助程序,并使用 unified_raid_level。另外,还添加了无效 RAID 级别和磁盘场景的失败测试。
encryption_key 不再被屏蔽
在此次更新之前,encryption_key 参数被错误地标记为 no_log。这会导致密钥文件路径被占位符字符串替代,从而导致磁盘加密正常工作。在这个版本中,encryption_key 参数不再标记为 no_log 标志,您现在可以成功使用密钥文件执行磁盘加密。
SELinux 角色永久设置内核 SELinux 参数
在此次更新之前,selinux RHEL 系统角色不会在更改 SELinux 状态和禁用时设置 kernel SELinux 参数。因此,SELinux 状态更改在重启后不会被保留。在这个版本中,确保在角色将 SELinux 状态更改为 disabled 时正确设置了 kernel SELinux 参数。因此,SELinux 状态会更改为,重启后从 disabled 会被保留。
systemd 角色使用文件 basename 构造到目的地的路径
在此次更新之前,如果用户在嵌套目录中指定了文件或模板源,systemd RHEL 系统角色将使用整个路径而不是目标文件的 basename。因此,文件和模板放置在目的地的同一目录结构中,systemd 不支持它。在这个版本中,该角色将 basenames 用于嵌套目录中的目标文件。因此,用户可以使用带有角色的嵌套目录。
Jira:RHEL-88774[1]
timesync RHEL 系统角色不再从 /etc/sysconfig/chronyd中删除 OPTIONS="-F 2" 默认设置
在此次更新之前,timesync 系统角色使用 "" 替换 chronyd 服务的默认 OPTIONS= 设置。因此,这删除了默认的 OPTIONS="-F 2" 设置,这弱了 chronyd 的安全性。在这个版本中,-F 2 被添加为 OPTIONS 的默认设置,用户可以覆盖或扩展此设置。因此,timesync 角色现在应用正确的安全设置,同时仍然允许用户自定义。
网络 RHEL 系统角色不再显示错误,因为路由规则验证不正确
在此次更新之前,network RHEL 系统角色中的验证部分会错误地检查顶层 NM 模块中的路由规则属性,而不是 NM.IPRoutingRule 类。这会导致验证失败,角色显示错误。在这个版本中,该角色正确使用 API,不再显示不正确的验证错误。
Jira:RHEL-88286[1]
network RHEL 系统角色现在使用更强大的接口识别方法
在此次更新之前,当为网络接口提供了接口名称和 MAC 地址时,验证过程会执行两个独立的查找:一个用于使用接口名称,另一个使用 MAC 地址。这可能会导致验证失败,因为 MAC 地址的查找可能与接口的当前 MAC 地址而不是其永久硬件 MAC 地址匹配。
在这个版本中,验证逻辑有所改进。network 角色现在使用接口名称作为唯一标识符来查找网络设备。然后,它会检索与该接口关联的 MAC 地址,并将其与用户提供的 MAC 地址进行比较以进行验证。这个方法更为可靠,因为接口名称是唯一的内核标识符,防止临时 MAC 地址更改导致的不匹配。
Jira:RHEL-88263[1]
qdevice 守护进程现在在证书更改后自动重启
在以前的版本中,在更新用于仲裁设备守护进程(qnetd)和集群节点(qdevice)之间的通信后,qdevice 守护进程不会自动重启。守护进程将继续使用旧证书,从而导致与仲裁设备的通信失败。
在这个版本中,集群节点中的 qdevice 守护进程会在证书更改后自动重启。这样可确保立即载入新证书,并与仲裁设备通信被维护。
布尔值在 TOML 文件中正确呈现
在此次更新之前,TOML 文件中的布尔值被错误地格式化,从而导致处理布尔值选项不正确。因此,用户会出现配置问题。在这个版本中,TOML 文件中的布尔值选项格式已被修正。现在,最终用户可以在其 TOML 文件中正确配置布尔值选项。
Jira:RHEL-85704[1]
布尔值在 TOML 文件中正确呈现
在此次更新之前,在 Jinja2 模板中不正确的布尔值转换会导致 True 被写为 "True "。因此,用户因为格式不正确的配置文件收到错误,从而导致容器服务失败。在这个版本中,Jinja2 模板中的不正确的布尔值转换已被修复。现在,Podman 配置可以正确地转换 Jinja2 模板中的布尔值。
Jira:RHEL-84942[1]
在删除资源时,Podman RHEL 系统角色不再会失败,并显示 UNREACHABLE 错误
在此次更新之前,当为非 root 用户禁用闲置程序时,系统不会等待很长时间以便用户状态变为 关闭。因此,systemd-logind 服务会预先重启,以强制取消闲置状态。在某些系统上,这会触发终止 root 会话的计时器,包括活跃的 sshd 连接。这会导致 Ansible Playbook 失败并显示 UNREACHABLE 错误。在这个版本中,系统会等待大量时间才能正确取消闲置程序,只有在绝对需要时才重启 systemd-logind。因此,在删除资源时角色不再会失败,并显示 UNREACHABLE 错误
Jira:RHEL-84912[1]
ha_cluster RHEL 系统角色现在可以与配置了系统范围的 HTTP 代理一起工作
在以前的版本中,当配置了系统范围的 HTTP 代理时,ha_cluster RHEL 系统角色会错误地尝试通过 unix 套接字与 pcsd 守护进程进行本地通信。这会导致角色失败。
在这个版本中,这个角色已被修改,以明确禁用本地 pcsd 通讯的代理使用。
因此,ha_cluster RHEL 系统角色在定义了系统范围的 HTTP 代理的系统中可以正常工作。
GSSAPIIndicators 添加到 sshd 角色
新的配置选项 GSSAPIIndicators 被添加到 RHEL 10 中,用于设置通用安全服务应用程序编程接口(GSS-API)。在这个版本中,在 sshd RHEL 系统角色中添加了 GSSAPIIndicators 配置选项。因此,您可以使用 RHEL 系统角色在 RHEL 10 系统上配置 GSSAPIIndicators。
bootloader 角色拒绝布尔值或 null 类型值
在此次更新之前,用户可以指定值(如 value: on 或 value: yes )的值,它们会被转换为字符串 "on" 或 "yes "。但是,YAML 将它们视为 YAML bool 类型,并将其写为字符串 "True "。因此,不知道 YAML 布尔值处理的用户无法设置值,如 "on" 或 "off "。在这个版本中,引导装载程序 RHEL 系统角色会拒绝布尔值或 null 类型的值。因此,用户必须输入这样的 YAML 布尔值类型值,以带引号字符串将它们写入引导装载程序配置。readme 使用此信息更新。
当解析 Alias 值时,sudo 角色不再挂起
在此次更新之前,sudo RHEL 系统角色中的 regex 不考虑该 Alias 值,如 Cmnd_Alias,不必在等号 = 一侧有空格。因此,正则表达式永远不会被终止,角色似乎挂起。在这个版本中,角色确保 regex 符合 sudoers 文件规格中字段的 eBNF 定义。因此,Alias 值会被正确解析,并且没有空格 =。
Jira:RHEL-106261[1]
在管理身份验证和配置文件时,podman RHEL 系统角色不会报告 changed: true
在此次更新之前,如果在管理身份验证和配置文件时,podman RHEL 系统角色都会更改父路径模式,因为它为各种配置和身份验证文件的通用父路径使用两种不同的模式。
在这个版本中,该角色不会报告 changed: true,因为它对父路径使用一致的模式。
Jira:RHEL-84922[1]
systemd 角色取消掩码,并在一次运行时启动单元
在此次更新之前,systemd RHEL 系统角色无法在单元被屏蔽时启用并启动服务,因为角色无法首先取消屏蔽单元。因此,用户必须运行角色两次。在这个版本中,systemd 角色可以正确地取消掩码并启动服务,从而消除了重复运行的需求。
Jira:RHEL-88760[1]
较小的卷大小不匹配不再导致角色报告不正确
在此次更新之前,当创建或重新定义卷的大小时,系统最多允许达到请求大小和实际大小之间的 2% 的不同。这种调整使卷适合可用的池可用空间。因此,当角色再次运行时大小不匹配,从而导致角色错误地假设内容已更改。在这个版本中,小大小差异不再导致角色错误解析更改。现在,该角色会报告正确的状态。
Jira:RHEL-90216[1]