使用 RHEL 7.9 中的 RHEL 系统角色自动化系统管理
使用 Red Hat Ansible Automation Platform playbook 在多个主机上进行一致且可重复配置的 RHEL 部署
摘要
使开源包含更多 复制链接链接已复制到粘贴板!
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 单击顶部导航栏中的 Create。
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 RHEL 系统角色简介 复制链接链接已复制到粘贴板!
通过使用 RHEL 系统角色,您可以远程管理跨 RHEL 主版本的多个 RHEL 系统的系统配置。RHEL 系统角色是 Ansible 角色和模块的集合。要使用它来配置系统,您必须使用以下组件:
- 控制节点
- 控制节点是您运行 Ansible 命令和 playbook 的系统。您的控制节点可以是 Ansible Automation Platform、Red Hat Satellite 或 RHEL 9、8 或 7 主机。如需更多信息,请参阅 在 RHEL 8 上准备控制节点。
- 受管节点
- 受管节点是您通过 Ansible 管理的服务器和网络设备。受管节点有时也称为主机。Ansible 不必安装到受管节点上。如需更多信息,请参阅 准备受管节点。
- Ansible playbook
- 在 playbook 中,您可以定义要在受管节点上实现的配置,或受管节点上系统要执行的一组步骤。Playbook 是 Ansible 的配置、部署和编配语言。
- 清单(Inventory)
- 在清单文件中,您列出受管节点,并指定信息,如每个受管节点的 IP 地址等。在清单中,您还可以组织受管节点,创建并嵌套组以更轻松地扩展。清单文件有时也称为 hostfile。
在 Red Hat Enterprise Linux 8 中,您可以使用 rhel-system-roles 软件包提供的以下角色,该软件包在 AppStream 存储库中提供:
| 角色名称 | 角色描述 | 章节标题 |
|---|---|---|
|
| 证书问题和续订 | 使用 RHEL 系统角色请求证书 |
|
| Web 控制台 | 使用 cockpit RHEL 系统角色安装和配置 web 控制台 |
|
| 系统范围的加密策略 | 设置跨系统的自定义加密策略 |
|
| Firewalld | 使用系统角色配置 firewalld |
|
| HA 集群 | 使用系统角色配置高可用性集群 |
|
| 内核转储 | 使用 RHEL 系统角色配置 kdump |
|
| 内核设置 | 使用 Ansible 角色永久配置内核参数 |
|
| 日志记录 | 使用 logging 系统角色 |
|
| 指标(PCP) | 使用 RHEL 系统角色监控性能 |
|
| Microsoft SQL Server | 使用 microsoft.sql.server Ansible 角色配置 Microsoft SQL Server |
|
| 网络 | 使用 network RHEL 系统角色管理 InfiniBand 连接 |
|
| 网络绑定磁盘加密客户端 | 使用 nbde_client 和 nbde_server 系统角色 |
|
| 网络绑定磁盘加密服务器 | 使用 nbde_client 和 nbde_server 系统角色 |
|
| postfix | 系统角色中 postfix 角色的变量 |
|
| SELinux | 使用系统角色配置 SELinux |
|
| SSH 客户端 | 使用 ssh 系统角色配置安全通信 |
|
| SSH 服务器 | 使用 ssh 系统角色配置安全通信 |
|
| 存储 | 使用 RHEL 系统角色管理本地存储 |
|
| 终端会话记录 | 使用 tlog RHEL 系统角色为会话记录配置系统 |
|
| 时间同步 | 使用 RHEL 系统角色配置时间同步 |
|
| VPN | 使用 vpn RHEL 系统角色配置具有 IPsec 的 VPN 连接 |
第 2 章 准备控制节点和受管节点以使用 RHEL 系统角色 复制链接链接已复制到粘贴板!
在使用单独的 RHEL 系统角色管理服务和设置之前,您必须准备控制节点和受管节点。
2.1. 在 RHEL 8 上准备一个控制节点 复制链接链接已复制到粘贴板!
在使用 RHEL 系统角色前,您必须配置一个控制节点。然后,此系统会根据 playbook 从清单中配置受管主机。
先决条件
- RHEL 7.9 已安装。有关安装 RHEL 的更多信息,请参阅 安装指南。
- 该系统已注册到客户门户网站。
-
Red Hat Enterprise Linux Server订阅已附加到系统。 -
如果在客户门户网站帐户中可用,则会将
Ansible Automation Platform订阅附加到系统。
流程
安装
rhel-system-roles软件包:yum install rhel-system-roles
[root@control-node]# yum install rhel-system-rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令将
ansible-core软件包安装为依赖项。创建名为
ansible的用户,以管理并运行 playbook:useradd ansible
[root@control-node]# useradd ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到新创建的
ansible用户:su - ansible
[root@control-node]# su - ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以这个用户身份执行其余步骤。
创建一个 SSH 公钥和私钥:
ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): <password> ...
[ansible@control-node]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): <password> ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为密钥文件使用推荐的默认位置。
- 可选: 要防止 Ansible 每次建立连接时提示您输入 SSH 密钥密码,请配置 SSH 代理。
使用以下内容创建
~/.ansible.cfg文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意~/.ansible.cfg文件中的设置具有更高的优先级,并覆盖全局/etc/ansible/ansible.cfg文件中的设置。使用这些设置,Ansible 执行以下操作:
- 管理指定清单文件中的主机。
-
当帐户建立到受管节点的 SSH 连接时,请使用
remote_user参数中设置的帐户。 -
使用
sudo工具,以root用户身份在受管节点上执行任务。 - 每次应用 playbook 时,都会提示输入远程用户的 root 密码。出于安全考虑,建议使用它。
创建一个列出受管主机主机名的 INI 或 YAML 格式的
~/inventory文件。您还可以在清单文件中定义主机组。例如,以下是 INI 格式的清单文件,它有三个主机,以及一个名为US的主机组:managed-node-01.example.com [US] managed-node-02.example.com ansible_host=192.0.2.100 managed-node-03.example.com
managed-node-01.example.com [US] managed-node-02.example.com ansible_host=192.0.2.100 managed-node-03.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,控制节点必须能够解析主机名。如果 DNS 服务器无法解析某些主机名,请在主机条目旁边添加
ansible_host参数来指定其 IP 地址。
后续步骤
- 准备受管节点。如需更多信息,请参阅 准备受管节点。
2.2. 准备受管节点 复制链接链接已复制到粘贴板!
受管节点是清单中列出的系统,它将根据 playbook 由控制节点配置。您不必在受管主机上安装 Ansible。
先决条件
- 您已准备好了控制节点。如需更多信息,请参阅 在 RHEL 8 上准备控制节点。
您有从控制节点进行 SSH 访问的权限。
重要以
root用户身份直接访问 SSH 有安全风险。要降低这个风险,您将在此节点上创建一个本地用户,并在准备受管节点时配置一个sudo策略。然后,控制节点上的 Ansible 可以使用本地用户帐户登录受管节点,并以不同的用户(如root)运行 playbook。
流程
创建一个名为
ansible的用户:useradd ansible
[root@managed-node-01]# useradd ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 控制节点稍后使用这个用户建立与这个主机的 SSH 连接。
为
ansible用户设置密码:passwd ansible Changing password for user ansible. New password: <password> Retype new password: <password> passwd: all authentication tokens updated successfully.
[root@managed-node-01]# passwd ansible Changing password for user ansible. New password: <password> Retype new password: <password> passwd: all authentication tokens updated successfully.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当 Ansible 使用
sudo以root用户身份执行任务时,您必须输入此密码。在受管主机上安装
ansible用户的 SSH 公钥:以
ansible用户身份登录控制节点,并将 SSH 公钥复制到受管节点:ssh-copy-id managed-node-01.example.com /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'managed-node-01.example.com (192.0.2.100)' can't be established. ECDSA key fingerprint is SHA256:9bZ33GJNODK3zbNhybokN/6Mq7hu3vpBXDrCxe7NAvo.
[ansible@control-node]$ ssh-copy-id managed-node-01.example.com /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'managed-node-01.example.com (192.0.2.100)' can't be established. ECDSA key fingerprint is SHA256:9bZ33GJNODK3zbNhybokN/6Mq7hu3vpBXDrCxe7NAvo.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示时,输入
yes进行连接:Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysCopy to Clipboard Copied! Toggle word wrap Toggle overflow 提示时,输入密码:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过在控制节点上远程执行命令来验证 SSH 连接:
ssh <managed-node-01.example.com> whoami ansible
[ansible@control-node]$ ssh <managed-node-01.example.com> whoami ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
为
ansible用户创建一个sudo配置:使用
visudo命令创建并编辑/etc/sudoers.d/ansible文件:visudo /etc/sudoers.d/ansible
[root@managed-node-01]# visudo /etc/sudoers.d/ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在正常编辑器中使用
visudo的好处是,该实用程序提供基本的健全检查和检查是否有解析错误,然后再安装该文件。在
/etc/sudoers.d/ansible文件中配置满足您要求的sudoers策略,例如:要为
ansible用户授予权限,以便在输入ansible用户密码后以此主机上的任何用户和组身份运行所有命令,请使用:ansible ALL=(ALL) ALL
ansible ALL=(ALL) ALLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要向
ansible用户授予权限,以便在不输入ansible用户密码的情况下以该主机上任何用户和组的身份运行所有命令,请使用:ansible ALL=(ALL) NOPASSWD: ALL
ansible ALL=(ALL) NOPASSWD: ALLCopy to Clipboard Copied! Toggle word wrap Toggle overflow
或者,配置匹配您安全要求的更精细的策略。有关
sudoers策略的详情,请查看sudoers(5)手册页。
验证
验证您可以是否可以在所有受管节点上执行控制节点的命令:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 硬编码的所有组都会动态包含清单文件中列出的所有主机。
使用 Ansible
command模块在受管主机上运行whoami工具来验证特权升级是否正常工作:ansible managed-node-01.example.com -m command -a whoami BECOME password: <password> managed-node-01.example.com | CHANGED | rc=0 >> root
[ansible@control-node]$ ansible managed-node-01.example.com -m command -a whoami BECOME password: <password> managed-node-01.example.com | CHANGED | rc=0 >> rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果命令返回 root,则您在受管节点上配置的
sudo正确。
第 3 章 安装和使用 Collections 复制链接链接已复制到粘贴板!
3.1. Ansible Collections 简介 复制链接链接已复制到粘贴板!
Ansible Collections 是一种发布、维护和使用自动化的新方法。通过组合多种类型的 Ansible 内容,如 playbook、角色、模块和插件,您可以从灵活性和可扩展性的改进中受益。
Ansible Collections 是传统 RHEL 系统角色格式的一个选项。以 Ansible Collection 格式使用 RHEL 系统角色与以传统 RHEL 系统角色格式使用它几乎相同。区别是 Ansible Collections 使用 完全限定集合名称 (FQCN)的概念,其由 名字空间 和 集合名称 组成。我们使用的 名字空间 是 redhat,集合名称 是 rhel_system_roles。因此,虽然 kernel_settings 角色的传统 RHEL 系统角色格式显示为 rhel-system-roles.kernel_settings (带横线),但使用 kernel_settings 角色的 Collection 完全限定集合名称 将显示为 redhat.rhel_system_roles.kernel_settings (带下划线)。
名字空间 和 集合名称 的组合确保对象是唯一的。它也确保对象在 Ansible Collections 和名字空间之间共享,且没有任何冲突。
3.2. 集合结构 复制链接链接已复制到粘贴板!
Collections 是 Ansible 内容的软件包格式。数据结构如下:
- docs/:集合的本地文档,以及示例(如果角色提供了文档)
- galaxy.yml:将成为 Ansible Collection 软件包一部分的 MANIFEST.json 的源数据
playbooks/: playbook 位于此处
- tasks/:包含用于 include_tasks/import_tasks 的"任务列表文件"
plugins/:此处提供所有 Ansible 插件和模块,各自位于其子目录中
- modules/:Ansible 模块
- modules_utils/:用于开发模块的通用代码
- lookup/:搜索插件
- filter/: Jinja2 过滤器插件
- connection/:所需的连接插件(如果不使用默认的)
- roles/:Ansible 角色的目录
- test/:对集合的内容进行测试
3.3. 使用 CLI 安装 Collections 复制链接链接已复制到粘贴板!
集合是 Ansible 内容的分发格式,可包含 playbook、角色、模块和插件。
您可以通过 Ansible Galaxy、浏览器或使用命令行来安装 Collections。
先决条件
- 访问一个或多个 受管节点。
对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core和rhel-system-roles软件包已安装 。 - 列出受管节点的清单文件。
-
流程
通过 RPM 软件包安装集合:
yum install rhel-system-roles
# yum install rhel-system-rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
安装完成后,角色作为 redhat.rhel_system_roles.<role_name> 提供。另外,您可以在 /usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/roles/<role_name>/README.md 找到每个角色的文档。
验证步骤
要验证安装,请在 localhost 上以 check 模式运行 kernel_settings 角色。您还必须使用 --become 参数,因为对于 Ansible package 模块,它是必需的。但是,该参数不会更改您的系统:
运行以下命令:
ansible-playbook -c local -i localhost, --check --become /usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/tests/kernel_settings/tests_default.yml
$ ansible-playbook -c local -i localhost, --check --become /usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/tests/kernel_settings/tests_default.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
命令输出的最后一行应包含值 failed=0。
localhost 之后的逗号是必需的。即使列表中只有一个主机,您页必须添加它。如果没有它,ansible-playbook 会将 localhost 识别为文件或目录。
3.4. 从 Automation Hub 安装 Collections 复制链接链接已复制到粘贴板!
如果使用 Automation Hub,您可以安装托管在 Automation Hub 上的 RHEL 系统角色集合。
先决条件
- 访问一个或多个 受管节点。
对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core和rhel-system-roles软件包已安装 。 - 列出受管节点的清单文件。
-
流程
-
定义 Red Hat Automation Hub 作为
ansible.cfg配置文件中内容的默认源。请参阅 将 Red Hat Automation Hub 配置为内容的主源。 从 Automation Hub 安装
redhat.rhel_system_roles集合:ansible-galaxy collection install redhat.rhel_system_roles
# ansible-galaxy collection install redhat.rhel_system_rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装完成后,角色作为
redhat.rhel_system_roles.<role_name>提供。另外,您可以在/usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/roles/<role_name>/README.md找到每个角色的文档。
验证步骤
要验证安装,请在 localhost 上以 check 模式运行 kernel_settings 角色。您还必须使用 --become 参数,因为对于 Ansible package 模块,它是必需的。但是,该参数不会更改您的系统:
运行以下命令:
ansible-playbook -c local -i localhost, --check --become /usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/tests/kernel_settings/tests_default.yml
$ ansible-playbook -c local -i localhost, --check --become /usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/tests/kernel_settings/tests_default.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
命令输出的最后一行应包含值 failed=0。
localhost 之后的逗号是必需的。即使列表中只有一个主机,您页必须添加它。如果没有它,ansible-playbook 会将 localhost 识别为文件或目录。
3.5. 使用 Collections 应用本地日志系统角色 复制链接链接已复制到粘贴板!
下例中使用集合来准备和应用 Ansible playbook,以在一组独立的计算机上配置日志记录解决方案。
先决条件
- rhel-system-roles 的 Collection 格式是从 rpm 软件包或从 Automation Hub 安装的。
流程
创建定义所需角色的 playbook:
创建新 YAML 文件,并在文本编辑器中打开,例如:
vi logging-playbook.yml
# vi logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容插入 YAML 文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在特定清单上执行 playbook:
ansible-playbook -i inventory-file logging-playbook.yml
# ansible-playbook -i inventory-file logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
- inventory-file 是清单文件的名称。
- logging-playbook.yml 是您使用的 playbook。
验证步骤
测试配置文件
/etc/rsyslog.conf和/etc/rsyslog.d的语法:rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.
# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证系统是否向日志发送信息:
发送测试信息:
logger test
# logger testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看
/var/log/messages日志,例如:cat /var/log/messages Aug 5 13:48:31 hostname root[6778]: test
# cat /var/log/messages Aug 5 13:48:31 hostname root[6778]: testCopy to Clipboard Copied! Toggle word wrap Toggle overflow hostname是客户端系统的主机名。日志显示输入 logger 命令的用户的用户名,在本例中是root。
第 4 章 RHEL 中的 Ansible IPMI 模块 复制链接链接已复制到粘贴板!
4.1. rhel_mgmt 集合 复制链接链接已复制到粘贴板!
智能平台管理接口(IPMI)是一组标准协议的规范,用来与基板管理控制器(BMC)设备通信。IPMI 模块允许您启用和支持硬件管理自动化。IPMI 模块由以下产品提供:
-
rhel_mgmtCollection。软件包名称为ansible-collection-redhat-rhel_mgmt。 -
RHEL 7.9 AppStream,作为新的
ansible-collection-redhat-rhel_mgmt软件包的一部分。
rhel_mgmt 集合中提供以下 IPMI 模块:
-
ipmi_boot:管理引导设备顺序 -
ipmi_power:机器的电源管理
用于 IPMI 模块的必要参数有:
-
ipmi_boot参数:
| 模块名称 | 描述 |
|---|---|
| name | BMC 的主机名或 IP 地址 |
| password | 连接到 BMC 的密码 |
| bootdev | 在下次引导时使用的设备 * 网络 * 软盘 * 硬盘 * 安全 * 光盘 * 设置 * 默认 |
| 用户 | 连接到 BMC 的用户名 |
-
ipmi_power参数:
| 模块名称 | 描述 |
|---|---|
| name | BMC 主机名或 IP 地址 |
| password | 连接到 BMC 的密码 |
| user | 连接到 BMC 的用户名 |
| 状态 | 检查机器是否处于所需的状态 * 开 * 关 * 关闭 * 重置 * 启动 |
4.2. 使用 CLI 安装 rhel mgmt Collection 复制链接链接已复制到粘贴板!
您可以使用命令行安装 rhel_mgmt Collection。
先决条件
-
ansible-core软件包已安装。
流程
通过 RPM 软件包安装集合:
yum install ansible-collection-redhat-rhel_mgmt
# yum install ansible-collection-redhat-rhel_mgmtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 安装完成后,IPMI 模块位于
redhat.rhel_mgmtAnsible 集合中。
4.3. 使用 ipmi_boot 模块的示例 复制链接链接已复制到粘贴板!
以下示例演示了如何在 playbook 中使用 ipmi_boot 模块来为下次引导设置引导设备。为了简单起见,示例使用与 Ansible 控制主机和受管主机相同的主机,从而在执行 playbook 的同一主机上执行模块。
先决条件
- rhel_mgmt 集合已安装。
python3-pyghmi软件包中的pyghmi库已安装在以下位置之一:- 执行 playbook 的主机。
-
受管主机。如果您使用 localhost 作为受管主机,请在您要执行 playbook 的主机上安装
python3-pyghmi软件包。
- 您要控制的 IPMI BMC 可以从您执行 playbook 的主机访问,或从受管主机(如果不使用 localhost 作为受管主机)访问。请注意,其 BMC 由模块配置的主机通常与执行该模块的主机(Ansible 受管主机)不同,因为模块使用 IPMI 协议通过网络联系 BMC。
- 您拥有使用适当访问级别访问 BMC 的凭证。
流程
创建包含以下内容的 playbook.yml 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 针对 localhost 执行 playbook:
ansible-playbook playbook.yml
# ansible-playbook playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
因此,输出会返回值 "success"。
4.4. 使用 ipmi_power 模块的示例 复制链接链接已复制到粘贴板!
本示例演示了如何在 playbook 中使用 ipmi_boot 模块来检查系统是否已开启。为了简单起见,示例使用与 Ansible 控制主机和受管主机相同的主机,从而在执行 playbook 的同一主机上执行模块。
先决条件
- rhel_mgmt 集合已安装。
python3-pyghmi软件包中的pyghmi库已安装在以下位置之一:- 执行 playbook 的主机。
-
受管主机。如果您使用 localhost 作为受管主机,请在您要执行 playbook 的主机上安装
python3-pyghmi软件包。
- 您要控制的 IPMI BMC 可以从您执行 playbook 的主机访问,或从受管主机(如果不使用 localhost 作为受管主机)访问。请注意,其 BMC 由模块配置的主机通常与执行该模块的主机(Ansible 受管主机)不同,因为模块使用 IPMI 协议通过网络联系 BMC。
- 您拥有使用适当访问级别访问 BMC 的凭证。
流程
创建包含以下内容的 playbook.yml 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行 playbook:
ansible-playbook playbook.yml
# ansible-playbook playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
输出返回值 "true"。
第 5 章 RHEL 中的 Redfish 模块 复制链接链接已复制到粘贴板!
用于远程管理设备的 Redfish 模块现在是 redhat.rhel_mgmt Ansible 集合的一部分。通过 Redfish 模块,您可以使用标准 HTTPS 传输和 JSON 格式获取服务器或控制它们的信息,轻松在裸机服务器和平台硬件上轻松使用管理自动化。
5.1. Redfish 模块 复制链接链接已复制到粘贴板!
redhat.rhel_mgmt Ansible 集合提供了 Redfish 模块,以支持 Ansible over Redfish 中的硬件管理。redhat.rhel_mgmt 集合位于 ansible-collection-redhat-rhel_mgmt 软件包中。要安装它,请参阅使用 CLI 安装 redhat.rhel_mgmt Collection。
以下 Redfish 模块包括在 redhat.rhel_mgmt 集合中:
-
redfish_info:redfish_info模块检索有关远程 Out-Of-Band (OOB)控制器的信息,如系统清单。 -
redfish_command:redfish_command模块执行 Out-Of-Band (OOB)控制器操作,如日志管理和用户管理,以及电源操作,如系统重启、开机和关机。 -
redfish_config:redfish_config模块执行 OOB 控制器操作,如更改 OOB 配置或设置 BIOS 配置。
5.2. Redfish 模块参数 复制链接链接已复制到粘贴板!
用于 Redfish 模块的参数包括:
redfish_info 参数: | 描述 |
|---|---|
|
| (必需)- OOB 控制器的基本 URI。 |
|
| (必需)- 在 OOB 控制器上执行的类别列表。默认值为 ["Systems"]。 |
|
| (必需)- 在 OOB 控制器上执行的命令列表。 |
|
| OOB 控制器身份验证的用户名。 |
|
| OOB 控制器身份验证的密码。 |
redfish_command 参数: | 描述 |
|---|---|
|
| (必需)- OOB 控制器的基本 URI。 |
|
| (必需)- 在 OOB 控制器上执行的类别列表。默认值为 ["Systems"]。 |
|
| (必需)- 在 OOB 控制器上执行的命令列表。 |
|
| OOB 控制器身份验证的用户名。 |
|
| OOB 控制器身份验证的密码。 |
redfish_config 参数: | 描述 |
|---|---|
|
| (必需)- OOB 控制器的基本 URI。 |
|
| (必需)- 在 OOB 控制器上执行的类别列表。默认值为 ["Systems"]。 |
|
| (必需)- 在 OOB 控制器上执行的命令列表。 |
|
| OOB 控制器身份验证的用户名。 |
|
| OOB 控制器身份验证的密码。 |
|
| 更新的 BIOS 属性。 |
5.3. 使用 redfish_info 模块 复制链接链接已复制到粘贴板!
以下示例演示了如何在 playbook 中使用 redfish_info 模块来获取 CPU 清单的信息。为了简单起见,示例使用与 Ansible 控制主机和受管主机相同的主机,从而在执行 playbook 的同一主机上执行模块。
先决条件
-
已安装
redhat.rhel_mgmt集合。 -
python3-pyghmi软件包中的pyghmi库被安装到受管主机上。如果使用 localhost 作为受管主机,请在执行 playbook 的主机上安装python3-pyghmi软件包。 - OOB 控制器访问详细信息。
流程
创建包含以下内容的 playbook.yml 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 针对 localhost 执行 playbook:
ansible-playbook playbook.yml
# ansible-playbook playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
因此,输出会返回 CPU 清单详情。
5.4. 使用 redfish_command 模块 复制链接链接已复制到粘贴板!
以下示例演示了如何在 playbook 中使用 redfish_command 模块来打开系统。为了简单起见,示例使用与 Ansible 控制主机和受管主机相同的主机,从而在执行 playbook 的同一主机上执行模块。
先决条件
-
已安装
redhat.rhel_mgmt集合。 -
python3-pyghmi软件包中的pyghmi库被安装到受管主机上。如果使用 localhost 作为受管主机,请在执行 playbook 的主机上安装python3-pyghmi软件包。 - OOB 控制器访问详细信息。
流程
创建包含以下内容的 playbook.yml 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 针对 localhost 执行 playbook:
ansible-playbook playbook.yml
# ansible-playbook playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
因此,系统会开机。
5.5. 使用 redfish_config 模块 复制链接链接已复制到粘贴板!
以下示例演示了如何在 playbook 中使用 redfish_config 模块将系统配置为使用 UEFI 引导。为了简单起见,示例使用与 Ansible 控制主机和受管主机相同的主机,从而在执行 playbook 的同一主机上执行模块。
先决条件
-
已安装
redhat.rhel_mgmt集合。 -
python3-pyghmi软件包中的pyghmi库被安装到受管主机上。如果使用 localhost 作为受管主机,请在执行 playbook 的主机上安装python3-pyghmi软件包。 - OOB 控制器访问详细信息。
流程
创建包含以下内容的 playbook.yml 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 针对 localhost 执行 playbook:
ansible-playbook playbook.yml
# ansible-playbook playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
因此,系统引导模式被设置为 UEFI。
第 6 章 使用 kernel_settings RHEL 系统角色永久配置内核参数 复制链接链接已复制到粘贴板!
作为熟悉 Red Hat Ansible 的一名经验丰富的用户,您可以使用 kernel_settings 角色同时在多个客户端上配置内核参数。这个解决方案:
- 提供带有有效输入设置的友好接口。
- 保留所有预期的内核参数。
从控制计算机运行 kernel_settings 角色后,内核参数将立即应用于受管系统,并在重新启动后保留。
请注意,通过 RHEL 频道提供的 RHEL 系统角色可在默认 AppStream 软件仓库中作为 RPM 软件包提供给 RHEL 客户。RHEL 系统角色还可以通过 Ansible Automation Hub 为客户提供 Ansible 订阅的集合。
6.1. kernel_settings 角色简介 复制链接链接已复制到粘贴板!
RHEL System Roles(系统角色)是一组角色,为远程管理多个系统提供一致的配置接口。
RHEL 系统角色是使用 kernel_settings 系统角色自动配置内核。rhel-system-roles 软件包包含这个系统角色以及参考文档。
要将内核参数以自动化方式应用到一个或多个系统,请在 playbook 中使用 kernel_settings 角色和您选择的一个或多个角色变量。playbook 是一个或多个人类可读的 play 的列表,采用 YAML 格式编写。
您可以使用清单文件来定义一组您希望 Ansible 根据 playbook 配置的系统。
使用 kernel_settings 角色,您可以配置:
-
使用
kernel_settings_sysctl角色变量的内核参数 -
使用
kernel_settings_sysfs角色变量的各种内核子系统、硬件设备和设备驱动程序 -
systemd服务管理器的 CPU 相关性,并使用kernel_settings_systemd_cpu_affinity角色变量处理其分叉 -
内核内存子系统使用
kernel_settings_transparent_hugepages和kernel_settings_transparent_hugepages_defrag角色变量透明巨页
6.2. 使用 kernel_settings 角色应用所选内核参数 复制链接链接已复制到粘贴板!
按照以下步骤准备并应用 Ansible playbook 来远程配置内核参数,从而对多个受管操作系统产生持久性。
先决条件
-
您有
root权限。 -
根据您的 RHEL 订阅,您可以在控制机器上安装
ansible-core和rhel-system-roles软件包。 - 受管主机清单存在于控制计算机上,Ansible 能够连接它们。
流程
另外,还可查看
清单(inventory)文件 :Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该文件定义
[testingservers]组和其他组。它允许您对特定的系统集合更有效地运行 Ansible。创建配置文件来为 Ansible 操作设置默认值和特权升级。
创建新 YAML 文件,并在文本编辑器中打开,例如:
vi /home/jdoe/<ansible_project_name>/ansible.cfg
# vi /home/jdoe/<ansible_project_name>/ansible.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容插入到文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [defaults]部分指定受管主机清单文件的路径。[privilege_escalation]部分定义用户特权转移到指定受管主机上的root。这对成功配置内核参数是必需的。运行 Ansible playbook 时,会提示您输入用户密码。用户在连接到受管主机后,通过sudo自动切换为root。
创建使用
kernel_settings角色的 Ansible playbook。创建新 YAML 文件,并在文本编辑器中打开,例如:
vi /home/jdoe/<ansible_project_name>/kernel-roles.yml
# vi /home/jdoe/<ansible_project_name>/kernel-roles.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此文件代表一个 playbook,通常包含了一组有特定顺序的任务(也称为 play )列表。这些任何会根据
inventory文件中选择的特定管理主机进行。将以下内容插入到文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow name键是可选的。它将一个任意字符串作为标签与该 play 关联,并确定该 play 的用途。Play 中的hosts键指定对其运行 play 的主机。此键的值或值可以作为被管理的主机的单独名称提供,也可以作为inventory文件中定义的一组主机提供。vars部分代表包含所选内核参数名称和值的变量列表。roles键指定系统角色将配置vars部分中提到的参数和值。注意您可以修改 playbook 中的内核参数及其值以符合您的需要。
(可选)验证 play 中的语法是否正确。
ansible-playbook --syntax-check kernel-roles.yml playbook: kernel-roles.yml
# ansible-playbook --syntax-check kernel-roles.yml playbook: kernel-roles.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 本例演示了对 playbook 的成功验证。
执行 playbook。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Ansible 运行 playbook 之前,会提示您输入密码,因此在受管主机上的用户能够切换到
root,这对于配置内核参数是必需的。recap 部分显示 play 成功完成所有受管主机 (
failed=0),并且已应用了 4 个内核参数 (changed=4)。- 重启您的受管主机并检查受影响的内核参数,以验证是否应用了更改并在重启后保留。
第 7 章 使用 rhc 系统角色注册系统 复制链接链接已复制到粘贴板!
rhc RHEL 系统角色使管理员能够使用红帽订阅管理(RHSM)和 Satellite 服务器自动注册多个系统。该角色还支持使用 Ansible ,进行与 Insights 相关配置和管理任务。
7.1. rhc 系统角色简介 复制链接链接已复制到粘贴板!
RHEL 系统角色是一组角色,为远程管理多个系统提供一致的配置接口。远程主机配置(rhc)系统角色使管理员能够轻松地将 RHEL 系统注册到 Red Hat Subscription Management (RHSM)和 Satellite 服务器。默认情况下,当使用 rhc 系统角色注册系统时,系统会连接到 Insights。另外,使用 rhc 系统角色,您可以:
- 配置到 Red Hat Insights 的连接
- 启用和禁用存储库
- 配置用于连接的代理
- 配置 Insights 修复以及自动更新
- 设置系统发行版本
- 配置 insights 标签
7.2. 使用 rhc 系统角色注册系统 复制链接链接已复制到粘贴板!
您可以使用 rhc RHEL 系统角色将您的系统注册到红帽。默认情况下,rhc RHEL 系统角色在注册系统时,会将系统连接到 Red Hat Insights。
先决条件
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建一个 vault 来保存敏感信息:
ansible-vault create secrets.yml New Vault password: password Confirm New Vault password: password
$ ansible-vault create secrets.yml New Vault password: password Confirm New Vault password: passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault create命令会创建一个加密的 vault 文件,并在编辑器中打开它。输入您要保存在密码库中的敏感数据,例如:activationKey: activation_key username: username password: password
activationKey: activation_key username: username password: passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
之后,您可以使用
ansible-vault edit secrets.yml命令编辑 vault 中的数据。可选:显示 vault 内容:
ansible-vault view secrets.yml
$ ansible-vault view secrets.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 playbook 文件,如
~/registration.yml,并根据您要执行的操作使用以下选项之一:要使用激活码和机构 ID (推荐)注册,请使用以下 playbook:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用用户名和密码注册,请使用以下 playbook:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行 playbook:
ansible-playbook ~/registration.yml --ask-vault-pass
# ansible-playbook ~/registration.yml --ask-vault-passCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3. 使用 rhc 系统角色通过 Satellite 注册系统 复制链接链接已复制到粘贴板!
当组织使用 Satellite 管理系统时,需要通过 Satellite 注册系统。您可以使用 rhc RHEL 系统角色通过 Satellite 远程注册您的系统。
先决条件
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建一个 vault 来保存敏感信息:
ansible-vault create secrets.yml New Vault password: password Confirm New Vault password: password
$ ansible-vault create secrets.yml New Vault password: password Confirm New Vault password: passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault create命令创建一个加密的文件,并在编辑器中打开它。输入您要保存在密码库中的敏感数据,例如:activationKey: activation_key
activationKey: activation_keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
之后,您可以使用
ansible-vault edit secrets.yml命令编辑 vault 中的数据。可选:显示 vault 内容:
ansible-vault view secrets.yml
$ ansible-vault view secrets.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
创建一个 playbook 文件,如
~/registration-sat.yml。 使用
~/registration-sat.yml中的以下文本,使用激活码和机构 ID 注册系统:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/registration-sat.yml --ask-vault-pass
# ansible-playbook ~/registration-sat.yml --ask-vault-passCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4. 使用 rhc 系统角色在注册后禁用到 Insights 的连接 复制链接链接已复制到粘贴板!
当使用 rhc RHEL 系统角色注册系统时,默认情况下角色会启用到 Red Hat Insights 的连接。如果需要,您可以使用 rhc 系统角色禁用它。
先决条件
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 系统已经注册。
流程
创建一个 playbook 文件,如
~/dis-insights.yml,并在其中添加以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/dis-insights.yml
# ansible-playbook ~/dis-insights.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5. 使用 rhc 系统角色启用存储库 复制链接链接已复制到粘贴板!
您可以使用 rhc RHEL 系统角色远程启用或禁用受管节点上的存储库。
先决条件
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 您有要在受管节点上启用或禁用的存储库的详情。
- 您已注册系统。
流程
创建一个 playbook 文件,如
~/configure-repos.yml:要启用存储库:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要禁用存储库:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行 playbook:
ansible-playbook ~/configure-repos.yml
# ansible-playbook ~/configure-repos.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.6. 使用 rhc 系统角色设置发行版本 复制链接链接已复制到粘贴板!
您可以将系统限制为只使用特定 RHEL 次版本的存储库,而不是最新版本的存储库。这样,您可以将您的系统锁定到特定的次版本。
先决条件
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 您知道您要锁定系统的次 RHEL 版本。请注意,您只能将系统锁定到主机当前运行的 RHEL 次版本或之后的次版本。
- 您已注册系统。
流程
创建一个 playbook 文件,如
~/release.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/release.yml
# ansible-playbook ~/release.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7. 在使用 rhc 系统角色注册主机时使用代理服务器 复制链接链接已复制到粘贴板!
如果您的安全限制只允许通过代理服务器访问互联网,您可以在使用 rhc RHEL 系统角色注册系统时在 playbook 中指定代理设置。
先决条件
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建一个 vault 来保存敏感信息:
ansible-vault create secrets.yml New Vault password: password Confirm New Vault password: password
$ ansible-vault create secrets.yml New Vault password: password Confirm New Vault password: passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault create命令创建一个加密的文件,并在编辑器中打开它。输入您要保存在密码库中的敏感数据,例如:username: username password: password proxy_username: proxyusernme proxy_password: proxypassword
username: username password: password proxy_username: proxyusernme proxy_password: proxypasswordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
之后,您可以使用
ansible-vault edit secrets.yml命令编辑 vault 中的数据。可选:显示 vault 内容:
ansible-vault view secrets.yml
$ ansible-vault view secrets.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 playbook 文件,如
~/configure-proxy.yml:要使用代理注册到 RHEL 客户门户网站:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要从 Red Hat Subscription Manager 服务的配置中删除代理服务器:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
运行 playbook:
ansible-playbook ~/configure-proxy.yml --ask-vault-pass
# ansible-playbook ~/configure-proxy.yml --ask-vault-passCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8. 使用 rhc 系统角色禁用 Insights 规则的自动更新 复制链接链接已复制到粘贴板!
您可以使用 rhc RHEL 系统角色禁用 Red Hat Insights 的自动集合规则更新。默认情况下,当您的系统连接到 Red Hat Insights 时,这个选项就启用了。您可以使用 rhc RHEL 系统角色禁用它。
如果禁用了此功能,您就存在使用过时的规则定义文件,且没有获得最新验证更新的风险。
先决条件
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 您已注册系统。
流程
创建一个 vault 来保存敏感信息:
ansible-vault create secrets.yml New Vault password: password Confirm New Vault password: password
$ ansible-vault create secrets.yml New Vault password: password Confirm New Vault password: passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault create命令创建一个加密的文件,并在编辑器中打开它。输入您要保存在密码库中的敏感数据,例如:username: username password: password
username: username password: passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
之后,您可以使用
ansible-vault edit secrets.yml命令编辑 vault 中的数据。可选:显示 vault 内容:
ansible-vault view secrets.yml
$ ansible-vault view secrets.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 playbook 文件,如
~/auto-update.yml,并将以下内容添加到其中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/auto-update.yml --ask-vault-pass
# ansible-playbook ~/auto-update.yml --ask-vault-passCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.9. 使用 rhc RHEL 系统角色禁用 Insights 修复 复制链接链接已复制到粘贴板!
您可以使用 rhc RHEL 系统角色将系统配置为自动更新动态配置。当将您的系统连接到 Red Hat Insights 时,它默认启用。如果需要,您可以禁用它。
使用 rhc 系统角色启用补救可确保您的系统在直接连接到红帽时已准备好补救。对于连接到 Satellite 或 Capsule 的系统,必须以不同的方式实现补救。有关 Red Hat Insights 补救的更多信息,请参阅 Red Hat Insights 补救指南。
先决条件
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 您已启用了 Insights 补救。
- 您已注册系统。
流程
要启用补救,请创建一个 playbook 文件,如
~/remediation.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/remediation.yml
# ansible-playbook ~/remediation.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.10. 使用 rhc 系统角色配置 Insights 标签 复制链接链接已复制到粘贴板!
您可以对系统过滤和分组使用标签。您还可以根据要求自定义标签。
先决条件
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建一个 vault 来保存敏感信息:
ansible-vault create secrets.yml New Vault password: password Confirm New Vault password: password
$ ansible-vault create secrets.yml New Vault password: password Confirm New Vault password: passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault create命令创建一个加密的文件,并在编辑器中打开它。输入您要保存在密码库中的敏感数据,例如:username: username password: password
username: username password: passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
之后,您可以使用
ansible-vault edit secrets.yml命令编辑 vault 中的数据。可选:显示 vault 内容:
ansible-vault view secrets.yml
$ ansible-vault view secrets.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个 playbook 文件,如
~/tags.yml,并将以下内容添加到其中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/remediation.yml --ask-vault-pass
# ansible-playbook ~/remediation.yml --ask-vault-passCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.11. 使用 RHC 系统角色取消系统注册 复制链接链接已复制到粘贴板!
如果您不再需要订阅服务,您可以从红帽取消注册系统。
先决条件
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 系统已经注册。
流程
要取消注册,请创建一个 playbook 文件,如
~/unregister.yml,并在其中添加以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/unregister.yml
# ansible-playbook ~/unregister.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 8 章 使用 RHEL 系统角色配置网络设置 复制链接链接已复制到粘贴板!
管理员可以使用 network RHEL 系统角色自动化与网络相关的配置和管理任务。
8.1. 使用网络 RHEL 系统角色和接口名称,使用静态 IP 地址配置以太网连接 复制链接链接已复制到粘贴板!
您可以使用 network RHEL 系统角色远程配置以太网连接。
例如,以下流程使用以下设置为 enp7s0 设备创建 NetworkManager 连接配置文件:
-
静态 IPv4 地址 -
192.0.2.1和/24子网掩码 -
静态 IPv6 地址 -
2001:db8:1::1和/64子网掩码 -
IPv4 默认网关 -
192.0.2.254 -
IPv6 默认网关 -
2001:db8:1::fffe -
IPv4 DNS 服务器 -
192.0.2.200 -
IPv6 DNS 服务器 -
2001:db8:1::ffbb -
DNS 搜索域 -
example.com
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 服务器配置中有一个物理或者虚拟以太网设备。
- 受管节点使用 NetworkManager 配置网络。
流程
创建包含以下内容的 playbook 文件,如
~/ethernet-static-IP.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/ethernet-static-IP.yml
# ansible-playbook ~/ethernet-static-IP.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2. 使用带有设备路径的网络 RHEL 系统角色使用静态 IP 地址配置以太网连接 复制链接链接已复制到粘贴板!
您可以使用 network RHEL 系统角色远程配置以太网连接。
您可以使用以下命令识别设备路径:
udevadm info /sys/class/net/<device_name> | grep ID_PATH=
# udevadm info /sys/class/net/<device_name> | grep ID_PATH=
例如,以下流程会使用以下设置为与 PCI ID 0000:00:0[1-3].0 表达式,而不是 0000:00:02.0 匹配的设备创建 NetworkManager 连接配置文件:
-
静态 IPv4 地址 -
192.0.2.1和/24子网掩码 -
静态 IPv6 地址 -
2001:db8:1::1和/64子网掩码 -
IPv4 默认网关 -
192.0.2.254 -
IPv6 默认网关 -
2001:db8:1::fffe -
IPv4 DNS 服务器 -
192.0.2.200 -
IPv6 DNS 服务器 -
2001:db8:1::ffbb -
DNS 搜索域 -
example.com
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 服务器配置中有一个物理或者虚拟以太网设备。
- 受管节点使用 NetworkManager 配置网络。
流程
创建包含以下内容的 playbook 文件,如
~/ethernet-static-IP.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例中的
match参数定义了 Ansible 将剧本应用到与 PCI ID0000:00:0[1-3].0匹配的设备,但没有0000:00:02.0设备。有关可以使用的特殊修饰符和通配符的详情,请查看/usr/share/ansible/roles/rhel-system-roles.network/README.md文件中的match参数描述。运行 playbook:
ansible-playbook ~/ethernet-static-IP.yml
# ansible-playbook ~/ethernet-static-IP.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. 使用的网络 RHEL 系统角色和接口名称,使用动态 IP 地址配置以太网连接 复制链接链接已复制到粘贴板!
您可以使用 network RHEL 系统角色远程配置以太网连接。对于具有动态 IP 地址设置的连接,NetworkManager 会为来自 DHCP 服务器的连接请求 IP 设置。
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 服务器配置中有一个物理或者虚拟以太网设备。
- 网络中有 DHCP 服务器
- 受管节点使用 NetworkManager 配置网络。
流程
创建包含以下内容的 playbook 文件,如
~/ethernet-dynamic-IP.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/ethernet-dynamic-IP.yml
# ansible-playbook ~/ethernet-dynamic-IP.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.4. 使用带有设备路径的网络 RHEL 系统角色,使用动态 IP 地址配置以太网连接 复制链接链接已复制到粘贴板!
您可以使用 network RHEL 系统角色远程配置以太网连接。对于具有动态 IP 地址设置的连接,NetworkManager 会为来自 DHCP 服务器的连接请求 IP 设置。
您可以使用以下命令识别设备路径:
udevadm info /sys/class/net/<device_name> | grep ID_PATH=
# udevadm info /sys/class/net/<device_name> | grep ID_PATH=
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 服务器配置中有一个物理或者虚拟以太网设备。
- 网络中有 DHCP 服务器。
- 受管主机使用 NetworkManager 配置网络。
流程
创建包含以下内容的 playbook 文件,如
~/ethernet-dynamic-IP.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例中的
match参数定义了 Ansible 将剧本应用到与 PCI ID0000:00:0[1-3].0匹配的设备,但没有0000:00:02.0设备。有关可以使用的特殊修饰符和通配符的详情,请查看/usr/share/ansible/roles/rhel-system-roles.network/README.md文件中的match参数描述。运行 playbook:
ansible-playbook ~/ethernet-dynamic-IP.yml
# ansible-playbook ~/ethernet-dynamic-IP.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.5. 使用 network RHEL 系统角色配置 VLAN 标记 复制链接链接已复制到粘贴板!
您可以使用 network RHEL 系统角色配置 VLAN 标记。这个示例在这个以太网连接之上添加了一个以太网连接和 ID 为 10 的 VLAN。作为子设备,VLAN 连接包含 IP、默认网关和 DNS 配置。
根据您的环境,相应地进行调整。例如:
-
要在其他连接中将 VLAN 用作端口(如绑定),请省略
ip属性,并在子配置中设置 IP 配置。 -
若要在 VLAN 中使用 team、bridge 或 bond 设备,请调整您在 VLAN 中使用的端口的
interface_name和类型属性。
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建包含以下内容的 playbook 文件,如
~/vlan-ethernet.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow VLAN 配置文件中的
parent属性将 VLAN 配置为在enp1s0设备之上运行。运行 playbook:
ansible-playbook ~/vlan-ethernet.yml
# ansible-playbook ~/vlan-ethernet.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.6. 使用 network RHEL 系统角色配置网络桥接 复制链接链接已复制到粘贴板!
您可以使用 network RHEL 系统角色配置 Linux 网桥。例如,使用它来配置使用两个以太网设备的网桥,并设置 IPv4 和 IPv6 地址、默认网关和 DNS 配置。
在网桥上设置 IP 配置,而不是在 Linux 网桥的端口上设置。
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 在服务器中安装两个或者两个以上物理或者虚拟网络设备。
流程
创建包含以下内容的 playbook 文件,如
~/bridge-ethernet.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/bridge-ethernet.yml
# ansible-playbook ~/bridge-ethernet.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.7. 使用 network RHEL 系统角色配置网络绑定 复制链接链接已复制到粘贴板!
您可以使用 network RHEL 系统角色来配置 Linux 绑定。例如,使用它来在 active-backup 模式中配置使用两个以太网设备的网络绑定,并设置 IPv4 和 IPv6 地址、默认网关和 DNS 配置。
在绑定上设置 IP 配置,而不是在 Linux 绑定的端口上设置。
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
- 在服务器中安装两个或者两个以上物理或者虚拟网络设备。
流程
创建包含以下内容的 playbook 文件,如
~/bond-ethernet.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/bond-ethernet.yml
# ansible-playbook ~/bond-ethernet.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.8. 使用 network RHEL 系统角色配置 IPoIB 连接 复制链接链接已复制到粘贴板!
您可以使用 网络 RHEL 系统角色为InfiniBand (IPoIB)设备上的 IP 远程创建 NetworkManager 连接配置文件。例如,通过运行 Ansible playbook,为 mlx4_ib0 接口远程添加具有以下设置的 InfiniBand 连接:
-
一个 IPoIB 设备 -
mlx4_ib0.8002 -
一个分区密钥
p_key-0x8002 -
静态
IPv4地址 -192.0.2.1,子网掩码为/24 -
一个静态
IPv6地址 -2001:db8:1::1,子网掩码为/64
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 您可以以可在受管主机上运行 playbook 的用户身份登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
-
一个名为
mlx4_ib0的 InfiniBand 设备被安装在受管节点上。 - 受管节点使用 NetworkManager 配置网络。
流程
创建一个 playbook 文件,如包含以下内容的
~/IPoIB.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您像本例所示设置了
p_key参数,请不要在 IPoIB 设备上设置interface_name参数。运行 playbook:
ansible-playbook ~/IPoIB.yml
# ansible-playbook ~/IPoIB.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在
managed-node-01.example.com主机上显示mlx4_ib0.8002设备的 IP 设置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示
mlx4_ib0.8002设备的分区密钥(P_Key):cat /sys/class/net/mlx4_ib0.8002/pkey 0x8002
# cat /sys/class/net/mlx4_ib0.8002/pkey 0x8002Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示
mlx4_ib0.8002设备的模式:cat /sys/class/net/mlx4_ib0.8002/mode datagram
# cat /sys/class/net/mlx4_ib0.8002/mode datagramCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.9. 使用 network RHEL 系统角色将来自特定子网的流量路由到不同的默认网关 复制链接链接已复制到粘贴板!
您可以使用基于策略的路由为来自特定子网的流量配置不同的默认网关。例如,您可以将 RHEL 配置为默认路由将所有流量路由到互联网供应商 A 的路由器。但是,从内部工作站子网接收的流量路由到供应商 B。
要远程和在多个节点上配置基于策略的路由,您可以使用 RHEL network 系统角色。在 Ansible 控制节点上执行此步骤。
此流程假设以下网络拓扑:
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户对其具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
-
受管节点使用
NetworkManager和firewalld服务。 您要配置的受管节点有 4 个网络接口:
-
enp7s0接口已连接到提供商 A 的网络。提供商网络中的网关 IP 为198.51.100.2,网络使用/30网络掩码。 -
enp1s0接口连接到提供商 B 的网络。提供商网络中的网关 IP 为192.0.2.2,网络使用/30网络掩码。 -
enp8s0接口已与连有内部工作站的10.0.0.0/24子网相连。 -
enp9s0接口已与连有公司服务器的203.0.113.0/24子网相连。
-
-
内部工作站子网中的主机使用
10.0.0.1作为默认网关。在此流程中,您可以将这个 IP 地址分配给路由器的enp8s0网络接口。 -
服务器子网中的主机使用
203.0.113.1作为默认网关。在此流程中,您可以将这个 IP 地址分配给路由器的enp9s0网络接口。
流程
创建包含以下内容的 playbook 文件,如
~/pbr.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/pbr.yml
# ansible-playbook ~/pbr.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在内部工作站子网的 RHEL 主机上:
安装
traceroute软件包:yum install traceroute
# yum install tracerouteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
traceroute工具显示到互联网上主机的路由:traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 10.0.0.1 (10.0.0.1) 0.337 ms 0.260 ms 0.223 ms 2 192.0.2.1 (192.0.2.1) 0.884 ms 1.066 ms 1.248 ms ...
# traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 10.0.0.1 (10.0.0.1) 0.337 ms 0.260 ms 0.223 ms 2 192.0.2.1 (192.0.2.1) 0.884 ms 1.066 ms 1.248 ms ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令的输出显示路由器通过
192.0.2.1,即提供商 B 的网络来发送数据包。
在服务器子网的 RHEL 主机上:
安装
traceroute软件包:yum install traceroute
# yum install tracerouteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
traceroute工具显示到互联网上主机的路由:traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 203.0.113.1 (203.0.113.1) 2.179 ms 2.073 ms 1.944 ms 2 198.51.100.2 (198.51.100.2) 1.868 ms 1.798 ms 1.549 ms ...
# traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 203.0.113.1 (203.0.113.1) 2.179 ms 2.073 ms 1.944 ms 2 198.51.100.2 (198.51.100.2) 1.868 ms 1.798 ms 1.549 ms ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令的输出显示路由器通过
198.51.100.2,即供应商 A 的网络来发送数据包。
在使用 RHEL 系统角色配置的 RHEL 路由器上:
显示规则列表:
ip rule list 0: from all lookup local 5: from 10.0.0.0/24 lookup 5000 32766: from all lookup main 32767: from all lookup default
# ip rule list 0: from all lookup local 5: from 10.0.0.0/24 lookup 5000 32766: from all lookup main 32767: from all lookup defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,RHEL 包含表
local、main和default的规则。显示表
5000中的路由:ip route list table 5000 0.0.0.0/0 via 192.0.2.2 dev enp1s0 proto static metric 100 10.0.0.0/24 dev enp8s0 proto static scope link src 192.0.2.1 metric 102
# ip route list table 5000 0.0.0.0/0 via 192.0.2.2 dev enp1s0 proto static metric 100 10.0.0.0/24 dev enp8s0 proto static scope link src 192.0.2.1 metric 102Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示接口和防火墙区:
firewall-cmd --get-active-zones external interfaces: enp1s0 enp7s0 trusted interfaces: enp8s0 enp9s0
# firewall-cmd --get-active-zones external interfaces: enp1s0 enp7s0 trusted interfaces: enp8s0 enp9s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
external区是否启用了伪装:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.10. 使用 network RHEL 系统角色配置带有 802.1X 网络身份验证的静态以太网连接 复制链接链接已复制到粘贴板!
使用 network RHEL 系统角色,您可以自动创建使用 802.1X 标准的以太网连接来验证客户端。例如,通过运行 Ansible playbook ,使用以下设置,为 enp1s0 接口远程添加一个以太网连接:
-
静态 IPv4 地址 -
192.0.2.1和/24子网掩码 -
静态 IPv6 地址 -
2001:db8:1::1和/64子网掩码 -
IPv4 默认网关 -
192.0.2.254 -
IPv6 默认网关 -
2001:db8:1::fffe -
IPv4 DNS 服务器 -
192.0.2.200 -
IPv6 DNS 服务器 -
2001:db8:1::ffbb -
DNS 搜索域 -
example.com -
使用
TLS可扩展身份验证协议(EAP)的 802.1X 网络身份验证.
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中
- 网络支持 802.1X 网络身份验证。
- 受管节点使用 NetworkManager。
control 节点上存在 TLS 身份验证所需的以下文件:
-
客户端密钥存储在
/srv/data/client.key文件中。 -
客户端证书存储在
/srv/data/client.crt文件中。 -
证书颁发机构(CA)证书存储在
/srv/data/ca.crt文件中。
-
客户端密钥存储在
流程
创建包含以下内容的 playbook 文件,如
~/enable-802.1x.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/enable-802.1x.yml
# ansible-playbook ~/enable-802.1x.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.11. 使用 network RHEL 系统角色在现有连接上设置默认网关 复制链接链接已复制到粘贴板!
您可以使用 network RHEL 系统角色来设置默认网关。
当您运行使用 network RHEL 系统角色的剧本时,如果设置的值与剧本中指定的名称不匹配,则系统角色会覆盖具有相同名称的现有的连接配置文件。因此,始终在剧本中指定网络连接配置文件的整个配置,即使 IP 配置已经存在。否则,角色会将这些值重置为默认值。
根据它是否已存在,流程使用如下设置创建或更新 enp1s0 连接配置文件:
-
静态 IPv4 地址 -
198.51.100.20,子网掩码为/24 -
静态 IPv6 地址 -
2001:db8:1::1和/64子网掩码 -
IPv4 默认网关 -
198.51.100.254 -
IPv6 默认网关 -
2001:db8:1::fffe -
IPv4 DNS 服务器 -
198.51.100.200 -
IPv6 DNS 服务器 -
2001:db8:1::ffbb -
DNS 搜索域 -
example.com
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建包含以下内容的 playbook 文件,如
~/ethernet-connection.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/ethernet-connection.yml
# ansible-playbook ~/ethernet-connection.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.12. 使用 network RHEL 系统角色配置一个静态路由 复制链接链接已复制到粘贴板!
您可以使用 network RHEL 系统角色配置静态路由。
当您运行使用 network RHEL 系统角色的剧本时,如果设置的值与剧本中指定的名称不匹配,则系统角色会覆盖具有相同名称的现有的连接配置文件。因此,始终在剧本中指定网络连接配置文件的整个配置,即使 IP 配置已经存在。否则,角色会将这些值重置为默认值。
根据它是否已存在,流程使用以下设置创建或更新 enp7s0 连接配置文件:
-
静态 IPv4 地址 -
192.0.2.1和/24子网掩码 -
静态 IPv6 地址 -
2001:db8:1::1和/64子网掩码 -
IPv4 默认网关 -
192.0.2.254 -
IPv6 默认网关 -
2001:db8:1::fffe -
IPv4 DNS 服务器 -
192.0.2.200 -
IPv6 DNS 服务器 -
2001:db8:1::ffbb -
DNS 搜索域 -
example.com 静态路由:
-
198.51.100.0/24,网关为192.0.2.10 -
2001:db8:2::/64,网关为2001:db8:1::10
-
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建包含以下内容的 playbook 文件,如
~/add-static-routes.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/add-static-routes.yml
# ansible-playbook ~/add-static-routes.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在受管节点上:
显示 IPv4 路由:
ip -4 route ... 198.51.100.0/24 via 192.0.2.10 dev enp7s0
# ip -4 route ... 198.51.100.0/24 via 192.0.2.10 dev enp7s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示 IPv6 路由:
ip -6 route ... 2001:db8:2::/64 via 2001:db8:1::10 dev enp7s0 metric 1024 pref medium
# ip -6 route ... 2001:db8:2::/64 via 2001:db8:1::10 dev enp7s0 metric 1024 pref mediumCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.13. 使用 network RHEL 系统角色配置 ethtool 卸载功能 复制链接链接已复制到粘贴板!
您可以使用 network RHEL 系统角色配置 NetworkManager 连接中的 ethtool 功能。
当您运行使用 network RHEL 系统角色的剧本时,如果设置的值与剧本中指定的名称不匹配,则系统角色会覆盖具有相同名称的现有的连接配置文件。因此,始终在剧本中指定网络连接配置文件的整个配置,例如,即使 IP 配置已经存在。否则,角色会将这些值重置为默认值。
根据它是否已存在,流程使用如下设置创建或更新 enp1s0 连接配置文件:
-
静态
IPv4地址 -198.51.100.20,子网掩码为/24 -
一个静态
IPv6地址 -2001:db8:1::1,子网掩码为/64 -
IPv4默认网关 -198.51.100.254 -
IPv6默认网关 -2001:db8:1::fffe -
IPv4DNS 服务器 -198.51.100.200 -
IPv6DNS 服务器 -2001:db8:1::ffbb -
DNS 搜索域 -
example.com ethtool功能:- 通用接收卸载(GRO):禁用
- 通用分段卸载(GSO):启用
- TX 流控制传输协议(SCTP)分段:禁用
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建一个 playbook 文件,如
~/configure-ethernet-device-with-ethtool-features.yml,其内容如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/configure-ethernet-device-with-ethtool-features.yml
# ansible-playbook ~/configure-ethernet-device-with-ethtool-features.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.14. 网络 RHEL 系统角色的网络状态 复制链接链接已复制到粘贴板!
network RHEL 系统角色支持 playbook 中的状态配置来配置设备。为此,请使用 network_state 变量,后面跟上状态配置。
在 playbook 中使用 network_state 变量的好处:
- 通过与状态配置结合使用声明方法,您可以配置接口,NetworkManager 会在后台为这些接口创建一个配置集。
-
使用
network_state变量,您可以指定您需要更改的选项,所有其他选项将保持不变。但是,使用network_connections变量,您必须指定所有设置来更改网络连接配置集。
例如,要使用动态 IP 地址设置创建以太网连接,请在 playbook 中使用以下 vars 块:
| 带有状态配置的 playbook | 常规 playbook |
|
|
|
例如,要仅更改您之前创建的动态 IP 地址设置的连接状态,请在 playbook 中使用以下 vars 块:
| 带有状态配置的 playbook | 常规 playbook |
|
|
|
第 9 章 使用系统角色配置 firewalld 复制链接链接已复制到粘贴板!
您可以使用 firewall 系统角色一次性在多个客户端上配置 firewalld 服务的设置。这个解决方案:
- 提供具有有效输入设置的接口。
-
将所有预期的
firewalld参数保存在一个地方。
在控制节点上运行 防火墙 角色后,系统角色会立即向受管节点应用 firewalld 参数,并使其在重启后保持不变。
9.1. firewall RHEL 系统角色简介 复制链接链接已复制到粘贴板!
RHEL 系统角色是一组用于 Ansible 自动化实用程序的内容。此内容与 Ansible 自动化工具一起提供了一致的配置界面,来远程管理多个系统。
RHEL 系统角色中的 rhel-system-roles.firewall 角色是为 firewalld 服务的自动配置而引入的。rhel-system-roles 软件包中包含这个系统角色以及参考文档。
要以自动化的方式在一个或多个系统上应用 firewalld 参数,请在 playbook 中使用 firewall 系统角色变量。playbook 是一个或多个以基于文本的 YAML 格式编写的 play 的列表。
您可以使用清单文件来定义您希望 Ansible 来配置的一组系统。
使用 firewall 角色,您可以配置许多不同的 firewalld 参数,例如:
- 区。
- 应允许哪些数据包的服务。
- 授权、拒绝或丢弃访问端口的流量。
- 区的端口或端口范围的转发。
9.2. 使用防火墙 RHEL 系统角色重置 firewalld 设置 复制链接链接已复制到粘贴板!
使用 firewall RHEL 系统角色,您可以将 firewalld 设置重置为其默认状态。如果在变量列表中添加 previous:replaced 参数,则系统角色会删除所有现有用户定义的设置,并将 firewalld 重置为默认值。如果将 previous:replaced 参数与其他设置相结合,则 firewall 角色会在应用新设置前删除所有现有设置。
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户对其具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建包含以下内容的 playbook 文件,如
~/reset-firewalld.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/configuring-a-dmz.yml
# ansible-playbook ~/configuring-a-dmz.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在受管节点上以
root用户身份运行这个命令,以检查所有区域:firewall-cmd --list-all-zones
# firewall-cmd --list-all-zonesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3. 将传入的流量从一个本地端口转发到不同的本地端口 复制链接链接已复制到粘贴板!
使用 firewall 角色,您可以远程配置 firewalld 参数,使其对多个受管主机有效。
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户对其具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建包含以下内容的 playbook 文件,如
~/port_forwarding.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/port_forwarding.yml
# ansible-playbook ~/port_forwarding.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在受管主机上显示
firewalld设置:firewall-cmd --list-forward-ports
# firewall-cmd --list-forward-portsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4. 使用系统角色配置端口 复制链接链接已复制到粘贴板!
您可以使用 RHEL firewall 系统角色为入站流量在本地防火墙中打开或关闭端口,并使新配置在重启后保留不变。例如,您可以配置默认区域,以允许 HTTPS 服务的传入流量。
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户对其具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建包含以下内容的 playbook 文件,如
~/opening-a-a-port.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow permanent: true选项可使新设置在重启后保持不变。运行 playbook:
ansible-playbook ~/opening-a-port.yml
# ansible-playbook ~/opening-a-port.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在受管节点上,验证与
HTTPS服务关联的443/tcp端口是否已打开:firewall-cmd --list-ports 443/tcp
# firewall-cmd --list-ports 443/tcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5. 使用 firewalld RHEL 系统角色配置 DMZ firewalld 区域 复制链接链接已复制到粘贴板!
作为系统管理员,您可以使用 firewall 系统角色在 enp1s0 接口上配置一个 dmz 区域,以允许到区域的 HTTPS 流量。这样,您可以让外部用户访问您的 web 服务器。
在 Ansible 控制节点上执行此步骤。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户对其具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建包含以下内容的 playbook 文件,如
~/configuring-a-dmz.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook ~/configuring-a-dmz.yml
# ansible-playbook ~/configuring-a-dmz.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在受管节点上,查看关于
dmz区的详细信息:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 10 章 系统角色中的 postfix 角色的变量 复制链接链接已复制到粘贴板!
postfix 角色变量允许用户安装、配置和启动 postfix 邮件传输代理 (MTA)。
本节中定义了以下角色变量:
-
postfix_conf:它包含所有支持的postfix配置参数的键/值对。默认情况下,postfix_conf没有值。
postfix_conf: relayhost: example.com
postfix_conf:
relayhost: example.com
如果您的场景需要删除任何现有配置并在干净 postfix 安装之上应用所需的配置,请在 postfix_conf 字典中指定 previous: replaced 选项:
带有 previous: replaced 选项的示例:
postfix_conf: relayhost: example.com previous: replaced
postfix_conf:
relayhost: example.com
previous: replaced
-
postfix_check:它会确定在启动postfix前是否执行了检查以验证配置更改。默认值为 true。
例如:
postfix_check: true
postfix_check: true
-
postfix_backup:它决定是否已创建了配置的一个备份副本。默认情况下,postfix_backup值为 false。
要覆盖以前的备份,请运行以下命令:
*cp /etc/postfix/main.cf /etc/postfix/main.cf.backup*
# *cp /etc/postfix/main.cf /etc/postfix/main.cf.backup*
如果 postfix_backup 值更改为 true,则还必须将 postfix_backup_multiple 值设为 false。
例如:
postfix_backup: true postfix_backup_multiple: false
postfix_backup: true
postfix_backup_multiple: false
-
postfix_backup_multiple:它决定角色是否生成配置的时间戳备份副本。
要保留多个备份副本,请运行以下命令:
*cp /etc/postfix/main.cf /etc/postfix/main.cf.$(date -Isec)*
# *cp /etc/postfix/main.cf /etc/postfix/main.cf.$(date -Isec)*
默认情况下,postfix _backup_multiple 的值为 true。postfix_backup_multiple:true 设置将覆盖 postfix_backup。如果要使用 postfix_backup,您必须设置 postfix_backup_multiple:false。
-
postfix_manage_firewall:将postfix角色与firewall角色集成,以管理端口访问。默认情况下,变量设为false。如果要从postfix角色自动管理端口访问,请将变量设置为true。 -
postfix_manage_selinux:将postfix角色与selinux角色集成,以管理端口访问。默认情况下,变量设为false。如果要从postfix角色自动管理端口访问,请将变量设置为true。
不能删除配置参数。在运行 postfix 角色之前,请将 postfix_conf 设置为所有必需的配置参数,并使用 file 模块删除 /etc/postfix/main.cf。
第 11 章 使用系统角色配置 SELinux 复制链接链接已复制到粘贴板!
11.1. selinux 系统角色简介 复制链接链接已复制到粘贴板!
RHEL 系统角色是 Ansible 角色和模块的集合,可为远程管理多个 RHEL 系统提供一致的配置界面。selinux 系统角色启用以下操作:
- 清理与 SELinux 布尔值、文件上下文、端口和登录相关的本地策略修改。
- 设置 SELinux 策略布尔值、文件上下文、端口和登录。
- 在指定文件或目录中恢复文件上下文。
- 管理 SELinux 模块。
下表提供了 selinux 系统角色中提供的输入变量概述。
| 角色变量 | 描述 | CLI 的替代方案 |
|---|---|---|
| selinux_policy | 选择保护目标进程或多级别安全保护的策略。 |
|
| selinux_state | 切换 SELinux 模式。 |
|
| selinux_booleans | 启用和禁用 SELinux 布尔值。 |
|
| selinux_fcontexts | 添加或删除 SELinux 文件上下文映射。 |
|
| selinux_restore_dirs | 在文件系统树中恢复 SELinux 标签。 |
|
| selinux_ports | 在端口上设置 SELinux 标签。 |
|
| selinux_logins | 将用户设置为 SELinux 用户映射。 |
|
| selinux_modules | 安装、启用、禁用或删除 SELinux 模块。 |
|
rhel-system-roles 软件包安装的 /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml 示例 playbook 演示了如何在 enforcing 模式下设置目标策略。playbook 还应用多个本地策略修改,并在 /tmp/test_dir/ 目录中恢复文件上下文。
有关 selinux 角色变量的详细参考,请安装 rhel-system-roles 软件包,并参阅 /usr/share/doc/rhel-system-roles/selinux/ 目录中的 README.md 或 README.html 文件。
11.2. 使用 selinux 系统角色在多个系统中应用 SELinux 设置 复制链接链接已复制到粘贴板!
按照以下步骤,在已验证的 SELinux 设置中准备并应用 Ansible playbook。
前提条件
-
有访问一个或多个受管节点的权限,这是您要使用
selinux系统角色配置的系统。 对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core和rhel-system-roles软件包已安装 。 - 列出受管节点的清单文件。
-
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 软件包提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。RHEL 通过 AppStream 软件仓库提供此软件包,它有一个有限的支持范围。如需更多信息,请参阅 RHEL 9 和 RHEL 8.6 及更新的 AppStream 软件仓库文档中的 Ansible Core 软件包的支持范围。
- 列出受管节点的清单文件。
流程
准备您的 playbook。您可以从头开始,或修改作为
rhel-system-roles软件包的一部分安装的示例 playbook:cp /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml my-selinux-playbook.yml vi my-selinux-playbook.yml
# cp /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml my-selinux-playbook.yml # vi my-selinux-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 更改 playbook 的内容,使其适合您的场景。例如,以下部分确保系统安装并启用
selinux-local-1.ppSELinux 模块:selinux_modules: - { path: "selinux-local-1.pp", priority: "400" }selinux_modules: - { path: "selinux-local-1.pp", priority: "400" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改,然后退出文本编辑器。
在 host1、host2 和 host3 系统上运行您的 playbook:
ansible-playbook -i host1,host2,host3 my-selinux-playbook.yml
# ansible-playbook -i host1,host2,host3 my-selinux-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 12 章 使用 RHEL 系统角色配置日志记录 复制链接链接已复制到粘贴板!
作为系统管理员,您可以使用 logging 系统角色将 RHEL 主机配置为日志服务器,从很多客户端系统收集日志。
12.1. 日志记录系统角色 复制链接链接已复制到粘贴板!
使用日志记录系统角色,您可以在本地和远程主机上部署日志配置。
要在一个或多个系统中应用 logging 系统角色,您可以在 playbook 中定义日志配置。playbook 是一个或多个 play 的列表。playbook 是人类可读的,它们采用 YAML 格式编写。如需有关 playbook 的更多信息,请参阅 Ansible 文档中的 使用 playbook。
您要根据 playbook 配置的系统集合在 清单文件中 定义。如需有关创建和使用清单的更多信息,请参阅 Ansible 文档中的如何构建您的清单。
日志记录解决方案提供多种读取日志和多个日志记录输出的方法。
例如,日志记录系统可接受以下输入:
- 本地文件、
-
systemd/journal, - 网络中的另一个日志记录系统。
另外,日志记录系统还可有以下输出:
-
日志存储在
/var/log目录中的本地文件中, - 日志被发送到 Elasticsearch ,
- 日志被转发到另一个日志系统。
使用 logging 系统角色,您可以组合输入和输出以适合您的场景。例如,您可以配置一个日志解决方案,将来自 日志 的输入存储在本地文件中,而从文件读取的输入则被转发到另一个日志系统,并存储在本地日志文件中。
12.2. logging 系统角色参数 复制链接链接已复制到粘贴板!
在 logging 系统角色 playbook 中,您可以在 logging_inputs 参数中定义输入,在 logging_outputs 参数中定义输出,以及在 logging_flows 参数中定义输入和输出之间的关系。logging 系统角色使用附加选项处理这些变量来配置日志记录系统。您还可以启用加密或自动端口管理。
目前,logging 系统角色中唯一可用的日志记录系统是 Rsyslog。
logging_inputs:日志记录解决方案的输入列表。-
名称:输入的唯一名称。用于logging_flows: 输入列表以及生成的config文件名称的一部分。 类型:输入元素的类型。type 指定与roles/rsyslog/{tasks,vars}/inputs/中的目录名称相对应的任务类型。基本:配置systemd日志或unix套接字输入。-
kernel_message:如果设为true,则加载imklog。默认值为false。 -
使用_imuxsock:使用imuxsock而不是imjournal。默认值为false。 -
ratelimit_burst:可在ratelimit_interval内发送的最大消息数。如果use_imuxsock为 false,则默认为20000。如果use_imuxsock为 true,则默认为200。 -
ratelimit_interval: 用于评估ratelimit_burst的间隔。如果use_imuxsock为 false,则默认为 600 秒。如果use_imuxsock为 true,则默认为 0。0 表示关闭速率限制。 -
persist_state_interval: Journal 状态保留每个值的消息。默认为10。仅在use_imuxsock为 false 时有效。
-
-
文件:输入配置本地文件输入。 -
远程:输入通过网络配置来自其他日志记录系统的输入。
-
state:配置文件的状态。present或absent。默认为present。
-
logging_outputs:日志记录解决方案的输出列表。-
文件:输出将输出配置为本地文件。 -
转发: 输出配置输出到另一个日志记录系统。 -
remote_files:输出将输出配置为另一个日志记录系统到本地文件。
-
logging_flows:定义logging_inputs和logging_outputs之间关系的流列表。logging_flows变量具有以下键:-
名称:流的唯一名称 -
输入:logging_inputs名称值列表 -
输出:logging_outputs名称值列表。
-
-
logging_manage_firewall:如果设为true,变量将使用firewall角色自动管理来自logging角色的端口访问。 -
logging_manage_selinux:如果设为true,变量使用selinux角色自动管理logging角色的端口访问。
12.3. 应用 本地 日志记录系统角色 复制链接链接已复制到粘贴板!
准备并应用 Ansible playbook,以便对一组独立的机器配置日志记录解决方案。每台机器在本地记录日志。
先决条件
-
对一个或多个 受管节点 的访问和权限,这些节点是您要使用
logging系统角色配置的系统。 对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core和rhel-system-roles软件包已安装 。
-
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 软件包提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。RHEL 通过 AppStream 软件仓库提供此软件包,它有一个有限的支持范围。如需更多信息,请参阅 RHEL 9 和 RHEL 8.6 及更新的 AppStream 软件仓库文档中的 Ansible Core 软件包的支持范围。
- 列出受管节点的清单文件。
您不必安装 rsyslog 软件包,因为系统管理员在部署时会安装 rsyslog。
流程
创建定义所需角色的 playbook:
创建新 YAML 文件,并在文本编辑器中打开,例如:
vi logging-playbook.yml
# vi logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 插入以下内容:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
对特定清单运行 playbook:
ansible-playbook -i inventory-file /path/to/file/logging-playbook.yml
# ansible-playbook -i inventory-file /path/to/file/logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
inventory-file是清单文件。 -
logging-playbook.yml是您使用的 playbook。
-
验证
测试
/etc/rsyslog.conf文件的语法:rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.
# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证系统是否向日志发送信息:
发送测试信息:
logger test
# logger testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看
/var/log/messages日志,例如:cat /var/log/messages Aug 5 13:48:31 hostname root[6778]: test
# cat /var/log/messages Aug 5 13:48:31 hostname root[6778]: testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中 'hostname' 是客户端系统的主机名。请注意,该日志包含输入 logger 命令的用户的用户名,本例中为
root。
12.4. 过滤本地日志记录系统角色中的 logging 复制链接链接已复制到粘贴板!
您可以部署一个日志解决方案,该方案基于 rsyslog 属性的过滤器过滤日志。
先决条件
-
对一个或多个 受管节点 的访问和权限,这些节点是您要使用
logging系统角色配置的系统。 对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
- 安装了 Red Hat Ansible Core
-
rhel-system-roles软件包已安装 - 列出受管节点的清单文件。
您不必安装 rsyslog 软件包,因为系统管理员在部署时会安装 rsyslog。
流程
使用以下内容创建新的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用这个配置,包含
error字符串的所有消息都会记录在/var/log/errors.log中,所有其他消息都记录在/var/log/others.log中。您可以将
error属性值替换为您要过滤的字符串。您可以根据您的偏好修改变量。
可选:验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
测试
/etc/rsyslog.conf文件的语法:rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.
# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证系统是否向日志发送包含
error字符串的信息:发送测试信息:
logger error
# logger errorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查看
/var/log/errors.log日志,例如:cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: error
# cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: errorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
hostname是客户端系统的主机名。请注意,该日志包含输入 logger 命令的用户的用户名,本例中为root。
12.5. 使用 logging 系统角色应用远程日志解决方案 复制链接链接已复制到粘贴板!
按照以下步骤准备并应用 Red Hat Ansible Core playbook 来配置远程日志记录解决方案。在本 playbook 中,一个或多个客户端从 systemd-journal 获取日志,并将它们转发到远程服务器。服务器从 remote_rsyslog 和 remote_files 接收远程输入,并将日志输出到由远程主机名命名的目录中的本地文件。
先决条件
-
对一个或多个 受管节点 的访问和权限,这些节点是您要使用
logging系统角色配置的系统。 对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core和rhel-system-roles软件包已安装 。 - 列出受管节点的清单文件。
-
您不必安装 rsyslog 软件包,因为系统管理员在部署时会安装 rsyslog。
流程
创建定义所需角色的 playbook:
创建新 YAML 文件,并在文本编辑器中打开,例如:
vi logging-playbook.yml
# vi logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容插入到文件中:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
host1.example.com是日志服务器。注意您可以修改 playbook 中的参数以符合您的需要。
警告日志解决方案只适用于在服务器或者客户端系统的 SELinux 策略中定义的端口并在防火墙中打开。默认 SELinux 策略包括端口 601、514、6514、10514 和 20514。要使用其他端口,请修改客户端和服务器系统上的 SELinux 策略。
创建列出您的服务器和客户端的清单文件:
创建新文件并在文本编辑器中打开该文件,例如:
vi inventory.ini
# vi inventory.iniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将以下内容插入到清单文件中:
[servers] server ansible_host=host1.example.com [clients] client ansible_host=host2.example.com
[servers] server ansible_host=host1.example.com [clients] client ansible_host=host2.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
host1.example.com是日志服务器。 -
host2.example.com是日志客户端。
-
对清单运行 playbook。
ansible-playbook -i /path/to/file/inventory.ini /path/to/file/_logging-playbook.yml
# ansible-playbook -i /path/to/file/inventory.ini /path/to/file/_logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
inventory.ini是清单文件。 -
logging-playbook.yml是您创建的 playbook。
-
验证
在客户端和服务器系统上测试
/etc/rsyslog.conf文件的语法:rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.
# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证客户端系统向服务器发送信息:
在客户端系统中发送测试信息:
logger test
# logger testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在服务器系统上,查看
/var/log/messages日志,例如:cat /var/log/messages Aug 5 13:48:31 host2.example.com root[6778]: test
# cat /var/log/messages Aug 5 13:48:31 host2.example.com root[6778]: testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中
host2.example.com是客户端系统的主机名。请注意,该日志包含输入 logger 命令的用户的用户名,本例中为root。
12.6. 使用带有 TLS 的 logging 系统角色 复制链接链接已复制到粘贴板!
传输层安全性(TLS)是一种加密协议,旨在在计算机网络上安全地进行通信。
作为管理员,您可以使用 logging RHEL 系统角色使用红帽 Ansible Automation Platform 配置日志的安全传输。
12.6.1. 配置带有 TLS 的客户端日志 复制链接链接已复制到粘贴板!
您可以使用 logging 系统角色在 RHEL 系统上配置日志,这些日志记录在本地计算机上,并通过运行 Ansible playbook 将日志转发到带有 TLS 的远程日志系统。
此流程对 Ansible 清单中所有客户端组中的主机配置 TLS。TLS 对信息的传输进行加密,确保日志在网络安全传输。
先决条件
- 您有在要配置 TLS 的受管节点上运行 playbook 的权限。
- 受管节点列在控制节点上的清单文件中。
-
ansible和rhel-system-roles软件包已安装在控制节点上。
流程
使用以下内容创建一个
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow playbook 使用以下参数:
logging_pki_files-
使用这个参数您可以配置 TLS,并且必须传递
ca_cert_src、cert_src和private_key_src参数。 ca_cert-
表示 CA 证书的路径。默认路径为
/etc/pki/tls/certs/ca.pem,文件名由用户设置。 cert-
表示证书的路径。默认路径为
/etc/pki/tls/certs/server-cert.pem,文件名由用户设置。 private_key-
表示私钥的路径。默认路径为
/etc/pki/tls/private/server-key.pem,文件名由用户设置。 ca_cert_src-
代表复制到目标主机的本地 CA 证书文件路径。如果指定了
ca_cert,则会将其复制到该位置。 cert_src-
代表复制到目标主机的本地证书文件路径。如果指定了
cert,则会将其复制到该位置。 private_key_src-
表示复制到目标主机的本地密钥文件的路径。如果指定了
private_key,则会将其复制到该位置。 tls-
使用此参数可确保在网络上安全地传输日志。如果不想要安全包装程序,您可设置
tls: true。
验证 playbook 语法:
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file playbook.yml
# ansible-playbook -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6.2. 配置带有 TLS 的服务器日志 复制链接链接已复制到粘贴板!
您可以使用 logging 系统角色在 RHEL 系统中将日志配置为服务器,并通过运行 Ansible playbook 从带有 TLS 的远程日志系统接收日志。
此流程对 Ansible 清单中主机组中的所有主机配置 TLS。
先决条件
- 您有在要配置 TLS 的受管节点上运行 playbook 的权限。
- 受管节点列在控制节点上的清单文件中。
-
ansible和rhel-system-roles软件包已安装在控制节点上。
流程
使用以下内容创建一个
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow playbook 使用以下参数:
logging_pki_files-
使用这个参数您可以配置 TLS,并且必须传递
ca_cert_src、cert_src和private_key_src参数。 ca_cert-
表示 CA 证书的路径。默认路径为
/etc/pki/tls/certs/ca.pem,文件名由用户设置。 cert-
表示证书的路径。默认路径为
/etc/pki/tls/certs/server-cert.pem,文件名由用户设置。 private_key-
表示私钥的路径。默认路径为
/etc/pki/tls/private/server-key.pem,文件名由用户设置。 ca_cert_src-
代表复制到目标主机的本地 CA 证书文件路径。如果指定了
ca_cert,则会将其复制到该位置。 cert_src-
代表复制到目标主机的本地证书文件路径。如果指定了
cert,则会将其复制到该位置。 private_key_src-
表示复制到目标主机的本地密钥文件的路径。如果指定了
private_key,则会将其复制到该位置。 tls-
使用此参数可确保在网络上安全地传输日志。如果不想要安全包装程序,您可设置
tls: true。
验证 playbook 语法:
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file playbook.yml
# ansible-playbook -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.7. 使用带有 RELP 的 logging 系统角色 复制链接链接已复制到粘贴板!
可靠的事件日志协议(RELP)是一种通过 TCP 网络记录数据和消息的网络协议。它确保了事件消息的可靠传递,您可以在不容许任何消息丢失的环境中使用它。
RELP 发送者以命令的形式传输日志条目,接收者在处理后确认这些条目。为确保一致性,RELP 将事务数保存到传输的命令中,以便进行任何类型的消息恢复。
您可以考虑在 RELP 客户端和 RELP Server 间的远程日志系统。RELP 客户端将日志传送给远程日志系统,RELP 服务器接收由远程日志系统发送的所有日志。
管理员可以使用 logging 系统角色将日志系统配置为可靠地发送和接收日志条目。
12.7.1. 配置带有 RELP 的客户端日志 复制链接链接已复制到粘贴板!
您可以使用 logging 系统角色在 RHEL 系统中配置日志,这些日志记录在本地机器上,并通过运行 Ansible playbook 来将日志传送到带有 RELP 的远程日志系统。
此流程对 Ansible 清单中 客户端 组中的所有主机配置 RELP。RELP 配置使用传输层安全(TLS)来加密消息传输,保证日志在网络上安全传输。
先决条件
- 您有在要配置 RELP 的受管节点上运行 playbook 的权限。
- 受管节点列在控制节点上的清单文件中。
-
ansible和rhel-system-roles软件包已安装在控制节点上。
流程
使用以下内容创建一个
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow playbook 使用以下设置:
-
target: 这是一个必需的参数,用于指定运行远程日志系统的主机名。 -
端口:显示远程日志记录系统正在侦听的端口号。 TLS:确保通过网络安全地传输日志。如果您不想要安全打包程序,可以将tls变量设置为false。在与 RELP 工作时,默认的tls参数被设置为 true,且需要密钥/证书和 triplets {ca_cert、cert、private_key} 和/或 {ca_cert_src,cert_src,private_key_src}。-
如果设置了 {
ca_cert_src,cert_src,private_key_src} triplet ,默认位置/etc/pki/tls/certs和/etc/pki/tls/private被用作受管节点上的目的地,来从控制节点传输文件。在这种情况下,文件名与 triplet 中的原始名称相同 -
如果设置了 {
ca_cert,cert,private_key} triplet,则在日志配置之前,文件应位于默认路径上。 - 如果同时设置了 triplet,则会将文件从本地路径从控制节点传输到受管节点的特定路径。
-
如果设置了 {
-
ca_cert:代表 CA 证书的路径。默认路径为/etc/pki/tls/certs/ca.pem,文件名由用户设置。 -
认证:代表证书的路径。默认路径为/etc/pki/tls/certs/server-cert.pem,文件名由用户设置。 -
private_key:代表私钥的路径。默认路径为/etc/pki/tls/private/server-key.pem,文件名由用户设置。 -
ca_cert_src:代表本地 CA 证书文件路径,该文件路径被复制到目标主机。如果指定了 ca_cert,则会将其复制到该位置。 -
cert_src: 代表复制到目标主机的本地证书文件路径。如果指定了 cert ,则会将其复制到该位置。 -
private_key_src: 代表复制到目标主机的本地密钥文件路径。如果指定了 private_key,则会将其复制到该位置。 -
pki_authmode:接受身份验证模式作为名称或指纹。 -
permitted_servers:日志客户端允许通过 TLS 连接和发送日志的服务器列表。 -
输入:日志记录输入字典列表。 -
输出:日志输出字典列表。
-
可选:验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook -i inventory_file playbook.yml
# ansible-playbook -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.7.2. 配置带有 RELP 的服务器日志 复制链接链接已复制到粘贴板!
您可以使用 logging 系统角色将 RHEL 系统中的日志配置为服务器,并通过运行 Ansible playbook 从带有 RELP 的远程日志系统接收日志。
此流程对 Ansible 清单中 服务器 组中的所有主机配置 RELP。RELP 配置使用 TLS 加密消息传输,以保证在网络上安全地传输日志。
先决条件
- 您有在要配置 RELP 的受管节点上运行 playbook 的权限。
- 受管节点列在控制节点上的清单文件中。
-
ansible和rhel-system-roles软件包已安装在控制节点上。
流程
使用以下内容创建一个
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow playbook 使用以下设置:
-
端口:显示远程日志记录系统正在侦听的端口号。 TLS:确保通过网络安全地传输日志。如果您不想要安全打包程序,可以将tls变量设置为false。在与 RELP 工作时,默认的tls参数被设置为 true,且需要密钥/证书和 triplets {ca_cert、cert、private_key} 和/或 {ca_cert_src,cert_src,private_key_src}。-
如果设置了 {
ca_cert_src,cert_src,private_key_src} triplet ,默认位置/etc/pki/tls/certs和/etc/pki/tls/private被用作受管节点上的目的地,来从控制节点传输文件。在这种情况下,文件名与 triplet 中的原始名称相同 -
如果设置了 {
ca_cert,cert,private_key} triplet,则在日志配置之前,文件应位于默认路径上。 - 如果同时设置了 triplet,则会将文件从本地路径从控制节点传输到受管节点的特定路径。
-
如果设置了 {
-
ca_cert:代表 CA 证书的路径。默认路径为/etc/pki/tls/certs/ca.pem,文件名由用户设置。 -
认证:代表证书的路径。默认路径为/etc/pki/tls/certs/server-cert.pem,文件名由用户设置。 -
private_key:代表私钥的路径。默认路径为/etc/pki/tls/private/server-key.pem,文件名由用户设置。 -
ca_cert_src:代表本地 CA 证书文件路径,该文件路径被复制到目标主机。如果指定了 ca_cert,则会将其复制到该位置。 -
cert_src: 代表复制到目标主机的本地证书文件路径。如果指定了 cert ,则会将其复制到该位置。 -
private_key_src: 代表复制到目标主机的本地密钥文件路径。如果指定了 private_key,则会将其复制到该位置。 -
pki_authmode:接受身份验证模式作为名称或指纹。 -
permitted_clients:日志记录服务器允许通过 TLS 连接和发送日志的客户端列表。 -
输入:日志记录输入字典列表。 -
输出:日志输出字典列表。
-
可选:验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook -i inventory_file playbook.yml
# ansible-playbook -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 13 章 使用 journald RHEL 系统角色配置 systemd 日志 复制链接链接已复制到粘贴板!
使用 journald 系统角色,您可以自动化 systemd 日志,并使用 Red Hat Ansible Automation Platform 配置持久性日志记录。
13.1. journald RHEL 系统角色的变量 复制链接链接已复制到粘贴板!
journald 系统角色提供一组自定义 journald 日志记录服务行为的变量。角色包括以下变量:
| 角色变量 | Description |
|---|---|
|
|
使用此布尔值变量来配置 |
|
|
使用此变量指定日志文件可在磁盘上占用的最大大小(以 MB 为单位)。请参阅 |
|
|
使用此变量指定在遵守日志的 |
|
| 使用此变量指定单个日志文件的最大大小(以 MB 为单位)。 |
|
|
使用此布尔值变量配置 |
|
|
使用此布尔值变量将压缩应用到大于默认 512 字节的 |
|
|
使用此变量指定 |
13.2. 使用 journald 系统角色配置持久性日志记录 复制链接链接已复制到粘贴板!
作为系统管理员,您可以使用 journald 系统角色配置持久性日志记录。以下示例演示了如何在 playbook 中设置 journald 系统角色变量以达到以下目标:
- 配置持久性日志记录
- 为日志文件指定最大磁盘空间大小
-
配置
journald以为每个用户单独保留日志数据 - 定义同步间隔
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo权限。 - 要在其上运行此 playbook 的受管节点或受管节点组列在 Ansible 清单文件中。
流程
创建包含以下内容的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 因此,
journald服务会将日志在磁盘上永久保存到 2048 MB 的最大大小,并为每个用户单独保留日志数据。同步每分钟发生。可选:验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml -i inventory_file
# ansible-playbook --syntax-check playbook.yml -i inventory_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3. 其他资源 复制链接链接已复制到粘贴板!
-
journald.conf (5)手册页 -
ansible-playbook (1)手册页
第 14 章 使用 ssh 和 sshd RHEL 系统角色配置安全通信 复制链接链接已复制到粘贴板!
作为管理员,您可以使用 sshd 系统角色来配置 SSH 服务器,使用 ssh 系统角色来通过Red Hat Ansible Automation Platform 在任意数量的 RHEL 系统上同时配置 SSH 客户端。
14.1. ssh 服务器系统角色变量 复制链接链接已复制到粘贴板!
在 sshd 系统角色 playbook 中,您可以根据您的首选项和限制定义 SSH 配置文件的参数。
如果您没有配置这些变量,则系统角色会生成与 RHEL 默认值匹配的 sshd_config 文件。
在所有情况下,布尔值在 sshd 配置中都正确呈现为 yes 和 no。您可以使用 list 来定义多行配置项。例如:
sshd_ListenAddress: - 0.0.0.0 - '::'
sshd_ListenAddress:
- 0.0.0.0
- '::'
呈现为:
ListenAddress 0.0.0.0 ListenAddress ::
ListenAddress 0.0.0.0
ListenAddress ::
sshd 系统角色的变量
sshd_enable-
如果设置为
False,则角色将被完全禁用。默认值为True。 sshd_skip_defaults-
如果设置为
True,则系统角色不会应用默认值。相反,您可以使用sshddict 或sshd_Key变量来指定完整的配置默认值集合。默认值为False。 sshd_manage_service-
如果设置为
False,则服务不会被管理,这意味着它不会在引导时启用,也不会启动或重新加载。除非在容器内或 AIX 中运行,否则默认为True,因为 Ansible 服务模块目前不支持对 AIX 的启用。 sshd_allow_reload-
如果设置为
False,则sshd不会在配置更改后重新加载。这可帮助进行故障排除。要应用更改后的配置,请手动重新加载sshd。默认为与sshd_manage_service相同的值,但 AIX 除外,其中sshd_manage_service默认为False,但sshd_allow_reload默认为True。 sshd_install_service如果设置为
True,该角色将为sshd服务安装服务文件。这会覆盖操作系统中提供的文件。除非您要配置第二个实例,否则不要设置为True,您也可以更改sshd_service变量,。默认值为False。该角色使用以下变量指向的文件作为模板:
sshd_service_template_service (default: templates/sshd.service.j2) sshd_service_template_at_service (default: templates/sshd@.service.j2) sshd_service_template_socket (default: templates/sshd.socket.j2)
sshd_service_template_service (default: templates/sshd.service.j2) sshd_service_template_at_service (default: templates/sshd@.service.j2) sshd_service_template_socket (default: templates/sshd.socket.j2)Copy to Clipboard Copied! Toggle word wrap Toggle overflow sshd_service-
此变量更改
sshd服务名称,这对于配置第二个sshd服务实例非常有用。 sshd包含配置的字典。例如:
sshd: Compression: yes ListenAddress: - 0.0.0.0sshd: Compression: yes ListenAddress: - 0.0.0.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow sshd_OptionName您可以使用由
sshd_前缀和选项名称而不是 dict 组成的简单变量来定义选项。简单的变量覆盖sshd字典中的值。例如:sshd_Compression: no
sshd_Compression: noCopy to Clipboard Copied! Toggle word wrap Toggle overflow sshd_match和sshd_match_1到sshd_match_9-
字典列表或 只是匹配部分的字典。请注意,这些变量不会覆盖
sshd字典中定义的匹配块。所有源都会反映在生成的配置文件中。
sshd 系统角色的二级变量
您可以使用这些变量来覆盖与每个支持的平台对应的默认值。
sshd_packages- 您可以使用此变量来覆盖安装的软件包的默认列表。
sshd_config_owner、sshd_config_group和sshd_config_mode-
您可以使用这些变量为该角色生成的
openssh配置文件设置所有权和权限。 sshd_config_file-
此角色保存生成的
openssh服务器配置的路径。 sshd_config_namespace此变量的默认值为 null,这意味着角色定义配置文件的整个内容,包括系统默认值。或者,您也可以使用此变量从其他角色或从不支随时可访问目录的系统上的单个 playbook 中的多个位置调用此角色。
sshd_skip_defaults变量将被忽略,本例中没有使用系统默认值。设置此变量时,角色会将您指定的配置放置在给定命名空间下的现有配置段中。如果您的场景需要多次应用角色,您需要为每个应用程序选择不同的命名空间。
注意openssh配置文件的限制仍然适用。例如,对大多数配置选项,只有配置文件中指定的第一个选项有效。从技术上讲,角色会将段放在"Match all"块中,除非它们包含其他匹配块,以确保无论现有配置文件中之前匹配的块如何都将应用它们。这允许从不同角色调用中配置任何不冲突的选项。
sshd_binary-
openssh的sshd可执行文件的路径。 sshd_service-
sshd服务的名称。默认情况下,此变量包含目标平台所使用的sshd服务的名称。当角色使用sshd_install_service变量时,您还可以使用它来设置自定义sshd服务的名称。 sshd_verify_hostkeys-
默认值为
auto。当设置为auto时,这将列出生成的配置文件中存在的所有主机密钥,并生成所有不存在的路径。此外,权限和文件所有者被设置为默认值。如果该角色用于部署阶段来确保服务能够在第一次尝试时启动,则这非常有用。若要禁用此检查,可将此变量设置为空列表[]。 sshd_hostkey_owner,sshd_hostkey_group,sshd_hostkey_mode-
使用这些变量来设置
sshd_verify_hostkeys的主机密钥的所有权和权限。 sshd_sysconfig-
在基于 RHEL 的系统上,这个变量配置
sshd服务的其它详细信息。如果设置为true,则此角色还会根据以下配置来管理/etc/sysconfig/sshd配置文件:默认值为false。 sshd_sysconfig_override_crypto_policy-
在 RHEL 中,当设为
true时,这个变量会覆盖系统范围的加密策略。默认值为false。 sshd_sysconfig_use_strong_rng-
在基于 RHEL 的系统上,此变量可以强制
sshd使用给定的字节数作为参数来重新设置openssl随机数字生成器的种子。默认值为0,它会禁用此功能。如果系统没有硬件随机数字生成器,请不要打开此选项。
14.2. 使用 sshd 系统角色配置 OpenSSH 服务器 复制链接链接已复制到粘贴板!
您可以通过运行 Ansible playbook,使用 sshd 系统角色配置多个 SSH 服务器。
您可以将 sshd 系统角色用于更改 SSH 和 SSHD 配置的其他系统角色,例如身份管理 RHEL 系统角色。要防止配置被覆盖,请确保 sshd 角色使用命名空间(RHEL 8 和更早的版本)或 drop-in 目录(RHEL 9)。
先决条件
-
访问一个或多个 受管节点 的权限,这是您要使用
sshd系统角色配置的系统。 对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core和rhel-system-roles软件包已安装 。
-
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 软件包提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。RHEL 通过 AppStream 软件仓库提供此软件包,它有一个有限的支持范围。如需更多信息,请参阅 RHEL 9 和 RHEL 8.6 及更新的 AppStream 软件仓库文档中的 Ansible Core 软件包的支持范围。
- 列出受管节点的清单文件。
流程
复制
sshd系统角色的示例 playbook:cp /usr/share/doc/rhel-system-roles/sshd/example-root-login-playbook.yml path/custom-playbook.yml
# cp /usr/share/doc/rhel-system-roles/sshd/example-root-login-playbook.yml path/custom-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用文本编辑器打开复制的 playbook,例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow playbook 将受管节点配置为 SSH 服务器,以便:
-
禁用密码和
root用户登录 -
只对子网
192.0.2.0/24启用密码和root用户登录
您可以根据您的偏好修改变量。如需了解更多详细信息,请参阅 SSH 服务器系统角色变量。
-
禁用密码和
可选:验证 playbook 语法。
ansible-playbook --syntax-check path/custom-playbook.yml
# ansible-playbook --syntax-check path/custom-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
登录到 SSH 服务器:
ssh user1@10.1.1.1
$ ssh user1@10.1.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
-
user1是 SSH 服务器上的用户。 -
10.1.1.1是 SSH 服务器的 IP 地址。
-
检查 SSH 服务器上的
sshd_config文件的内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查您是否可以以 root 用户身份从
192.0.2.0/24子网连接到服务器:确定您的 IP 地址:
hostname -I 192.0.2.1
$ hostname -I 192.0.2.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 IP 地址在
192.0.2.1-192.0.2.254范围内,您可以连接到服务器。以
root用户身份连接到服务器:ssh root@10.1.1.1
$ ssh root@10.1.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.3. SSH 系统角色变量 复制链接链接已复制到粘贴板!
在 ssh 系统角色 playbook 中,您可以根据您的首选项和限制定义客户端 SSH 配置文件的参数。
如果没有配置这些变量,系统角色会生成一个与 RHEL 默认值匹配的全局 ssh_config 文件。
在所有情况下,布尔值在 ssh 配置中都正确地呈现为 yes 或 no。您可以使用 list 来定义多行配置项。例如:
LocalForward: - 22 localhost:2222 - 403 localhost:4003
LocalForward:
- 22 localhost:2222
- 403 localhost:4003
呈现为:
LocalForward 22 localhost:2222 LocalForward 403 localhost:4003
LocalForward 22 localhost:2222
LocalForward 403 localhost:4003
配置选项区分大小写。
ssh 系统角色的变量
ssh_user-
您可以定义系统角色修改用户特定配置的现有用户名。用户特定配置保存在给定用户的
~/.ssh/config中。默认值为 null,它会修改所有用户的全局配置。 ssh_skip_defaults-
默认值为
auto。如果设置为auto,则系统角色将写入系统范围的配置文件/etc/ssh/ssh_config,并在其中保留定义 RHEL 的默认值。例如,通过定义ssh_drop_in_name变量来创建一个 drop-in 配置文件,将自动禁用ssh_skip_defaults变量。 ssh_drop_in_name定义 drop-in 配置文件的名称,该文件放在系统范围的 drop-in 目录中。该名称在模板
/etc/ssh/ssh_config.d/{ssh_drop_in_name}.conf中使用,以引用要修改的配置文件。如果系统不支持 drop-in 目录,则默认值为 null。如果系统支持 drop-in 目录,则默认值为00-ansible。警告如果系统不支持 drop-in 目录,设置此选项将使 play 失败。
建议的格式是
NN-name,其中NN是用于订购配置文件的两位数字,name是内容或文件所有者的任何描述性名称。ssh- 包含配置选项和其相应值的字典。
ssh_OptionName-
您可以使用由
ssh_前缀和选项名称而不是字典组成的简单变量来定义选项。简单的变量覆盖ssh字典中的值。 ssh_additional_packages-
此角色会自动安装
openssh和openssh-clients软件包,这是最常见用例所需要的。如果您需要安装其他软件包,例如openssh-keysign以用于基于主机的身份验证,您可以在此变量中指定它们。 ssh_config_file角色保存产生的配置文件的路径。默认值:
-
如果系统有一个 drop-in 目录,则默认值通过模板
/etc/ssh/ssh_config.d/{ssh_drop_in_name}.conf来定义。 -
如果系统没有 drop-in 目录,则默认值为
/etc/ssh/ssh_config。 -
如果定义了
ssh_user变量,则默认值为~/.ssh/config。
-
如果系统有一个 drop-in 目录,则默认值通过模板
ssh_config_owner,ssh_config_group,ssh_config_mode-
所创建的配置文件的所有者、组和模式。默认情况下,文件的所有者是
root:root,模式是0644。如果定义了ssh_user,则模式为0600,所有者和组派生自ssh_user变量中指定的用户名。
14.4. 使用 ssh 系统角色配置 OpenSSH 客户端 复制链接链接已复制到粘贴板!
您可以通过运行 Ansible playbook,使用 ssh 系统角色配置多个 SSH 客户端。
您可以将 ssh 系统角色用于更改 SSH 和 SSHD 配置的其他系统角色,如身份管理 RHEL 系统角色。要防止配置被覆盖,请确保 ssh 角色使用置入目录(默认为 RHEL 8)。
先决条件
-
访问一个或多个 受管节点 的权限,这是您要使用
ssh系统角色配置的系统。 对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core和rhel-system-roles软件包已安装 。
-
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 软件包提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。RHEL 通过 AppStream 软件仓库提供此软件包,它有一个有限的支持范围。如需更多信息,请参阅 RHEL 9 和 RHEL 8.6 及更新的 AppStream 软件仓库文档中的 Ansible Core 软件包的支持范围。
- 列出受管节点的清单文件。
流程
使用以下内容创建一个新的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此 playbook 使用以下配置在受管节点上配置
root用户的 SSH 客户端首选项:- 压缩已启用。
-
ControlMaster 多路复用设置为
auto。 -
连接到
example.com主机的example别名是user1。 -
example主机别名已创建,它表示使用user1用户名连接到example.com主机。 - X11 转发被禁用。
另外,您还可以根据您的偏好修改这些变量。如需了解更多详细信息,请参阅
ssh系统角色变量。可选:验证 playbook 语法。
ansible-playbook --syntax-check path/custom-playbook.yml
# ansible-playbook --syntax-check path/custom-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file path/custom-playbook.yml
# ansible-playbook -i inventory_file path/custom-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
通过在文本编辑器中打开 SSH 配置文件来验证受管节点是否具有正确的配置,例如:
vi ~root/.ssh/config
# vi ~root/.ssh/configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在应用了上述示例 playbook 后,配置文件应具有以下内容:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.5. 将 sshd 系统角色用于非排除配置 复制链接链接已复制到粘贴板!
通常,应用 sshd 系统角色会覆盖整个配置。如果您之前调整了配置,例如使用不同的系统角色或 playbook,这可能会出现问题。要只对所选配置选项应用 sshd 系统角色,同时保持其他选项,您可以使用非排除的配置。
在 RHEL 8 和更早版本中,您可以使用配置段来应用非独占配置。
先决条件
-
访问一个或多个 受管节点 的权限,这是您要使用
sshd系统角色配置的系统。 对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core软件包已安装 。 - 列出受管节点的清单文件。
- 不同 RHEL 系统角色的 playbook。
-
流程
在 playbook 中添加带有
sshd_config_namespace变量的配置片断:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当您将 playbook 应用到清单时,角色会在
/etc/ssh/sshd_config文件中添加下列代码片段(如果没有的话)。# BEGIN sshd system role managed block: namespace <my-application> Match all AcceptEnv LANG LS_COLORS EDITOR # END sshd system role managed block: namespace <my-application>
# BEGIN sshd system role managed block: namespace <my-application> Match all AcceptEnv LANG LS_COLORS EDITOR # END sshd system role managed block: namespace <my-application>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
可选:验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml -i inventory_file
# ansible-playbook --syntax-check playbook.yml -i inventory_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 15 章 使用 vpn RHEL 系统角色使用 IPsec 配置 VPN 连接 复制链接链接已复制到粘贴板!
使用 vpn 系统角色,您可以使用 Red Hat Ansible Automation Platform 在 RHEL 系统中配置 VPN 连接。您可以使用它来设置主机到主机、网络到网络、VPN 远程访问服务器和网格配置。
对于主机到主机连接,角色使用默认参数在 vpn_connections 列表中的每一对主机之间设置 VPN 通道,包括根据需要生成密钥。另外,您还可以将其配置为在列出的所有主机之间创建 机会主义网格配置。该角色假定 hosts 下的主机名称与 Ansible 清单中使用的主机的名称相同,并且您可以使用这些名称来配置通道。
vpn RHEL 系统角色目前仅支持 Libreswan (即 IPsec 实现),作为 VPN 供应商。
15.1. 使用 vpn 系统角色使用 IPsec 创建主机到主机的 VPN 复制链接链接已复制到粘贴板!
您可以通过在控制节点上运行 Ansible playbook 来使用 vpn 系统角色配置主机到主机的连接,这将配置清单文件中列出的所有受管节点。
先决条件
-
对一个或多个 受管节点 的访问权限(即您要使用
vpn系统角色配置的系统)。 对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core和rhel-system-roles软件包已安装 。
-
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 软件包提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。RHEL 通过 AppStream 软件仓库提供此软件包,它有一个有限的支持范围。如需更多信息,请参阅 RHEL 9 和 RHEL 8.6 及更新的 AppStream 软件仓库文档中的 Ansible Core 软件包的支持范围。
- 列出受管节点的清单文件。
流程
使用以下内容创建一个新的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此 playbook 使用系统角色自动生成的密钥进行预共享密钥身份验证,来配置
managed_node1-to-managed_node2的连接。由于vpn_manage_firewall和vpn_manage_selinux都被设置为 true,vpn角色将使用firewall和selinux角色来管理vpn角色使用的端口。可选:将以下部分添加到主机的
vpn_connections列表中,来配置从受管主机到清单文件中未列出的外部主机之间的连接:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将配置另外两个连接:
managed_node1-to-external_node和managed_node2-to-external_node。
连接仅在受管节点上配置,而不在外部节点上配置。
可选: 您可以使用
vpn_connections中的附加部分为受管节点指定多个 VPN 连接,如控制平面和数据平面:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
可选: 您可以根据您的喜好修改变量。详情请查看
/usr/share/doc/rhel-system-roles/vpn/README.md文件。 可选:验证 playbook 语法。
ansible-playbook --syntax-check /path/to/file/playbook.yml -i /path/to/file/inventory_file
# ansible-playbook --syntax-check /path/to/file/playbook.yml -i /path/to/file/inventory_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i /path/to/file/inventory_file /path/to/file/playbook.yml
# ansible-playbook -i /path/to/file/inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在受管节点上,确认连接已成功载入:
ipsec status | grep connection.name
# ipsec status | grep connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 connection.name 替换为来自此节点的连接的名称,如
managed_node1-to-managed_node2。
默认情况下,从每个系统的角度来看,角色为其创建的每个连接生成一个描述性名称。例如,当在 managed_node1 和 managed_node2 之间创建连接时,此连接在 managed_node1 上的描述性名称为 managed_node1-to-managed_node2,但在 managed_node2 上,连接的描述性名称为 managed_node2-to-managed_node1。
在受管节点上,确认连接是否成功启动:
ipsec trafficstatus | grep connection.name
# ipsec trafficstatus | grep connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:如果连接没有成功加载,请输入以下命令来手动添加连接。这将提供更具体的信息,说明连接未能建立的原因:
ipsec auto --add connection.name
# ipsec auto --add connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意加载和启动连接过程中可能出现的任何错误都会在日志中报告,这些错误可以在
/var/log/pluto.log中找到。由于这些日志难以解析,因此请尝试手动添加连接来获得日志消息,而不是从标准输出中获得。
15.2. 使用 vpn 系统角色创建与 IPsec 的 opportunistic mesh VPN 连接 复制链接链接已复制到粘贴板!
您可以使用 vpn 系统角色来配置机会主义网格 VPN 连接,该连接通过在控制节点上运行 Ansible playbook 来使用证书进行身份验证,它将配置清单文件中列出的所有受管节点。
通过在 playbook 中定义 auth_method: cert 参数来配置用证书进行身份验证。vpn 系统角色假设 IPsec 网络安全服务(NSS)加密库(在 /etc/ipsec.d 目录中定义)包含必要的证书。默认情况下,节点名称用作证书的昵称。在本例中,这是 managed_node1。您可以使用清单中的 cert_name 属性来定义不同的证书名称。
在以下示例流程中,控制节点(您要从其运行 Ansible playbook 的系统)与两个受管节点(192.0.2.0/24)共享相同的无类别域间路由(CIDR)数,并且 IP 地址为 192.0.2.7。因此,控制节点属于为 CIDR 192.0.2.0/24 自动创建的私有策略。
为防止在操作期间出现 SSH 连接丢失,控制节点的清晰策略包含在策略列表中。请注意,在策略列表中还有一个项 CIDR 等于 default。这是因为此 playbook 覆盖了默认策略中的规则,以使其为私有,而非私有或清晰。
先决条件
对一个或多个 受管节点 的访问权限(即您要使用
vpn系统角色配置的系统)。-
在所有受管节点上,
/etc/ipsec.d目录中的 NSS 数据库包含对等身份验证所需的所有证书。默认情况下,节点名称用作证书的昵称。
-
在所有受管节点上,
对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core和rhel-system-roles软件包已安装 。
-
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 软件包提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。RHEL 通过 AppStream 软件仓库提供此软件包,它有一个有限的支持范围。如需更多信息,请参阅 RHEL 9 和 RHEL 8.6 及更新的 AppStream 软件仓库文档中的 Ansible Core 软件包的支持范围。
- 列出受管节点的清单文件。
流程
使用以下内容创建新的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意由于
vpn_manage_firewall和vpn_manage_selinux都被设置为 true,vpn角色将使用firewall和selinux角色来管理vpn角色使用的端口。-
可选: 您可以根据您的喜好修改变量。详情请查看
/usr/share/doc/rhel-system-roles/vpn/README.md文件。 可选:验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 16 章 使用 crypto-policies RHEL 系统角色设置自定义加密策略 复制链接链接已复制到粘贴板!
作为管理员,您可以使用 crypto_policies RHEL 系统角色在使用 Ansible Core 软件包的许多不同系统中快速一致地配置自定义加密策略。
16.1. crypto_policies 系统角色变量和事实 复制链接链接已复制到粘贴板!
在 crypto_policies 系统角色 playbook 中,您可以根据您的首选项和限制定义 crypto_policies 配置文件的参数。
如果没有配置任何变量,系统角色不会配置系统,只会报告事实。
为 crypto_policies 系统角色选择的变量
crypto_policies_policy- 确定系统角色应用到受管节点的加密策略。有关不同加密策略的详情,请参阅 系统范围的加密策略。
crypto_policies_reload-
如果设置为
yes,则目前受影响的服务ipsec、bind和sshd服务,在应用加密策略后重新加载。默认值为yes。 crypto_policies_reboot_ok-
如果设置为
yes,在系统角色更改了加密策略后需要重新启动,它会将crypto_policies_reboot_required设置为yes。默认值为no。
crypto_policies 系统角色设置的事实
crypto_policies_active- 列出当前选择的策略。
crypto_policies_available_policies- 列出系统上所有可用的策略。
crypto_policies_available_subpolicies- 列出系统上所有可用的子策略。
16.2. 使用 crypto_policies 系统角色设置自定义加密策略 复制链接链接已复制到粘贴板!
您可以使用 crypto_policies 系统角色从单个控制节点配置大量的受管节点。
先决条件
-
访问一个或多个受管节点的权限,这是您要使用
crypto_policies系统角色配置的系统。 对控制节点的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core和rhel-system-roles软件包已安装 。
-
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 软件包提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。RHEL 通过 AppStream 软件仓库提供此软件包,它有一个有限的支持范围。如需更多信息,请参阅 RHEL 9 和 RHEL 8.6 及更新的 AppStream 软件仓库文档中的 Ansible Core 软件包的支持范围。
- 列出受管节点的清单文件。
流程
使用以下内容创建新
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以将 FUTURE 值替换为您喜欢的加密策略,例如:
DEFAULT、LEGACY和FIPS:OSPP。crypto_policies_reboot_ok: true变量会导致系统在系统角色更改加密策略后重启系统。如需了解更多详细信息,请参阅 crypto_policies 系统角色变量和事实。
可选:验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file playbook.yml
# ansible-playbook -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在控制节点上,创建另一个 playbook,例如,名为
verify_playbook.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此 playbook 不更改系统上的任何配置,只报告受管节点上的活动策略。
运行同一个清单文件上的 playbook:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow "crypto_policies_active":变量显示受管节点上的活动策略。
第 17 章 使用 RHEL 系统角色配置 NBDE 复制链接链接已复制到粘贴板!
17.1. nbde_client 和 nbde_server 系统角色 (Clevis 和 Tang) 简介 复制链接链接已复制到粘贴板!
RHEL 系统角色是 Ansible 角色和模块的集合,可为远程管理多个 RHEL 系统提供一致的配置界面。
您可以使用 Ansible 角色使用 Clevis 和 Tang 自动部署基于策略的解密(PBD)解决方案。rhel-system-roles 包中包含了这些系统角色、相关的例子以及参考文档。
nbde_client 系统角色可让您以自动的方式部署多个 Clevis 客户端。请注意,nbde_client 角色只支持 Tang 绑定,您目前无法将其用于 TPM2 绑定。
nbde_client 角色需要已经使用 LUKS 加密的卷。此角色支持将 LUKS 加密卷绑定到一个或多个网络绑定(NBDE)服务器 - Tang 服务器。您可以使用密码短语保留现有的卷加密,或者将其删除。删除密码短语后,您只能使用 NBDE 解锁卷。当卷最初是使用在置备系统后会删除的临时密钥或密码进行加密时,这非常有用,
如果您同时提供密语和密钥文件,角色将使用您首先提供的那一个。如果找不到任何有效密语或密码,它将尝试从现有的绑定中检索密码短语。
PBD 将绑定定义为设备到插槽的映射。这意味着对同一个设备你可以有多个绑定。默认插槽是插槽 1。
nbde_client 角色也提供了 state 变量。使用 present 值来创建新绑定或更新现有绑定。与 clevis luks bind 命令不同,您可以使用 state: present 来覆盖其设备插槽中的现有绑定。absent 的值会删除指定的绑定。
使用 nbde_client 系统角色,您可以部署和管理 Tang 服务器作为自动磁盘加密解决方案的一部分。此角色支持以下功能:
- 轮转 Tang 密钥
- 部署和备份 Tang 密钥
17.2. 使用 nbde_server 系统角色设置多个 Tang 服务器 复制链接链接已复制到粘贴板!
按照以下步骤准备和应用包含您的 Tang 服务器设置的 Ansible playbook。
先决条件
-
对一个或多个 受管节点 的访问和权限,这些节点是您要使用
nbde_server系统角色配置的系统。 对控制节点的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
-
ansible-core和rhel-system-roles软件包已安装 。
-
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 软件包提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。RHEL 通过 AppStream 软件仓库提供此软件包,它有一个有限的支持范围。如需更多信息,请参阅 RHEL 9 和 RHEL 8.6 及更新的 AppStream 软件仓库文档中的 Ansible Core 软件包的支持范围。
- 列出受管节点的清单文件。
流程
准备包含 Tang 服务器设置的 playbook。您可以从头开始,或使用
/usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/目录中的一个 playbook 示例。cp /usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/simple_deploy.yml ./my-tang-playbook.yml
# cp /usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/simple_deploy.yml ./my-tang-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在您选择的文本编辑器中编辑 playbook,例如:
vi my-tang-playbook.yml
# vi my-tang-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 添加所需参数。以下 playbook 示例确保部署 Tang 服务器和密钥轮转:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意因为
nbde_server_manage_firewall和nbde_server_manage_selinux都被设置为 true,所以nbde_server角色将使用firewall和selinux角色来管理nbde_server角色使用的端口。应用完成的 playbook:
ansible-playbook -i inventory-file my-tang-playbook.yml
# ansible-playbook -i inventory-file my-tang-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:*
inventory-file是清单文件。*logging-playbook.yml是您使用的 playbook。
在安装了 Clevis 的系统上使用 grubby 工具来确保 Tang pin 的网络可用:
grubby --update-kernel=ALL --args="rd.neednet=1"
# grubby --update-kernel=ALL --args="rd.neednet=1"
17.3. 使用 nbde_client 系统角色设置多个 Clevis 客户端 复制链接链接已复制到粘贴板!
按照步骤准备和应用包含 Clevis 客户端设置的 Ansible playbook。
nbde_client 系统角色只支持 Tang 绑定。这意味着您目前无法将其用于 TPM2 绑定。
先决条件
-
对一个或多个 受管节点 的访问和权限,这些节点是您要使用
nbde_client系统角色配置的系统。 - 对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
- Ansible Core 软件包安装在控制机器上。
-
rhel-system-roles软件包安装在您要运行 playbook 的系统中。
流程
准备包含 Clevis 客户端设置的 playbook。您可以从头开始,或使用
/usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/目录中的一个 playbook 示例。cp /usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/high_availability.yml ./my-clevis-playbook.yml
# cp /usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/high_availability.yml ./my-clevis-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在您选择的文本编辑器中编辑 playbook,例如:
vi my-clevis-playbook.yml
# vi my-clevis-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 添加所需参数。以下 playbook 示例配置 Clevis 客户端,以便在两个 Tang 服务器中至少有一个可用时自动解锁两个 LUKS 加密卷:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用完成的 playbook:
ansible-playbook -i host1,host2,host3 my-clevis-playbook.yml
# ansible-playbook -i host1,host2,host3 my-clevis-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
通过使用在安装了 Clevis 的系统上的 grubby 工具来确保在早期引导期间 Tang pin 的网络可用:
grubby --update-kernel=ALL --args="rd.neednet=1"
# grubby --update-kernel=ALL --args="rd.neednet=1"
第 18 章 使用 RHEL 系统角色请求证书 复制链接链接已复制到粘贴板!
使用 certificate 系统角色,您可以使用 Red Hat Ansible Core 来发布和管理证书。
本章涵盖了以下主题:
18.1. certificate 系统角色 复制链接链接已复制到粘贴板!
使用 certificate 系统角色,您可以使用 Ansible Core 管理签发和续订 TLS 和 SSL 证书。
该角色使用 certmonger 作为证书提供者,目前支持发布和续订自签名证书及使用 IdM 集成认证机构(CA)。
您可以将 Ansible playbook 中的以下变量与 certificate 系统角色结合使用:
certificate_wait- 来指定任务是否应该等待要发布的证书。
certificate_requests- 来表示要发布的每个证书及其参数。
18.2. 使用 certificate 系统角色请求新的自签名证书 复制链接链接已复制到粘贴板!
使用 certificate 系统角色,您可以使用 Ansible Core 来发布自签名证书。
此过程使用 certmonger 提供者,并通过 getcert 命令请求证书。
默认情况下,certmonger 会在证书过期前自动尝试续订证书。您可以通过将 Ansible playbook 中的 auto_renew 参数设置为 no 来禁用此功能。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。
流程
可选: 创建一个清单文件,如
inventory.file:*touch inventory.file*
$ *touch inventory.file*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开清单文件并定义要请求证书的主机,例如:
[webserver] server.idm.example.com
[webserver] server.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 playbook 文件,如
request-certificate.yml:-
将
hosts设置为包含您要请求证书的主机,如webserver。 将
certificate_requests变量设置为包含以下项:-
将
name参数设置为证书的所需名称,如mycert。 -
将
dns参数设置为证书中包含的域,如*.example.com。 -
将
ca参数设置为self-sign。
-
将
在
roles下设置rhel-system-roles.certificate角色。这是本例的 playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
- 保存该文件。
运行 playbook:
*ansible-playbook -i inventory.file request-certificate.yml*
$ *ansible-playbook -i inventory.file request-certificate.yml*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.3. 使用 certificate 系统角色从 IdM CA 请求一个新证书 复制链接链接已复制到粘贴板!
使用 certificate 系统角色,您可以在使用带有集成证书颁发机构(CA)的 IdM 服务器时,使用 anible-core 来发布证书。因此,当使用 IdM 作为 CA 时,您可以高效且一致地为多个系统管理证书信任链。
此过程使用 certmonger 供应商,并通过 getcert 命令请求证书。
默认情况下,certmonger 会在证书过期前自动尝试续订证书。您可以通过将 Ansible playbook 中的 auto_renew 参数设置为 no 来禁用此功能。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。
流程
可选: 创建一个清单文件,如
inventory.file:*touch inventory.file*
$ *touch inventory.file*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开清单文件并定义要请求证书的主机,例如:
[webserver] server.idm.example.com
[webserver] server.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 playbook 文件,如
request-certificate.yml:-
将
hosts设置为包含您要请求证书的主机,如webserver。 将
certificate_requests变量设置为包含以下项:-
将
name参数设置为证书的所需名称,如mycert。 -
将
dns参数设置为证书中包含的域,如www.example.com。 -
将
principal参数设置为指定 Kerberos 主体,如HTTP/www.example.com@EXAMPLE.COM。 -
将
ca参数设置为ipa。
-
将
在
roles下设置rhel-system-roles.certificate角色。这是本例的 playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
- 保存该文件。
运行 playbook:
*ansible-playbook -i inventory.file request-certificate.yml*
$ *ansible-playbook -i inventory.file request-certificate.yml*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.4. 使用 certificate 系统角色指定证书颁发前或后要运行的命令 复制链接链接已复制到粘贴板!
使用 certificate 系统角色,您可以使用 Ansible Core 在签发或更新证书前后执行命令。
在以下示例中,管理员确保在为 www.example.com 发布或更新自签名证书前停止 httpd 服务,然后再重启该服务。
默认情况下,certmonger 会在证书过期前自动尝试续订证书。您可以通过将 Ansible playbook 中的 auto_renew 参数设置为 no 来禁用此功能。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。
流程
可选: 创建一个清单文件,如
inventory.file:*touch inventory.file*
$ *touch inventory.file*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开清单文件并定义要请求证书的主机,例如:
[webserver] server.idm.example.com
[webserver] server.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 playbook 文件,如
request-certificate.yml:-
将
hosts设置为包含您要请求证书的主机,如webserver。 将
certificate_requests变量设置为包含以下项:-
将
name参数设置为证书的所需名称,如mycert。 -
将
dns参数设置为证书中包含的域,如www.example.com。 -
将
ca参数设置为您要用来发布证书的 CA,如自签名。 -
将
run_before参数设置为在签发或续订证书之前要执行的命令,如systemctl stop httpd.service。 -
将
run_after参数设置为在签发或续订此证书后要执行的命令,如systemctl start httpd.service。
-
将
在
roles下设置rhel-system-roles.certificate角色。这是本例的 playbook 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将
- 保存该文件。
运行 playbook:
*ansible-playbook -i inventory.file request-certificate.yml*
$ *ansible-playbook -i inventory.file request-certificate.yml*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 19 章 使用 kdump RHEL 系统角色配置自动化崩溃转储 复制链接链接已复制到粘贴板!
要使用 Ansible 管理 kdump,您可以使用 kdump 角色,这是 RHEL 7.9 中可用的 RHEL 系统角色之一。
使用 kdump 角色可让您指定保存系统内存内容的位置,以便稍后进行分析。
19.1. kdump RHEL 系统角色 复制链接链接已复制到粘贴板!
kdump 系统角色可让您在多个系统上设置基本内核转储参数。
19.2. kdump 角色参数 复制链接链接已复制到粘贴板!
kdump RHEL 系统角色使用的参数有:
| 角色变量 | 描述 |
|---|---|
| kdump_path |
写入 |
19.3. 使用 RHEL 系统角色配置 kdump 复制链接链接已复制到粘贴板!
您可以通过运行 Ansible playbook,在多个系统上使用 kdump 系统角色来设置基本内核转储参数。
通过替换 /etc/kdump.conf文件,kdump 角色完全取代了受管主机的 kdump 配置。另外,如果应用了 kdump 角色,则之前的所有 kdump 设置也会被替换,即使它们没有被角色变量指定,也可以替换 /etc/sysconfig/kdump 文件。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 -
您有一个清单文件,其中列出了您要在其上部署
kdump的系统。
流程
使用以下内容创建新的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 20 章 使用 RHEL 系统角色管理本地存储 复制链接链接已复制到粘贴板!
要使用 Ansible 管理 LVM 和本地文件系统(FS),您可以使用 storage 角色,这是 RHEL 8 中提供的 RHEL 系统角色之一。
使用 存储 角色可让您自动管理多台机器上的磁盘和逻辑卷上的文件系统,以及从 RHEL 7.7 开始的所有 RHEL 版本。
有关 RHEL 系统角色的更多信息,以及如何应用它们,请参阅 RHEL 系统角色简介。
20.1. storage RHEL 系统角色简介 复制链接链接已复制到粘贴板!
存储 角色可以管理:
- 磁盘上未被分区的文件系统
- 完整的 LVM 卷组,包括其逻辑卷和文件系统
- MD RAID 卷及其文件系统
使用 storage 角色,您可以执行以下任务:
- 创建文件系统
- 删除文件系统
- 挂载文件系统
- 卸载文件系统
- 创建 LVM 卷组
- 删除 LVM 卷组
- 创建逻辑卷
- 删除逻辑卷
- 创建 RAID 卷
- 删除 RAID 卷
- 使用 RAID 创建 LVM 卷组
- 使用 RAID 删除 LVM 卷组
- 创建加密的 LVM 卷组
- 使用 RAID 创建 LVM 逻辑卷
20.2. 在 storage RHEL 系统角色中识别存储设备的参数 复制链接链接已复制到粘贴板!
您的 存储 角色配置只会影响您在以下变量中列出的文件系统、卷和池:
storage_volumes在所有要管理的未分区磁盘中的文件系统列表。
storage_volumes也可以包含raid卷。当前不支持的分区。
storage_pools要管理的池列表。
目前唯一支持的池类型是 LVM。使用 LVM 时,池代表卷组(VG)。每个池中都有一个要由角色管理的卷列表。对于 LVM,每个卷对应一个带文件系统的逻辑卷(LV)。
20.3. 在块设备中创建 XFS 文件系统的 Ansible playbook 示例 复制链接链接已复制到粘贴板!
本节提供了一个 Ansible playbook 示例。此 playbook 应用 存储 角色,来使用默认参数在块设备上创建 XFS 文件系统。
存储 角色只能在未分区、整个磁盘或逻辑卷(LV)上创建文件系统。它不能在分区中创建文件系统。
例 20.1. 在 /dev/sdb 上创建 XFS 的 playbook
-
卷名称(示例中为
barefs)目前是任意的。存储角色根据disks:属性下列出的磁盘设备来识别卷。 -
您可以省略
fs_type: xfs行,因为 XFS 是 RHEL 8 中的默认文件系统。 要在 LV 上创建文件系统,请在
disks:属性下提供 LVM 设置,包括括起的卷组。详情请参阅 管理逻辑卷的 Ansible playbook 示例。不要提供到 LV 设备的路径。
20.4. 永久挂载文件系统的 Ansible playbook 示例 复制链接链接已复制到粘贴板!
本节提供了一个 Ansible playbook 示例。此 playbook 应用 存储 角色来立即且永久挂载 XFS 文件系统。
例 20.2. 将 /dev/sdb 上的文件系统挂载到 /mnt/data 的 playbook
-
此 playbook 将文件系统添加到
/etc/fstab文件中,并立即挂载文件系统。 -
如果
/dev/sdb设备上的文件系统或挂载点目录不存在,则 playbook 会创建它们。
20.5. 管理逻辑卷的 Ansible playbook 示例 复制链接链接已复制到粘贴板!
本节提供了一个 Ansible playbook 示例。此 playbook 应用存储 角色来在卷组中创建 LVM 逻辑卷。
例 20.3. 在 myvg 卷组中创建 mylv 逻辑卷的 playbook
myvg卷组由以下磁盘组成:-
/dev/sda -
/dev/sdb -
/dev/sdc
-
-
如果
myvg卷组已存在,则 playbook 会将逻辑卷添加到卷组。 -
如果
myvg卷组不存在,则 playbook 会创建它。 -
playbook 在
mylv逻辑卷上创建 Ext4 文件系统,并在/mnt上永久挂载文件系统。
20.6. 启用在线块丢弃的 Ansible playbook 示例 复制链接链接已复制到粘贴板!
本节提供了一个 Ansible playbook 示例。此 playbook 应用 存储 角色来挂载启用了在线块丢弃的 XFS 文件系统。
例 20.4. 一个 playbook,它在 /mnt/data/ 上启用在线块丢弃功能
20.7. 创建和挂载 Ext4 文件系统的 Ansible playbook 示例 复制链接链接已复制到粘贴板!
本节提供了一个 Ansible playbook 示例。此 playbook 应用 存储 角色来创建和挂载 Ext4 文件系统。
例 20.5. 在 /dev/sdb 上创建 Ext4 并挂载到 /mnt/data 的 playbook
-
playbook 在
/dev/sdb磁盘上创建文件系统。 -
playbook 永久将文件系统挂载在
/mnt/data目录。 -
文件系统的标签是
label-name。
20.8. 创建和挂载 ext3 文件系统的 Ansible playbook 示例 复制链接链接已复制到粘贴板!
本节提供了一个 Ansible playbook 示例。此 playbook 应用 存储 角色来创建和挂载 Ext3 文件系统。
例 20.6. 在 /dev/sdb 上创建 Ext3 ,并将其挂载到 /mnt/data 的 playbook
-
playbook 在
/dev/sdb磁盘上创建文件系统。 -
playbook 永久将文件系统挂载在
/mnt/data目录。 -
文件系统的标签是
label-name。
本节提供了一个 Ansible playbook 示例。此 playbook 应用 存储 角色来调整块设备上现有的 Ext4 或 Ext3 文件系统的大小。
例 20.7. 在磁盘上设置单个卷的 playbook
-
如果上例中的卷已存在,若要调整卷大小,您需要运行相同的 playbook,只是参数
size的值不同。例如:
例 20.8. 在 /dev/sdb上调整 ext4 大小的 playbook
- 卷名称(示例中为 barefs)当前是任意的。Storage 角色根据 disks: attribute 中列出的磁盘设备标识卷。
在其他文件系统中使用 Resizing 操作可能会破坏您正在使用的设备上的数据。
本节提供了一个 Ansible playbook 示例。此 playbook 应用 storage RHEL 系统角色,以使用文件系统重新定义 LVM 逻辑卷大小。
在其他文件系统中使用 Resizing 操作可能会破坏您正在使用的设备上的数据。
例 20.9. 调整 myvg 卷组中现有 mylv1 和 myvl2 逻辑卷大小的 playbook
此 playbook 调整以下现有文件系统的大小:
-
挂载在
/opt/mount1上的mylv1卷上的 Ext4 文件系统,大小调整为 10 GiB。 -
挂载在
/opt/mount2上的mylv2卷上的 Ext4 文件系统,大小调整为 50 GiB。
-
挂载在
20.11. 使用 storage RHEL 系统角色创建交换卷的 Ansible playbook 示例 复制链接链接已复制到粘贴板!
本节提供了一个 Ansible playbook 示例。此 playbook 应用 storage 角色来创建交换卷(如果不存在),或者修改交换卷(如果已存在)在使用默认参数的块设备上。
例 20.10. 创建或修改 /dev/sdb 上现有 XFS 的 playbook
-
卷名称(示例中的
swap_fs)目前是任意的。存储角色根据disks:属性下列出的磁盘设备来识别卷。
20.12. 使用存储系统角色配置 RAID 卷 复制链接链接已复制到粘贴板!
使用 storage 系统角色,您可以使用 Red Hat Ansible Automation Platform 和 Ansible-Core 在 RHEL 上配置 RAID 卷。使用参数创建一个 Ansible playbook,以配置 RAID 卷以满足您的要求。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 -
您有一个清单文件详细描述了您要使用
存储系统角色部署 RAID 卷的系统。
流程
创建包含以下内容的 playbook.yml 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告设备名称在某些情况下可能会改变,例如:当您在系统中添加新磁盘时。因此,为了避免数据丢失,请不要在 playbook 中使用特定的磁盘名称。
可选:验证 playbook 语法:
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 playbook:
ansible-playbook -i inventory.file /path/to/file/playbook.yml
# ansible-playbook -i inventory.file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
20.13. 使用 storage RHEL 系统角色配置带有 RAID 的 LVM 池 复制链接链接已复制到粘贴板!
使用 存储 系统角色,您可以使用 Red Hat Ansible Automation Platform 在 RHEL 上配置带有 RAID 的 LVM 池。在本小节中,您将了解如何使用可用参数设置 Ansible playbook,以配置使用 RAID 的 LVM 池。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 -
您有一个清单文件详细描述了您要使用
存储系统角色在其上配置带有 RAID 的 LVM 池的系统。
流程
使用以下内容创建新的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要使用 RAID 创建 LVM 池,您必须使用
raid_level参数来指定 RAID 类型。可选。验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory.file /path/to/file/playbook.yml
# ansible-playbook -i inventory.file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
本节提供了一个 Ansible playbook 示例。此 playbook 应用 storage RHEL 系统角色,以便使用虚拟数据优化器 (VDO) 启用逻辑卷 (LVM) 的压缩和重复数据删除。
例 20.11. 在 myvg 卷组中创建 mylv1 LVM VDO 卷的 playbook
在本例中,compression 和 deduplication 池被设为 true,这指定使用 VDO。下面描述了这些参数的用法:
-
deduplication用于去除存储在存储卷上的重复数据。 - compression 用于压缩存储在存储卷上的数据,从而提高存储量。
-
vdo_pool_size 指定卷在设备上占用的实际大小。VDO 卷的虚拟大小由
size参数设置。注:由于 Storage 角色使用 LVM VDO,因此每个池只有一个卷可以使用压缩和重复数据删除。
20.15. 使用 storage RHEL 系统角色创建 LUKS2 加密的卷 复制链接链接已复制到粘贴板!
您可以通过运行 Ansible playbook,使用 storage 角色来创建和配置使用 LUKS 加密的卷。
先决条件
-
对一个或多个受管节点的访问和权限,这些节点是您要使用
crypto_policies系统角色配置的系统。 - 清单文件,其列出受管节点。
-
对控制节点的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。在控制节点上,已安装了
ansible-core和rhel-system-roles软件包。
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 软件包提供),其中包含 Ansible 命令行工具、命令以及小型内置 Ansible 插件。RHEL 通过 AppStream 软件仓库提供此软件包,它有一个有限的支持范围。如需更多信息,请参阅 RHEL 9 和 RHEL 8.6 及更新的 AppStream 软件仓库文档中的 Ansible Core 软件包的支持范围。
流程
使用以下内容创建新的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以在 playbook.yml 文件中添加其他加密参数,如
encryption_key、encryption_cipher、encryption_key_size和encryption_luks版本。可选:验证 playbook 语法:
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory.file /path/to/file/playbook.yml
# ansible-playbook -i inventory.file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
查看加密状态:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证创建的 LUKS 加密的卷:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看
playbook.yml文件中的cryptsetup参数,storage角色对其支持:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
本节提供了一个 Ansible playbook 示例。此 playbook 应用 storage 系统角色,以表达作为池总大小的百分比的逻辑卷管理器卷(LVM)卷大小。
例 20.12. 将卷大小表示为池总大小百分比形式的 playbook
这个示例将 LVM 卷的大小指定为池大小的百分比,例如:"60%"。另外,您还可以将 LVM 卷的大小指定为人类可读的文件系统形式(如 "10g" 或 "50 GiB")的池大小的百分比。
第 21 章 使用 timesync RHEL 系统角色配置时间同步 复制链接链接已复制到粘贴板!
借助 timesync RHEL 系统角色,您可以使用 Red Hat Ansible Automation Platform 在 RHEL 上的多个目标机器上管理时间同步。
21.1. timesync RHEL 系统角色 复制链接链接已复制到粘贴板!
您可以使用 timesync RHEL 系统角色在多个目标机器上管理时间同步。
timesync 角色安装和配置 NTP 或 PTP 实现,来作为 NTP 客户端或 PTP 副本进行操作,以便将系统时钟与 NTP 服务器或 PTP 域中的 Pumasters 同步。
请注意,使用 timesync 角色也有助于 迁移到 chrony,因为您可以在从 RHEL 6 开始的所有 Red Hat Enterprise Linux 版本上使用相同的 playbook,而无论系统是使用 ntp 还是 chrony 来实现 NTP 协议。
21.2. 为单一服务器池应用 timesync 系统角色 复制链接链接已复制到粘贴板!
以下示例演示了如何在只有一个服务器池的情况下应用 timesync 角色。
timesync 角色替换了受管主机上给定或检测到的供应商服务的配置。之前的设置即使没有在角色变量中指定,也会丢失。如果没有定义 timesync_ntp_provider 变量,唯一保留的设置就是供应商选择。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 -
您有一个清单文件,其中列出了您要在其上部署
timesync系统角色的系统。
流程
使用以下内容创建新的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
21.3. 在客户端服务器上应用 timesync 系统角色 复制链接链接已复制到粘贴板!
您可以使用 timesync 角色来在 NTP 客户端上启用网络时间安全(NTS)。网络时间安全(NTS)是一个针对网络时间协议(NTP)指定的身份验证机制。它验证在服务器和客户端之间交换的 NTP 数据包是否未被更改。
timesync 角色替换了受管主机上给定或检测到的供应商服务的配置。即使未在角色变量中指定,之前的设置也会丢失。如果没有定义 timesync_ntp_provider 变量,唯一保留的设置就是供应商选择。
先决条件
-
您不必在要部署
timesync解决方案的系统上安装 Red Hat Ansible Automation Platform。 -
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 -
您有一个清单文件,其中列出了您要在其上部署
timesync系统角色的系统。 -
chronyNTP 提供者版本为 4.0 或更高版本。
流程
使用以下内容创建一个
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ptbtime1.ptb.de是一个公共服务器的示例。您可能想要使用不同的公共服务器或您自己的服务器。可选:验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在客户端机器上执行测试:
chronyc -N authdata Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen ===================================================================== ptbtime1.ptb.de NTS 1 15 256 157 0 0 8 100
# chronyc -N authdata Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen ===================================================================== ptbtime1.ptb.de NTS 1 15 256 157 0 0 8 100Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 检查是否报告的 cookies 数量大于零。
21.4. timesync 系统角色变量 复制链接链接已复制到粘贴板!
您可以将以下变量传递给 timesync 角色:
-
timesync_ntp_servers:
| 角色变量设置 | 描述 |
|---|---|
| hostname: host.example.com | 服务器的主机名或地址 |
| minpoll: number | 最小轮询间隔。默认:6 |
| maxpoll: number | 最大轮询间隔。默认:10 |
| iburst: yes | 标志启用快速初始同步。默认: no |
| pool: yes | 指示每个主机名解析地址都是一个单独的 NTP 服务器的标志。默认: no |
| nts: yes | 用于启用网络时间安全性(NTS)的标记。默认:no。只支持 chrony >= 4.0。 |
第 22 章 使用 metrics RHEL 系统角色监控性能 复制链接链接已复制到粘贴板!
作为系统管理员,您可以将 metrics RHEL 系统角色与任何 Ansible Automation Platform 控制节点一起使用,来监控系统性能。
22.1. metrics 系统角色简介 复制链接链接已复制到粘贴板!
RHEL 系统角色是 Ansible 角色和模块的集合,可为远程管理多个 RHEL 系统提供一致的配置界面。metrics 系统角色为本地系统配置性能分析服务,并可以选择包含要由本地系统监控的远程系统的列表。metrics 系统角色可让您使用 pcp 来监控系统性能,而无需单独配置 pcp,因为 playbook 处理 pcp 的设置和部署。
| 角色变量 | 描述 | 用法示例 |
|---|---|---|
| metrics_monitored_hosts |
要通过目标主机分析的远程主机的列表。这些主机将在目标主机上记录指标,因此要确保每个主机的 |
|
| metrics_retention_days | 在删除前配置性能数据保留的天数。 |
|
| metrics_graph_service |
一个布尔值标志,使主机能够通过 |
|
| metrics_query_service |
一个布尔值标志,使主机能够通过 |
|
| metrics_provider |
指定要用于提供指标的指标收集器。目前, |
|
| metrics_manage_firewall |
使用 |
|
| metrics_manage_selinux |
使用 |
|
如需有关 metrics_connections 中使用的参数,以及有关 metrics 系统角色的其他信息,请参阅 /usr/share/ansible/roles/rhel-system-roles.metrics/README.md 文件。
22.2. 使用 metrics 系统角色以可视化方式监控本地系统 复制链接链接已复制到粘贴板!
此流程描述了如何使用 metrics RHEL 系统角色来监控您的本地系统,同时通过 Grafana 提供数据可视化。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要监控的机器上安装了
rhel-system-roles软件包。
流程
通过在清单中添加以下内容,在
/etc/ansible/hostsAnsible 清单中配置localhost:localhost ansible_connection=local
localhost ansible_connection=localCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建一个 Ansible playbook:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 Ansible playbook:
ansible-playbook name_of_your_playbook.yml
# ansible-playbook name_of_your_playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意由于
metrics_graph_service布尔值被设置为 value="yes",因此会使用pcp自动安装并提供Grafana,并添加为数据源。由于 metrics_manage_firewall 和 metrics_manage_selinux 都被设置为 true,因此 metrics 角色将使用 firewall 和 selinux 系统角色来管理 metrics 角色使用的端口。-
要查看机器上收集的指标的视图,请访问
grafanaweb界面 ,如 访问 Grafana web UI 中所述。
22.3. 使用 metrics 系统角色设置监控其自身的独立系统 复制链接链接已复制到粘贴板!
此流程描述了如何使用 metrics 系统角色设置一组机器来监控其自身。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要用来运行 playbook 的机器上安装了
rhel-system-roles软件包。 - 您已建立 SSH 连接。
流程
将您要通过 playbook 监控的机器的名称或 IP 添加到方括号括起来的标识组名称下的
/etc/ansible/hostsAnsible 清单文件中:[remotes] webserver.example.com database.example.com
[remotes] webserver.example.com database.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下内容创建一个 Ansible playbook:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意由于
metrics_manage_firewall和metrics_manage_selinux都被设置为 true,因此 metrics 角色将使用firewall和selinux角色来管理metrics角色使用的端口。运行 Ansible playbook:
ansible-playbook name_of_your_playbook.yml -k
# ansible-playbook name_of_your_playbook.yml -kCopy to Clipboard Copied! Toggle word wrap Toggle overflow
其中 -k 提示连接到远程系统的密码。
22.4. 使用 metrics 系统角色通过本地机器监控机器的数量 复制链接链接已复制到粘贴板!
此流程描述了如何使用 metrics 系统角色设置本地机器来集中一组监控机器,同时通过 grafana 提供数据的可视化,并通过 redis 提供数据的查询。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要用来运行 playbook 的机器上安装了
rhel-system-roles软件包。
流程
使用以下内容创建一个 Ansible playbook:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行 Ansible playbook:
ansible-playbook name_of_your_playbook.yml
# ansible-playbook name_of_your_playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意由于
metrics_graph_service和metrics_query_service布尔值被设置为 value="yes",因此会使用pcp来自动安装并提供grafana,并添加为带有pcp数据记录索引到redis的数据源,允许pcp查询语言用于复杂的数据查询。由于metrics_manage_firewall和metrics_manage_selinux都被设置为 true,因此metrics角色将使用firewall和selinux角色来管理metrics角色使用的端口。-
要查看机器集中收集的指标的图形表示,并查询数据,请访问
grafanaweb 界面,如 访问 Grafana Web UI 中所述。
22.5. 在使用 metrics 系统角色监控系统时设置身份验证 复制链接链接已复制到粘贴板!
PCP 通过简单身份验证安全层 (SASL) 框架支持 scram-sha-256 验证机制。metrics RHEL 系统角色使用 scram-sha-256 身份验证机制自动设置身份验证的步骤。这个步骤描述了如何使用 metrics RHEL 系统角色设置身份验证。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要用来运行 playbook 的机器上安装了
rhel-system-roles软件包。
流程
在您要为其设置身份验证的 Ansible playbook 中包含以下变量:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意由于
metrics_manage_firewall和metrics_manage_selinux都被设置为 true,因此metrics角色将使用firewall和selinux角色来管理metrics角色使用的端口。运行 Ansible playbook:
ansible-playbook name_of_your_playbook.yml
# ansible-playbook name_of_your_playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
验证
sasl配置:pminfo -f -h "pcp://ip_adress?username=your_username" disk.dev.read Password: disk.dev.read inst [0 or "sda"] value 19540
# pminfo -f -h "pcp://ip_adress?username=your_username" disk.dev.read Password: disk.dev.read inst [0 or "sda"] value 19540Copy to Clipboard Copied! Toggle word wrap Toggle overflow ip_adress 应替换为主机的 IP 地址。
22.6. 使用 metrics 系统角色为 SQL Server 配置并启用指标集合 复制链接链接已复制到粘贴板!
此流程描述了如何使用 metrics RHEL 系统角色通过您本地系统中的 pcp 自动配置和为 Microsoft SQL Server 启用指标集合。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要监控的机器上安装了
rhel-system-roles软件包。 - 您已安装了用于 Red Hat Enterprise Linux 的 Microsoft SQL Server,并建立了与 SQL 服务器的"信任"连接。请参阅安装 SQL Server 并在红帽上创建数据库。
- 您已为 Red Hat Enterprise Linux 安装了用于 SQL Server 的 Microsoft ODBC 驱动程序。请参阅 Red Hat Enterprise Server 和 Oracle Linux。
流程
通过在清单中添加以下内容,在
/etc/ansible/hostsAnsible 清单中配置localhost:localhost ansible_connection=local
localhost ansible_connection=localCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个包含以下内容的 Ansible playbook:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意由于
metrics_manage_firewall和metrics_manage_selinux都被设置为 true,因此metrics角色将使用firewall和selinux角色来管理metrics角色使用的端口。运行 Ansible playbook:
ansible-playbook name_of_your_playbook.yml
# ansible-playbook name_of_your_playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
使用
pcp命令来验证 SQL Server PMDA 代理 (mssql) 是否已加载并在运行:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
作为管理员,您可以使用 microsoft.sql.server Ansible 角色来安装、配置和启动 Microsoft SQL Server(SQL Server)。The microsoft.sql.server Ansible 角色优化您的操作系统,以提高 SQL Server 的性能和吞吐量。该角色使用推荐的设置来简化和自动化 RHEL 主机配置,以运行 SQL Server 工作负载。
23.1. 先决条件 复制链接链接已复制到粘贴板!
- 2 GB RAM
-
root访问您要配置 SQL Server 的受管节点 预配置的防火墙
您可以将
mssql_manage_firewall变量设置为true,以便角色可以自动管理防火墙。另外,还可在使用
mssql_tcp_port变量设置的 SQL Server TCP 端口上启用连接。如果没有定义此变量,则角色默认为 TCP 端口号1433。要添加新端口,请使用:
firewall-cmd --add-port=xxxx/tcp --permanent firewall-cmd --reload
# firewall-cmd --add-port=xxxx/tcp --permanent # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 xxxx 替换为 TCP 端口号,然后重新加载防火墙规则。
-
可选 :创建一个包含 SQL 语句和存储进程的带
.sql扩展名的文件,来将它们输入到 SQL 服务器。
23.2. 安装 microsoft.sql.server Ansible 角色 复制链接链接已复制到粘贴板!
microsoft.sql.server Ansible 角色是 ansible-collection-microsoft-sql 软件包的一部分。
先决条件
-
root访问权限
流程
安装 Ansible Core,它在 RHEL 7.9 AppStream 存储库中提供:
*yum install ansible-core*
# *yum install ansible-core*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 安装
microsoft.sql.serverAnsible 角色:*yum install ansible-collection-microsoft-sql*
# *yum install ansible-collection-microsoft-sql*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.3. 使用 microsoft.sql.server Ansible 角色安装并配置 SQL 服务器 复制链接链接已复制到粘贴板!
您可以使用 microsoft.sql.server Ansible 角色来安装和配置 SQL server。
先决条件
- Ansible 清单已创建
流程
-
创建一个扩展名为
.yml的文件。例如,mssql-server.yml。 在
.yml文件中添加以下内容:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <password> 替换为您的 SQL Server 密码。
运行
mssql-server.ymlansible playbook:*ansible-playbook mssql-server.yml*
# *ansible-playbook mssql-server.yml*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
23.4. TLS 变量 复制链接链接已复制到粘贴板!
您可以使用以下变量来配置传输层安全(TLS)协议。
| 角色变量 | 描述 |
|---|---|
| mssql_tls_enable | 此变量启用或禁用 TLS 加密。
当变量设置为
如果设置为 |
| mssql_tls_cert | 要定义此变量,请输入 TLS 证书文件的路径。 |
| mssql_tls_private_key | 要定义此变量,请输入私钥文件的路径。 |
| mssql_tls_remote_src |
定义该角色是否在远程或控制节点上搜索
当设置为默认
当设置为 |
| mssql_tls_version | 定义此变量来选择要使用的 TSL 版本。
默认值为 |
| mssql_tls_force |
将此变量设为
默认值为 |
23.5. 接受 MLService 的 EULA 复制链接链接已复制到粘贴板!
您必须接受 Python 和 R 软件包开源分发的所有 EULA,才能安装所需的 SQL Server 机器学习服务(MLService)。
有关许可证条款,请参阅 /usr/share/doc/mssql-server。
| 角色变量 | 描述 |
|---|---|
| mssql_accept_microsoft_sql_server_standard_eula |
此变量决定是否接受安装
要接受条款和条件,请将这个变量设为
默认值为 |
23.6. 接受 Microsoft ODBC 17 的 EULA。 复制链接链接已复制到粘贴板!
您必须接受所有 EULA,才能安装 Microsoft Open Database Connectivity(ODBC)驱动程序。
有关许可证条款,请参阅 /usr/share/doc/msodbcsql17/LICENSE.txt 和 /usr/share/doc/mssql-tools/LICENSE.txt。
| 角色变量 | 描述 |
|---|---|
| mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula |
此变量决定是否接受安装
要接受条款和条件,请将这个变量设为
默认值为 |
| mssql_accept_microsoft_cli_utilities_for_sql_server_eula |
此变量决定是否接受安装
要接受条款和条件,请将这个变量设为
默认值为 |
23.7. 高可用性变量 复制链接链接已复制到粘贴板!
您可以使用下表中的变量为 Microsoft SQL Server 配置高可用性。
| 变量 | 描述 |
|---|---|
|
|
默认值为
当它被设置为
|
|
|
此变量指定您可以在主机上配置哪些类型的副本。您可以将此变量设置为 |
|
|
默认端口为 该角色使用此 TCP 端口为 Always On availability 组复制数据。 |
|
| 您必须定义证书的名称,以便在 Always On Availability 组成员间保护事务。 |
|
| 您必须设置用于证书的 master 密钥的密码。 |
|
| 您必须设置用于证书的私钥的密码。 |
|
|
默认值为
如果设置为 |
|
| 您必须定义要配置的端点的名称。 |
|
| 您必须定义要配置的可用区的名称。 |
|
| 您可以定义要复制的数据库列表,否则角色会创建集群,而不复制数据库。 |
|
| SQL Server Pacemaker 资源代理利用此用户来执行数据库健康检查,并管理从副本转换到主服务器的状态。 |
|
|
SQL Server 中的 |
|
|
默认值为
此变量定义此角色是否运行
请注意,
要临时解决这个问题,
如果您希望 |
请注意,此角色会将数据库备份到 /var/opt/mssql/data/ 目录。
有关如何为 Microsoft SQL Server 使用高可用性变量的示例:
-
如果从 Automation Hub 安装角色,请查看服务器中的
~/.ansible/collections/ansible_collections/microsoft/sql/roles/server/README.md文件。 -
如果从软件包安装角色,请在浏览器中打开
/usr/share/microsoft/sql-server/README.html文件。
第 24 章 配置系统以使用 tlog RHEL 系统角色记录会话记录 复制链接链接已复制到粘贴板!
使用 tlog RHEL 系统角色,您可以使用 Red Hat Ansible Automation Platform 为 RHEL 上的终端会话记录配置一个系统。
24.1. tlog 系统角色 复制链接链接已复制到粘贴板!
您可以使用 tlog RHEL 系统角色为 RHEL 上的终端会话记录配置 RHEL 系统。
您可以使用 SSSD 服务将记录配置为为每个用户或用户组进行。
24.2. tlog 系统角色的组件和参数 复制链接链接已复制到粘贴板!
Session Recording 解决方案有以下组件:
-
tlog工具 - 系统安全性服务守护进程(SSSD)
- 可选: Web 控制台界面
用于 tlog RHEL 系统角色的参数有:
| 角色变量 | 描述 |
|---|---|
| tlog_use_sssd (default: yes) | 使用 SSSD 配置会话记录,这是管理记录的用户或组的首选方法 |
| tlog_scope_sssd(默认值:none) | 配置 SSSD 记录范围 - all / some / none |
| tlog_users_sssd(默认值:[]) | 要记录的用户的 YAML 列表 |
| tlog_groups_sssd(默认值:[]) | 要记录的组的 YAML 列表 |
-
有关
tlog中使用的参数以及tlog系统角色的附加信息,请查看/usr/share/ansible/roles/rhel-system-roles.tlog/README.md文件。
24.3. 部署 tlog RHEL 系统角色 复制链接链接已复制到粘贴板!
按照以下步骤准备并应用 Ansible playbook 来配置 RHEL 系统,以将数据记录到 systemd 日志中。
先决条件
-
您已设置了 SSH 密钥,用于从控制节点访问将配置
tlog系统角色的目标系统。 -
您至少有一个要配置
tlog系统角色的系统。 - Ansible Core 软件包安装在控制机器上。
-
rhel-system-roles软件包安装在控制机器上。
流程
使用以下内容创建新的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中,
tlog_scope_sssd:-
some指定您只记录某些用户和组,而不是all或none。
-
tlog_users_sssd:-
recorded-user指定您要记录会话的用户。请注意,这不会为您添加用户。您必须自行设置该用户。
-
另外,还可以验证 playbook 语法。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i IP_Address /path/to/file/playbook.yml -v
# ansible-playbook -i IP_Address /path/to/file/playbook.yml -vCopy to Clipboard Copied! Toggle word wrap Toggle overflow
因此,playbook 会在您指定的系统中安装 tlog RHEL 系统角色。该角色包括 tlog-rec-session (终端会话 I/O 日志记录程序),它充当用户的登录 shell。它还创建一个 SSSD 配置丢弃文件,可供您定义的用户和组使用。SSSD 解析并读取这些用户和组,并使用 tlog-rec-session 替换其用户 shell。另外,如果系统上安装了 cockpit 软件包,playbook 也会安装 cockpit-session-recording 软件包,它是一个 Cockpit 模块,供您在 web 控制台界面中查看和播放记录。
验证步骤
要验证 SSSD 配置文件是否在系统中创建了,请执行以下步骤:
进入创建 SSSD 配置丢弃文件的文件夹:
cd /etc/sssd/conf.d
# cd /etc/sssd/conf.dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查文件内容:
cat /etc/sssd/conf.d/sssd-session-recording.conf
# cat /etc/sssd/conf.d/sssd-session-recording.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以看到该文件包含您在 playbook 中设置的参数。
24.4. 为排除组或用户列表部署 tlog RHEL 系统角色 复制链接链接已复制到粘贴板!
您可以使用 tlog 系统角色支持 SSSD 会话记录配置选项 exclude_users 和 exclude_groups。按照以下步骤准备和应用 Ansible playbook,来配置 RHEL 系统,以便在 systemd 日志中排除用户或组的会话记录。
先决条件
-
您已设置了从控制节点访问您要配置
tlog系统角色的目标系统的 SSH 密钥。 -
您至少有一个要在其上配置
tlog系统角色的系统。 - Ansible Core 软件包安装在控制机器上。
-
rhel-system-roles软件包安装在控制机器上。
流程
使用以下内容创建新的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中,
tlog_scope_sssd:-
all:指定您要记录所有用户和组。
-
tlog_exclude_users_sssd:- user names:指定您要从会话记录中排除的用户的用户名。
tlog_exclude_groups_sssd:-
admins指定要从会话记录中排除的组。
-
(可选)验证 playbook 语法;
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i IP_Address /path/to/file/playbook.yml -v
# ansible-playbook -i IP_Address /path/to/file/playbook.yml -vCopy to Clipboard Copied! Toggle word wrap Toggle overflow
因此,playbook 会在您指定的系统中安装 tlog RHEL 系统角色。该角色包括 tlog-rec-session (终端会话 I/O 日志记录程序),它充当用户的登录 shell。它还会创建一个 /etc/sssd/conf.d/sssd-session-recording.conf SSSD 配置丢弃文件,供用户和组使用,但您定义为排除的用户和组除外。SSSD 解析并读取这些用户和组,并使用 tlog-rec-session 替换其用户 shell。另外,如果系统上安装了 cockpit 软件包,playbook 也会安装 cockpit-session-recording 软件包,它是一个 Cockpit 模块,供您在 web 控制台界面中查看和播放记录。
验证步骤
要验证 SSSD 配置文件是否在系统中创建了,请执行以下步骤:
进入创建 SSSD 配置丢弃文件的文件夹:
cd /etc/sssd/conf.d
# cd /etc/sssd/conf.dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查文件内容:
cat sssd-session-recording.conf
# cat sssd-session-recording.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以看到该文件包含您在 playbook 中设置的参数。
24.5. 使用在 CLI 中部署的 tlog 系统角色记录会话 复制链接链接已复制到粘贴板!
在您指定的系统中部署了 tlog 系统角色后,就可以使用命令行界面 (CLI) 记录用户终端会话。
先决条件
-
您已在目标系统中部署了
tlog系统角色。 -
SSSD 配置丢弃文件在
/etc/sssd/conf.d目录中创建。请参阅部署 Terminal Session Recording RHEL 系统角色。
流程
创建一个用户并为这个用户分配密码:
useradd recorded-user passwd recorded-user
# useradd recorded-user # passwd recorded-userCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以您刚刚创建的用户身份登录到该系统:
ssh recorded-user@localhost
# ssh recorded-user@localhostCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 当系统提示您输入 yes 或 no 进行身份验证时请输入 "yes"。
插入 record-user 的密码。
系统显示有关记录会话的信息。
ATTENTION! Your session is being recorded!
ATTENTION! Your session is being recorded!Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记录完会话后,键入:
exit
# exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 系统从用户注销并关闭与本地主机的连接。
用户会话会被记录,并被保存,您可以使用 journal 进行播放。
验证步骤
要在日志中查看您记录的会话,请执行以下步骤:
运行以下命令:
journalctl -o verbose -r
# journalctl -o verbose -rCopy to Clipboard Copied! Toggle word wrap Toggle overflow 搜索
tlog-rec记录的日志条目的MESSAGE字段。journalctl -xel _EXE=/usr/bin/tlog-rec-session
# journalctl -xel _EXE=/usr/bin/tlog-rec-sessionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
24.6. 使用 CLI 监视记录的会话 复制链接链接已复制到粘贴板!
您可以使用命令行界面(CLI)从日志中执行用户会话记录。
先决条件
- 您已经记录了一个用户会话。请参阅 使用 CLI 中部署的 tlog 系统角色来记录会话。
流程
在 CLI 终端中,播放用户会话记录:
journalctl -o verbose -r
# journalctl -o verbose -rCopy to Clipboard Copied! Toggle word wrap Toggle overflow 搜索
tlog记录:/tlog-rec
$ /tlog-recCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以查看详情,例如:
- 用户会话记录的用户名
-
out_txt字段,这是记录的会话的原始输出编码 - 标识符号 TLOG_REC=ID_number
- 复制标识符号 TLOG_REC=ID_number。
使用标识符号 TLOG_REC=ID_number 回放记录。
tlog-play -r journal -M TLOG_REC=ID_number
# tlog-play -r journal -M TLOG_REC=ID_numberCopy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以看到记录的用户会话被回放。
第 25 章 使用 ha_cluster RHEL 系统角色配置高可用性集群 复制链接链接已复制到粘贴板!
使用 ha_cluster 系统角色,您可以配置和管理使用 Pacemaker 高可用性集群资源管理器的高可用性集群。
25.1. ha_cluster 系统角色变量 复制链接链接已复制到粘贴板!
在 ha_cluster 系统角色 playbook 中,根据集群部署的要求为高可用性集群定义变量。
您可以为 ha_cluster 系统角色设置的变量如下:
ha_cluster_enable_repos-
启用包含
ha_cluster系统角色所需软件包的存储库的布尔值标志。当此变量被设置为默认值true时,您在用作集群成员的系统上有活动的 RHEL 和 RHEL High Availability 附加组件的订阅,否则系统角色将失败。 ha_cluster_manage_firewall确定
ha_cluster系统角色是否管理防火墙的布尔值标志。当ha_cluster_manage_firewall设为true时,防火墙高可用性服务和fence-virt端口被启用。当ha_cluster_manage_firewall设为false时,ha_cluster系统角色不管理防火墙。如果您的系统正在运行firewalld服务,则必须在 playbook 中将该参数设置为true。您可以使用
ha_cluster_manage_firewall参数来添加端口,但您无法使用该参数删除端口。要删除端口,请直接使用firewall系统角色。从 RHEL 7.9 开始,防火墙不再被默认配置,因为它仅在
ha_cluster_manage_firewall设为true时才配置。ha_cluster_manage_selinux确定
ha_cluster系统角色是否使用selinux系统角色管理属于防火墙高可用性服务的端口的布尔值标志。当ha_cluster_manage_selinux设为true时,属于防火墙高可用性服务的端口与 SELinux 端口类型cluster_port_t相关联。当ha_cluster_manage_selinux设为false时,ha_cluster系统角色不管理 SELinux。如果您的系统正在运行
selinux服务,则必须在 playbook 中将此参数设置为true。防火墙配置是管理 SELinux 的先决条件。如果没有安装防火墙,则管理 SELinux 策略会被跳过。您可以使用
ha_cluster_manage_selinux参数添加策略,但您无法使用该参数删除策略。要删除策略,请直接使用selinux系统角色。ha_cluster_cluster_present布尔值标志,如果设为
true,则会根据传递给角色的变量,决定是否在主机上配置 HA 集群。角色中没有指定且不受角色支持的任何集群配置都将丢失。如果
ha_cluster_cluster_present设为false,则会从目标主机中删除所有 HA 集群配置。此变量的默认值为
true。以下示例 playbook 删除了
node1和node2上的所有集群配置Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_start_on_boot-
确定是否将集群服务配置为在引导时启动的布尔值标志。此变量的默认值为
true。 ha_cluster_fence_agent_packages-
要安装的隔离代理软件包列表。此变量的默认值为
fence-agents-all,fence-virt。 ha_cluster_extra_packages要安装的其他软件包列表。此变量的默认值是 no packages。
此变量可用于安装角色未自动安装的其他软件包,如自定义资源代理。
可以将隔离代理指定为这个列表的成员。但是,
ha_cluster_fence_agent_packages是用于指定隔离代理的推荐的角色变量,因此其默认值会被覆盖。ha_cluster_hacluster_password-
指定
hacluster用户的密码的字符串值。hacluster用户对集群具有完全访问权限。建议您加密密码,如 使用 Ansible Vault 加密内容 中所述。没有默认密码值,必须指定此变量。 ha_cluster_corosync_key_srcCorosync
authkey文件的路径,它是 Corosync 通信的身份验证和加密密钥。强烈建议您对每个集群都有一个唯一的authkey值。密钥应为 256 字节的随机数据。如果为此变量指定一个密钥,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果没有指定密钥,则使用节点上已存在的密钥。如果节点没有相同的密钥,则一个节点的密钥将被分发到其他节点,以便所有节点都有相同的密钥。如果节点都没有密钥,则将生成一个新的密钥,并将其分发到节点。
如果设置了此变量,则忽略这个密钥的
ha_cluster_regenerate_keys。此变量的默认值为 null。
ha_cluster_pacemaker_key_srcPacemaker
authkey文件的路径,它是 Pacemaker 通信的身份验证和加密密钥。强烈建议您对每个集群都有一个唯一的authkey值。密钥应为 256 字节的随机数据。如果为此变量指定一个密钥,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果没有指定密钥,则使用节点上已存在的密钥。如果节点没有相同的密钥,则一个节点的密钥将被分发到其他节点,以便所有节点都有相同的密钥。如果节点都没有密钥,则将生成一个新的密钥,并将其分发到节点。
如果设置了此变量,则忽略这个密钥的
ha_cluster_regenerate_keys。此变量的默认值为 null。
ha_cluster_fence_virt_key_srcfence-virt或fence-xvm预共享密钥文件的路径,它是fence-virt或fence-xvm隔离代理验证密钥的位置。如果为此变量指定一个密钥,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果没有指定密钥,则使用节点上已存在的密钥。如果节点没有相同的密钥,则一个节点的密钥将被分发到其他节点,以便所有节点都有相同的密钥。如果节点都没有密钥,则将生成一个新的密钥,并将其分发到节点。如果
ha_cluster系统角色以这种方式生成新的密钥,您应该将密钥复制到节点的虚拟机监控程序,以确保隔离正常工作。如果设置了此变量,则忽略这个密钥的
ha_cluster_regenerate_keys。此变量的默认值为 null。
ha_cluster_pcsd_public_key_srcr,ha_cluster_pcsd_private_key_srcpcsdTLS 证书和私钥的路径。如果没有指定,则使用节点上已存在的证书密钥对。如果没有证书密钥对,则会生成一个随机的新密钥对。如果为此变量指定了私钥值,则建议您使用 vault 加密密钥,如 使用 Ansible Vault 加密内容 中所述。
如果设置了这些变量,则将忽略此证书密钥对的
ha_cluster_regenerate_keys。这些变量的默认值为 null。
ha_cluster_pcsd_certificates使用
certificate系统角色创建pcsd私钥和证书。如果您的系统没有使用
pcsd私钥和证书配置,则您可以使用以下两种方式之一创建它们:-
设置
ha_cluster_pcsd_certificates变量。当您设置ha_cluster_pcsd_certificates变量时,certificate系统角色会在内部使用,它会如定义的那样为pcsd创建私钥和证书。 -
不要设置
ha_cluster_pcsd_public_key_src、ha_cluster_pcsd_private_key_src或ha_cluster_pcsd_certificates变量。如果没有设置这些变量,则ha_cluster系统角色将使用pcsd本身创建pcsd证书。ha_cluster_pcsd_certificates的值被设置为certificate_requests的值,如certificate系统角色中指定的那样。有关certificate系统角色的更多信息,请参阅 使用 RHEL 系统角色请求证书。
-
设置
以下操作注意事项适用于
ha_cluster_pcsd_certificate变量的使用:-
除非您使用 IPA 并将系统加入 IPA 域,否则
certificate系统角色会创建自签名证书。在这种情况下,您必须在 RHEL 系统角色上下文之外明确配置信任设置。系统角色不支持配置信任设置。 -
当您设置
ha_cluster_pcsd_certificates变量时,不要设置ha_cluster_pcsd_public_key_src和ha_cluster_pcsd_private_key_src变量。 -
当您设置
ha_cluster_pcsd_certificates变量时,此证书-密钥对会忽略ha_cluster_regenerate_keys。
-
除非您使用 IPA 并将系统加入 IPA 域,否则
此变量的默认值为
[]。有关在高可用性集群中创建 TLS 证书和密钥文件的
ha_cluster系统角色 playbook 的示例,请参阅 为高可用性集群创建 pcsd TLS 证书和密钥文件。ha_cluster_regenerate_keys-
布尔值标志,当设为
true时,决定将重新生成预共享密钥和 TLS 证书。有关重新生成密钥和证书的更多信息,请参阅ha_cluster_corosync_key_src、ha_cluster_pacemaker_key_srcha_cluster_fence_virt_key_src、ha_cluster_pcsd_public_key_src和ha_cluster_pcsd_private_key_src变量的描述。 -
此变量的默认值为
false。 ha_cluster_pcs_permission_list配置使用
pcsd管理集群的权限。您使用这个变量配置的项目如下:-
type-用户或组 -
name- 用户或组名称 allow_list- 对指定的用户或组允许的操作:-
read- 查看集群状态和设置 -
write- 修改集群设置,权限和 ACL 除外 -
grant- 修改集群权限和 ACL -
full- 对集群的无限制访问,包括添加和删除节点,以及访问密钥和证书
-
-
ha_cluster_pcs_permission_list变量的结构及其默认值如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_cluster_name-
集群的名称。这是一个字符串值,默认值为
my-cluster。 ha_cluster_transport设置集群传输方法。您使用这个变量配置的项目如下:
-
type(可选) - 传输类型:knet,udp, 或udpu。udp和udpu传输类型只支持一个链接。对于udp和udpu,始终禁用加密。若未指定,则默认为knet。 -
options(可选)- 带有传输选项的“名称-值”的字典列表。 -
links(可选)- “名称-值”的字典列表。每个 name-value 字典列表都包含适用于一个 Corosync 链接的选项。建议您为每个链接设置linknumber值。否则,第一个字典列表被默认分配给第一个链接,第二个分配给第二个链接,以此类推。 -
compression(可选)- 配置传输压缩的 name-value 字典列表。仅支持knet传输类型。 crypto(可选)- 配置传输加密的 name-value 字典列表。默认情况下启用加密。仅支持knet传输类型。有关允许的选项列表,请查看
pcs -h cluster setup帮助页或pcs(8) man page 的cluster部分中的setup描述。有关更详细的描述,请查看corosync.conf(5) man page。ha_cluster_transport变量的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关配置传输方法的
ha_cluster系统角色 playbook 的示例,请参阅在高可用性集群中配置 Corosync 值。
-
ha_cluster_totem配置 Corosync totem。有关允许的选项列表,请查看
pcs -h cluster setup帮助页或pcs(8) man page 的cluster部分中的setup描述。有关更详细的说明,请查看corosync.conf(5) man page。ha_cluster_totem变量的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关配置 Corosync totem 的
ha_cluster系统角色 playbook 示例,请参阅在高可用性集群中配置 Corosync 值。ha_cluster_quorum配置集群仲裁。您可以为集群仲裁配置以下项目:
-
options(可选)- 配置仲裁的名称-值字典的列表。允许的选项有:auto_tie_breaker、last_man_standing、last_man_standing_window和wait_for_all。有关仲裁选项的详情,请查看votequorum(5)手册页。 -
device(可选)-
-
配置使用仲裁设备的集群。默认情况下,不使用仲裁设备。** model(必需的)- 指定仲裁设备模型。仅支持 net
+ ** model_options (可选)- 配置指定仲裁设备模型的名称-值字典的列表。对于型号 net,您必须指定 host 和 algorithm 选项。
+ 使用 pcs-address 选项设置自定义 pcsd 地址和端口来连接到 qnetd 主机。如果没有指定这个选项,角色会连接到 主机 上的默认 pcsd 端口。
+ ** generic_options (可选)- 设置不是特定于型号的仲裁设备选项的名称-值字典的列表。
+ ** heuristics_options(可选)- 配置仲裁设备启发式的名称-值字典的列表。
+ 有关仲裁设备选项的详情,请查看 corosync-qdevice(8)手册页。通用选项为 sync_timeout 和 timeout。有关型号 net 选项,请查看 quorum.device.net 部分。有关启发式选项,请查看 quorum.device.heuristics 部分。
+ 要重新生成仲裁设备 TLS 证书,请将 ha_cluster_regenerate_keys 变量设置为 true。
+:: ha_cluster_quorum 变量的结构如下:
+
+ 有关配置集群仲裁的 ha_cluster 系统角色 playbook 示例,请参阅在 高可用性集群中配置 Corosync 值。有关使用仲裁设备配置集群的 ha_cluster 系统角色 playbook 的示例,请参阅 使用仲裁设备配置高可用性集群。
ha_cluster_sbd_enabled决定集群是否可以使用 SBD 节点隔离机制的布尔值标志。此变量的默认值为
false。有关启用 SBD 的
ha_cluster系统角色 playbook 示例,请参阅使用 SBD 节点隔离配置高可用性集群。ha_cluster_sbd_options指定 SBD 选项的名称-值字典的列表。支持的选项包括:
-
delay-start- 默认为no -
startmode- 默认为always -
timeout-action- 默认为flush,reboot watchdog-timeout- 默认为5有关这些选项的详情,请参考
sbd(8)手册页中的Configuration via environment部分。
-
有关用于配置 SBD 选项的
ha_cluster系统角色的 playbook 示例,请参阅使用 SBD 节点隔离配置高可用性集群。使用 SBD 时,您可以选择性地为清单中的每个节点配置 watchdog 和 SBD 设备。有关在清单文件中配置 watchdog 和 SBD 设备的详情,请参阅 为 ha_cluster 系统角色指定清单。
ha_cluster_cluster_propertiesPacemaker 集群范围配置的集群属性集列表。仅支持一组集群属性。
一组集群属性的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,不设置任何属性。
以下示例 playbook 配置包含
node1和node2的集群,并设置stonith-enabled和no-quorum-policy集群属性。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_resource_primitives此变量定义由系统角色配置的 pacemaker 资源,包括 stonith 资源。您可以为每个资源配置以下项目:
-
id(必需)- 资源的 ID。 -
agent(必需)- 资源或 stonith 代理的名称,如ocf:pacemaker:Dummy或stonith:fence_xvm。必须为 stonith 代理指定stonith:。对于资源代理,可以使用短名称,如Dummy,而不是ocf:pacemaker:Dummy。但是,如果安装了多个具有相同短名称的代理,则角色将失败,因为它将无法决定应使用哪个代理。因此,建议您在指定资源代理时使用全名。 -
instance_attrs(可选) - 资源的实例属性集合列表。目前,只支持一个集合。属性的确切名称和值,以及它们是否为必选的,这取决于资源还是 stonith 代理。 -
meta_attrs(可选) - 资源的元属性集合列表。目前,只支持一个集合。 operations(可选) - 资源操作列表。-
action(必需)- pacemaker 以及资源或 stonith 代理定义的操作。 -
attrs(必需)- 操作选项,必须至少指定一个选项。
-
-
使用
ha_cluster系统角色配置的资源定义的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下不定义任何资源。
有关包含资源配置的
ha_cluster系统角色 playbook 的示例,请参阅 配置具有隔离和资源的高可用性集群。ha_cluster_resource_groups此变量定义由系统角色配置的 pacemaker 资源组。您可以为每个资源组配置以下项目:
-
id(必需)- 组的 ID. -
resources(必需) - 组的资源列表.每个资源通过其 ID 引用,资源必须在ha_cluster_resource_primitives变量中定义。必须至少列出一个资源。 -
meta_attrs(可选) - 组的元属性集合列表。目前,只支持一个集合。
-
使用
ha_cluster系统角色配置的资源组定义的结构如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,不定义任何资源组。
有关包含资源组配置的
ha_cluster系统角色 playbook 的示例,请参阅 配置具有隔离和资源的高可用性集群。ha_cluster_resource_clones此变量定义由系统角色配置的 pacemaker 资源克隆。您可以为资源克隆配置以下项目:
-
resource_id(必需)- 要克隆的资源.资源必须在ha_cluster_resource_primitives变量或ha_cluster_resource_groups变量中定义。 -
promotable(可选)- 表示要创建的资源克隆是否是可升级的克隆,用true或false表示。 -
id(可选)- 克隆的自定义 ID。如果未指定 ID,将会生成它。如果集群不支持这个选项,则会显示一个警告。 -
meta_attrs(可选)- 克隆的元属性集合列表。目前,只支持一个集合。
-
使用
ha_cluster系统角色配置的资源克隆定义的结构如下。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,没有定义资源克隆。
有关包含资源克隆配置的
ha_cluster系统角色 playbook 的示例,请参阅 配置具有隔离和资源的高可用性集群。ha_cluster_constraints_location此变量定义资源位置限制。资源位置限制表示资源可在哪些节点上运行。您可以指定资源 ID 或模式匹配的资源,它们可以匹配多个资源。您可以通过节点名称或规则指定节点。
您可以为资源位置约束配置以下项目:
-
resource(必需)- 约束应用到的资源规格。 -
node(必需)- 资源应首选或避免的节点的名称。 -
id(可选)- 约束 ID。如果未指定,它将自动生成。 options(可选)- “名称-值”字典列表。score- 设置约束的权重。-
正
score值表示资源首选在节点上运行。 -
负
score值表示资源应避免在节点上运行。 -
score值为-INFINITY表示资源必须避免在节点上运行。 -
如果没有指定
score,分数值默认为INFINITY。
-
正
-
默认情况下,没有定义资源位置限制。
指定资源 ID 和节点名称的资源位置约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您为资源位置约束配置的项目,用于指定资源模式是为资源位置约束配置的相同项目,用于指定资源 ID,但资源规格本身除外。您为资源规格指定的项目如下:
-
pattern(必需)- POSIX 扩展正则表达式资源 ID 与.
-
指定资源模式和节点名称的资源位置约束结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以为指定资源 ID 和规则的资源位置约束配置以下项目:
resource(必需)- 约束应用到的资源规格。-
id(必需)- 资源 ID。 -
role(可选)- 约束限制的资源角色:Started、Unpromoted,Promoted。
-
-
rule(必需)- 使用pcs语法编写的 Constraint 规则。如需更多信息,请参阅pcs(8)man page的约束位置部分。 - 指定的其他项目的含义与未指定规则的资源约束相同。
指定资源 ID 和规则的资源位置约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为资源位置约束配置的项目,用于指定资源模式,规则是用于资源位置约束的相同项目,用于指定资源 ID 和规则,但资源规格本身除外。您为资源规格指定的项目如下:
-
pattern(必需)- POSIX 扩展正则表达式资源 ID 与.
-
指定资源模式和规则的资源位置约束结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关创建具有资源限制的集群的
ha_cluster系统角色 playbook 示例 ,请参阅使用资源限制配置高可用性集群。ha_cluster_constraints_colocation此变量定义资源 colocation 约束。资源共存限制表示一个资源的位置取决于另一个资源的位置。存在两种类型的 colocation 约束:两个资源的一个简单 colocation 约束,并为多个资源设置 colocation 约束。
您可以为简单资源托管约束配置以下项目:
resource_follower(必需)- 应相对于resource_leader的资源。-
id(必需)- 资源 ID。 -
role(可选)- 约束限制的资源角色:Started、Unpromoted,Promoted。
-
resource_leader(必需)- 集群将决定优先放置此资源的位置,然后决定放置resource_follower的位置。-
id(必需)- 资源 ID。 -
role(可选)- 约束限制的资源角色:Started、Unpromoted,Promoted。
-
-
id(可选)- 约束 ID。如果未指定,它将自动生成。 options(可选)- “名称-值”字典列表。score- 设置约束的权重。-
正
score值表示资源应该在同一节点上运行。 -
负
score值表示资源应在不同的节点上运行。 -
score值为+INFINITY表示资源必须在同一节点上运行。 -
score值为-INFINITY表示资源必须在不同的节点上运行。 -
如果没有指定
score,分数值默认为INFINITY。
-
正
默认情况下,没有定义资源 colocation 约束。
简单资源 colocation 约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以为资源集托管约束配置以下项目:
resource_sets(必需)- 资源集合列表。-
resource_ids(必需)- 资源列表。 -
options(可选)- “名称/值”字典列表精细调整集合中资源如何被约束处理。
-
-
id(可选)- Same 值作为简单 colocation 约束。 -
options(可选)- Same 值作为简单 colocation 约束。
资源集 colocation 约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关创建具有资源限制的集群的
ha_cluster系统角色 playbook 示例 ,请参阅使用资源限制配置高可用性集群。ha_cluster_constraints_order此变量定义资源顺序约束。资源顺序限制表示应发生某些资源操作的顺序。有两种资源顺序约束:两个资源的简单顺序约束,以及多个资源的设置顺序约束。
您可以为简单资源顺序约束配置以下项目:
resource_first(必需)-resource_then资源依赖的资源。-
id(必需)- 资源 ID。 -
action(可选)- 在为resource_then资源启动操作前必须完成的操作。允许的值:start、stop、promote、demote。
-
resource_then(必需)- 依赖资源。-
id(必需)- 资源 ID。 -
action(可选)- 资源只能在resource_first资源执行操作后执行的操作。允许的值:start、stop、promote、demote。
-
-
id(可选)- 约束 ID。如果未指定,它将自动生成。 -
options(可选)- “名称-值”字典列表。
默认情况下,没有定义资源顺序限制。
简单资源顺序约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以为资源集顺序约束配置以下项目:
resource_sets(必需)- 资源集合列表。-
resource_ids(必需)- 资源列表。 -
options(可选)- “名称/值”字典列表精细调整集合中资源如何被约束处理。
-
-
id(可选)- 相同值作为简单顺序约束。 -
options(可选)- 相同值作为简单顺序约束。
资源集顺序约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关创建具有资源约束的集群的
ha_cluster系统角色 playbook 是示例,请参阅 配置具有资源约束的高可用性集群。ha_cluster_constraints_ticket此变量定义资源 ticket 约束。资源票据限制表示依赖于特定票据的资源。有两种类型的资源 ticket 约束:一个资源的简单 ticket 约束,多个资源的 ticket 顺序约束。
您可以为简单资源票据约束配置以下项目:
resource(必需)- 约束应用到的资源规格。-
id(必需)- 资源 ID。 -
role(可选)- 约束限制的资源角色:Started、Unpromoted,Promoted。
-
-
ticket(必需)- 资源所依赖的票据的名称。 -
id(可选)- 约束 ID。如果未指定,它将自动生成。 options(可选)- “名称-值”字典列表。-
loss-policy(可选)- 在撤销 ticket 时要对资源执行的操作。
-
默认情况下,没有定义资源 ticket 约束。
简单资源票据约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以为资源集票据约束配置以下项目:
resource_sets(必需)- 资源集合列表。-
resource_ids(必需)- 资源列表。 -
options(可选)- “名称/值”字典列表精细调整集合中资源如何被约束处理。
-
-
ticket(必需)- 相同值作为一个简单 ticket 约束。 -
id(可选)- 相同值作为简单票据约束。 -
选项(可选)- 相同值作为简单票据约束。
资源集 ticket 约束的结构如下:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关创建具有资源限制的集群的
ha_cluster系统角色 playbook 示例 ,请参阅使用资源限制配置高可用性集群。ha_cluster_qnetd(RHEL 8.8 及更高版本)此变量配置
qnetd主机,然后其可以作为集群的外部仲裁设备。您可以为
qnetd主机配置以下项目:-
present(可选)- 如果为true,则在主机上配置qnetd实例。如果为false,请从主机中删除qnetd配置。默认值为false。如果将其设置为true,则必须将ha_cluster_cluster_present设置为false。 -
start_on_boot(可选)- 配置qnetd实例是否应在引导时自动启动。默认值为true。 -
regenerate_keys(可选)- 将此变量设置为true以重新生成qnetdTLS 证书。如果重新生成了证书,则必须重新运行角色,以便每个集群再次连接到qnetd主机,或者手动运行pcs。
-
您无法在集群节点上运行
qnetd,因为隔离会破坏qnetd操作。有关使用仲裁设备配置集群的
ha_cluster系统角色 playbook 的示例,请参阅 使用仲裁设备配置集群。
25.2. 为 ha_cluster 系统角色指定清单 复制链接链接已复制到粘贴板!
使用 ha_cluster 系统角色 playbook 配置 HA 集群时,您可以在清单中为集群配置节点的名称和地址。
25.2.1. 在清单中配置节点名称和地址 复制链接链接已复制到粘贴板!
对于清单中的每个节点,您可以选择指定以下项目:
-
node_name- 集群中节点的名称。 -
pcs_address-pcs用于与节点进行通信的地址。它可以是名称、FQDN 或 IP 地址,并且可以包含端口号。 -
corosync_addresses- Corosync 使用的地址列表.组成特定集群的所有节点必须具有相同数量的地址,并且地址的顺序也很重要。
以下示例显示了一个具有目标 node1 和 node2 的清单。node1 和 node2 必须是完全限定域名,或者必须能够连接到节点,例如,名称可以通过 /etc/hosts 文件解析。
25.2.2. 在清单中配置 watchdog 和 SBD 设备 复制链接链接已复制到粘贴板!
使用 SBD 时,您可以选择性地为清单中的每个节点配置 watchdog 和 SBD 设备。虽然所有 SBD 设备都必须与所有节点共享,但每个节点也可以与设备使用不同的名称。每个节点的 watchdog 设备也可以不同。有关您可以在系统角色 playbook 中设置 SBD 变量的信息,请参阅 ha_cluster 系统角色变量中的 ha_cluster_sbd_enabled 和 ha_cluster_sbd_options 部分。
对于清单中的每个节点,您可以选择指定以下项目:
-
sbd_watchdog- SBD 使用的 Watchdog 设备。如果没有设置,则默认为/dev/watchdog。 -
sbd_devices- 用于交换 SBD 信息和监控的设备。如果没有设置,则默认为空列表。
以下示例显示了为目标 node1 和 node2 配置 watchdog 和 SBD 设备的清单。
25.3. 为高可用性集群创建 pcsd TLS 证书和密钥文件 复制链接链接已复制到粘贴板!
您可以使用 ha_cluster 系统角色在高可用性集群中创建 TLS 证书和密钥文件。运行此 playbook 时,ha_cluster 系统角色会在内部使用 certificate 系统角色来管理 TLS 证书。
先决条件
ansible-core和rhel-system-roles软件包已安装在您要运行 playbook 的节点上。注意您不需要在集群成员节点上安装
ansible-core。- 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
ha_cluster 系统角色替换指定节点上的任何现有集群配置。没有在角色中指定的任何设置都将丢失。
流程
- 创建一个指定集群中节点的清单文件,如在 为 ha_cluster 系统角色指定一个清单 中所述。
创建一个 playbook 文件,如
new-cluster.yml。注意为生产环境创建 playbook 文件时,vault 会加密密码,如在 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件配置一个运行
firewalld和selinux服务的集群,并在/var/lib/pcsd中创建自签名pcsd证书和私钥文件。pcsd证书具有文件名FILENAME.crt,密钥文件名为FILENAME.key。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
运行 playbook,指定在第 1 步中创建的清单文件清单的路径。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
25.4. 配置不运行任何资源的高可用性集群 复制链接链接已复制到粘贴板!
以下流程使用 ha_cluster 系统角色,创建没有配置隔离且没有运行任何资源的高可用性集群。
先决条件
您已在要运行 playbook 的节点上安装了
ansible-core。注意您不需要在集群成员节点上安装
ansible-core。-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
ha_cluster 系统角色替换指定节点上的任何现有集群配置。没有在角色中指定的任何设置都将丢失。
流程
- 创建一个指定集群中节点的清单文件,如在 为 ha_cluster 系统角色指定一个清单 中所述。
创建一个 playbook 文件,如
new-cluster.yml。注意为生产环境创建 playbook 文件时,vault 会加密密码,如在 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件配置一个运行
firewalld和selinux服务,而没有配置隔离的集群,且没有运行任何资源。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
运行 playbook,指定在第 1 步中创建的清单文件清单的路径。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
25.5. 配置带有隔离和资源的高可用性集群 复制链接链接已复制到粘贴板!
以下流程使用 ha_cluster 系统角色创建包括隔离设备、集群资源、资源组和克隆资源的高可用性集群。
先决条件
您已在要运行 playbook 的节点上安装了
ansible-core。注意您不需要在集群成员节点上安装
ansible-core。-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
ha_cluster 系统角色替换指定节点上的任何现有集群配置。没有在角色中指定的任何设置都将丢失。
流程
- 创建一个指定集群中节点的清单文件,如在 为 ha_cluster 系统角色指定一个清单 中所述。
创建一个 playbook 文件,如
new-cluster.yml。注意为生产环境创建 playbook 文件时,vault 会加密密码,如在 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件配置一个运行
firewalld和selinux服务的集群。集群包括隔离、多个资源和资源组。它还包含资源组的资源克隆。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
运行 playbook,指定在第 1 步中创建的清单文件清单的路径。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
25.6. 使用资源限制配置高可用性集群 复制链接链接已复制到粘贴板!
以下流程使用 ha_cluster 系统角色创建高可用性集群,其包含资源位置约束、资源 colocation 约束、资源顺序限制和资源票据限制。
先决条件
您已在要运行 playbook 的节点上安装了
ansible-core。注意您不需要在集群成员节点上安装
ansible-core。-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
ha_cluster 系统角色替换指定节点上任何现有的群集配置。没有在角色中指定的任何设置都将丢失。
流程
- 创建一个指定集群中节点的清单文件,如在 为 ha_cluster 系统角色指定一个清单 中所述。
创建一个 playbook 文件,如
new-cluster.yml。注意为生产环境创建 playbook 文件时,vault 会加密密码,如在 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件配置一个运行
firewalld和selinux服务的集群。集群包括资源位置约束、资源托管约束、资源顺序约束和资源票据约束。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
运行 playbook,指定在第 1 步中创建的清单文件清单的路径。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
25.7. 在高可用性集群中配置 Corosync 值 复制链接链接已复制到粘贴板!
以下流程使用 ha_cluster 系统角色来创建配置 Corosync 值的高可用性集群。
先决条件
您已在要运行 playbook 的节点上安装了
ansible-core。注意您不需要在集群成员节点上安装
ansible-core。-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
ha_cluster 系统角色替换指定节点上的任何现有集群配置。没有在角色中指定的任何设置都将丢失。
流程
- 创建一个指定集群中节点的清单文件,如在 为 ha_cluster 系统角色指定一个清单 中所述。
创建一个 playbook 文件,如
new-cluster.yml。注意为生产环境创建 playbook 文件时,Vault 会加密密码,如 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件配置一个运行
firewalld和selinux服务的集群,该集群配置 Corosync 属性。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
运行 playbook,指定在第 1 步中创建的清单文件清单的路径。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
25.8. 使用 SBD 节点隔离配置高可用性集群 复制链接链接已复制到粘贴板!
以下流程使用 ha_cluster 系统角色创建使用 SBD 节点隔离的高可用性集群。
先决条件
您已在要运行 playbook 的节点上安装了
ansible-core。注意您不需要在集群成员节点上安装
ansible-core。-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
ha_cluster 系统角色替换指定节点上的任何现有集群配置。没有在角色中指定的任何设置都将丢失。
流程
- 创建一个指定集群中节点的清单文件,如在 为 ha_cluster 系统角色指定一个清单 中所述。您可以选择在清单文件中为集群中的每个节点配置 watchdog 和 SBD 设备。
创建一个 playbook 文件,如
new-cluster.yml。注意为生产环境创建 playbook 文件时,vault 会加密密码,如在 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件配置一个运行
firewalld和selinux服务的集群,该集群使用 SBD 隔离。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
运行 playbook,指定在第 1 步中创建的清单文件清单的路径。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
25.9. 使用仲裁设备配置高可用性集群 复制链接链接已复制到粘贴板!
要使用 ha_cluster 系统角色,使用单独的仲裁设备配置一个高可用性集群,首先要设置仲裁设备。设置仲裁设备后,您可以在任意数量的集群中使用该设备。
25.9.1. 配置仲裁设备 复制链接链接已复制到粘贴板!
要使用 ha_cluster 系统角色配置仲裁设备,请按照以下步骤操作。请注意,您不能在集群节点上运行仲裁设备。
先决条件
ansible-core和rhel-system-roles软件包已安装在您要运行 playbook 的节点上。注意您不需要在集群成员节点上安装
ansible-core。- 您要用来运行仲裁设备的系统有涵盖 RHEL 和 RHEL High Availability 附加组件的有效订阅。
ha_cluster 系统角色替换指定节点上的任何现有集群配置。没有在角色中指定的任何设置都将丢失。
流程
创建一个 playbook 文件,如
qdev-playbook.yml。注意为生产环境创建 playbook 文件时,vault 会加密密码,如在 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件在运行
firewalld和selinux服务的系统上配置一个仲裁设备。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
运行 playbook,为仲裁设备指定主机节点。
ansible-playbook -i nodeQ, qdev-playbook.yml
# ansible-playbook -i nodeQ, qdev-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
25.9.2. 配置一个集群以使用仲裁设备 复制链接链接已复制到粘贴板!
要将集群配置为使用仲裁设备,请按照以下步骤操作。
先决条件
您已在要运行 playbook 的节点上安装了
ansible-core。注意您不需要在集群成员节点上安装
ansible-core。-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
- 您已配置了一个仲裁设备。
ha_cluster 系统角色替换指定节点上任何现有的群集配置。没有在角色中指定的任何设置都将丢失。
流程
- 创建一个指定集群中节点的清单文件,如在 为 ha_cluster 系统角色指定一个清单 中所述。
创建一个 playbook 文件,如
new-cluster.yml。注意为生产环境创建 playbook 文件时,vault 会加密密码,如在 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件配置一个运行
firewalld和selinux服务的集群,该集群使用一个仲裁设备。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
运行 playbook,指定在第 1 步中创建的清单文件清单的路径。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
25.10. 使用 ha_cluster 系统角色在高可用性集群中配置 Apache HTTP 服务器 复制链接链接已复制到粘贴板!
这个过程使用 ha_cluster 系统角色在双节点 Red Hat Enterprise Linux High Availability Add-On 集群中配置主动/被动 Apache HTTP 服务器。
先决条件
您已在要运行 playbook 的节点上安装了
ansible-core。注意您不需要在集群成员节点上安装
ansible-core。-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
- 您的系统包括 Apache 需要的一个公共虚拟 IP 地址。
- 您的系统包括集群中节点的共享存储,使用 iSCSI、光纤通道或其他共享网络块的设备。
- 您已配置了具有 XFS 文件系统的 LVM 逻辑卷,如在 在 Pacemaker 集群中配置具有 XFS 文件系统的 LVM 卷 中所述。
- 您已配置了 Apache HTTP 服务器,如 配置 Apache HTTP 服务器 中所述。
- 您的系统包含一个用于隔离群集节点的 APC 电源开关。
ha_cluster 系统角色替换指定节点上的任何现有集群配置。没有在角色中指定的任何设置都将丢失。
流程
- 创建一个指定集群中节点的清单文件,如在 为 ha_cluster 系统角色指定一个清单 中所述。
创建一个 playbook 文件,如
http-cluster.yml。注意为生产环境创建 playbook 文件时,vault 会加密密码,如在 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件在运行
firewalld和selinux服务的主动/被动双节点 HA 集群中配置一个之前创建的 Apache HTTP 服务器。这个示例使用主机名为
zapc.example.com的 APC 电源开关。如果集群不使用任何其他隔离代理,则您可以选择在定义ha_cluster_fence_agent_packages变量时只列出集群所需的隔离代理。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
运行 playbook,指定在第 1 步中创建的清单文件清单的路径。
ansible-playbook -i inventory http-cluster.yml
# ansible-playbook -i inventory http-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当您使用
apache资源代理来管理 Apache 时,它不会使用systemd。因此,您必须编辑 Apache 提供的logrotate脚本,使其不使用systemctl重新加载 Apache。在集群中的每个节点上删除
/etc/logrotate.d/httpd文件中的以下行:/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下三行替换您删除的行,将
/var/run/httpd-website.pid指定为 PID 文件路径,其中 website 是 Apache 资源的名称。在本例中,Apache 资源名称是Website。/usr/bin/test -f /var/run/httpd-Website.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /var/run/httpd-Website.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /var/run/httpd-Website.pid" -k graceful > /dev/null 2>/dev/null || true
/usr/bin/test -f /var/run/httpd-Website.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /var/run/httpd-Website.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /var/run/httpd-Website.pid" -k graceful > /dev/null 2>/dev/null || trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
从集群中的一个节点检查集群的状态。请注意,所有四个资源都运行在同一个节点上,
z1.example.com。如果发现配置的资源没有运行,则您可以运行
pcs resource debug-start resource命令来测试资源配置。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 集群启动并运行后,您可以将浏览器指向定义为
IPaddr2资源的 IP 地址,来查看示例显示,包含简单的单词"Hello"。Hello
HelloCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要测试运行在
z1.example.com上的资源组是否可以切换到节点z2.example.com,请将节点z1.example.com置于待机模式,之后该节点将不能再托管资源。pcs node standby z1.example.com
[root@z1 ~]# pcs node standby z1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将节点
z1置于待机模式后,从集群中的某个节点检查集群状态。请注意,资源现在都应运行在z2上。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义的 IP 地址的网页仍会显示,而不中断。
要从
待机模式中删除z1,请输入以下命令。pcs node unstandby z1.example.com
[root@z1 ~]# pcs node unstandby z1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意从
待机模式中删除节点本身不会导致资源切换到该节点。这将依赖于资源的resource-stickiness值。有关resource-stickiness元属性的详情,请参考 配置资源以首选其当前节点。
第 26 章 使用 cockpit RHEL 系统角色安装和配置 web 控制台 复制链接链接已复制到粘贴板!
使用 cockpit RHEL 系统角色,您可以在系统中安装和配置 Web 控制台。
26.1. cockpit 系统角色 复制链接链接已复制到粘贴板!
您可以使用 cockpit 系统角色自动部署和启用 Web 控制台,从而从 Web 浏览器管理 RHEL 系统。
26.2. cockpit RHEL 系统角色的变量 复制链接链接已复制到粘贴板!
用于 cockpit RHEL 系统角色的参数有:
| 角色变量 | 描述 |
|---|---|
| cockpit_packages: (默认为 default) | 设置其中一个预定义的软件包集:default、min 或 full。 * cockpit_packages:(默认为 default)- 最常见的页面和按需安装 UI * cockpit_packages:(默认为 minimal)- 仅 Overview、Terminal、Logs、accounts 和 Metrics 页面;最小依赖项 * cockpit_packages:(默认为 full)- 所有可用的页面 (可选)指定您自己的 cockpit 软件包选择。 |
| cockpit_enabled: (默认值:true) | 配置是否启用了 web 控制台 web 服务器,以便在系统引导时自动启动 |
| cockpit_started: (默认值:true) | 配置 Web 控制台是否应启动 |
| cockpit_config:(默认为 nothing) |
您可以在 |
| cockpit_port: (默认值: 9090) | 默认情况下,Web 控制台在端口 9090 上运行。您可以使用这个选项更改端口。 |
| cockpit_manage_firewall: (默认值:false) |
允许 |
| cockpit_manage_selinux: (默认值: false) |
允许 |
| cockpit_certificates: (默认值:nothing) |
允许 |
26.3. 使用 cockpit RHEL 系统角色安装 Web 控制台 复制链接链接已复制到粘贴板!
您可以使用 cockpit 系统角色安装并启用 RHEL web 控制台。
默认情况下,RHEL web 控制台使用自签名证书。为了安全起见,您可以指定由可信证书颁发机构发布的证书。
在本例中,您可以使用 cockpit 系统角色来:
- 安装 RHEL web 控制台。
-
允许 web 控制台管理
firewalld。 -
将 web 控制台设置为使用
ipatrusted 证书颁发机构的证书,而不使用自签名证书。 - 将 web 控制台设置为使用自定义端口 9050。
您不必在 playbook 中调用 firewall 或 certificate 系统角色来管理防火墙或创建证书。cockpit 系统角色根据需要自动调用它们。
先决条件
- 访问一个或多个 受管节点。
对 控制节点 的访问和权限。
在控制节点上:
- Red Hat Ansible Engine 已安装。
-
rhel-system-roles软件包已安装。 - 存在一个列出受管节点的清单文件。
流程
使用以下内容创建新的
playbook.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:验证 playbook 语法:
ansible-playbook --syntax-check -i inventory_file playbook.yml
# ansible-playbook --syntax-check -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 27 章 使用 podman RHEL 系统角色管理容器 复制链接链接已复制到粘贴板!
使用 podman RHEL 系统角色,您可以管理 Podman 配置、容器和运行 Podman 容器的 systemd 服务。
27.1. podman RHEL 系统角色 复制链接链接已复制到粘贴板!
您可以使用 podman RHEL 系统角色管理 Podman 配置、容器和运行 Podman 容器的 systemd 服务。
27.2. podman RHEL 系统角色的变量 复制链接链接已复制到粘贴板!
用于 podman RHEL 系统角色的参数有:
| 变量 | 描述 |
|---|---|
|
| 描述要管理的 podman pod 和对应的 systemd 单元。
|
|
|
如果为 true,该角色确保在 注意 目录必须指定为绝对路径(用于 root 容器),或者相对于主目录的路径(对于非 root 容器),以便角色管理它们。其他任何内容都被忽略。
该角色将其默认所有权或权限应用到目录。如果需要设置所有权或权限,请参阅 |
|
|
它是字典。如果使用 |
|
| 它是一个字典列表。指定您希望角色在防火墙中管理的端口。这使用的格式与 firewall RHEL 系统角色使用的格式相同。 |
|
| 它是一个字典列表。指定您希望角色为角色使用的端口管理 SELinux 策略的端口。这使用的格式与 selinux RHEL 系统角色使用的格式相同。 |
|
|
指定用于所有无根容器的用户名称。您还可以使用 注意 用户必须已经存在。 |
|
|
指定用于所有无根容器的组名称。您还可以在 注意 组必须已经存在。 |
|
|
定义所有 |
|
|
将 |
|
|
将 |
|
|
将 |
|
|
将 |
第 28 章 使用 RHEL 系统角色将 RHEL 系统直接与 AD 集成 复制链接链接已复制到粘贴板!
使用 ad_integration 系统角色,您可以使用 Red Hat Ansible Automation Platform 自动将 RHEL 系统与活动目录(AD)集成。
本章涵盖了以下主题:
28.1. ad_integration 系统角色 复制链接链接已复制到粘贴板!
使用 ad_integration 系统角色,您可以将 RHEL 系统直接连接到 活动目录(AD)。
该角色使用以下组件:
- SSSD 与中央身份和身份验证源交互
-
realmd来检测可用的 AD 域,并配置底层 RHEL 系统服务(在本例中为 SSSD)来连接到所选 AD 域
ad_integration 角色用于使用没有身份管理(IdM)环境的直接 AD 集成的部署。对于 IdM 环境,请使用 ansible-freeipa 角色。
28.2. ad_integration RHEL 系统角色的变量 复制链接链接已复制到粘贴板!
ad_integration RHEL 系统角色使用以下参数:
| 角色变量 | 描述 |
|---|---|
| ad_integration_realm | 活动目录领域或要加入的域名。 |
| ad_integration_password | 在将机器加入到域时用来进行身份验证的用户密码。不要使用纯文本。反之,使用 Ansible Vault 来加密值。 |
| ad_integration_manage_crypto_policies |
如果为
默认: |
| ad_integration_allow_rc4_crypto |
如果为
提供此变量会自动将
默认: |
| ad_integration_timesync_source |
与系统时钟同步的时间源的主机名或 IP 地址。提供此变量会自动将 |
28.3. 使用 ad_integration 系统角色将 RHEL 系统直接连接到 AD 复制链接链接已复制到粘贴板!
您可以使用 ad_integration 系统角色,通过运行 Ansible playbook 配置 RHEL 系统和 AD 域之间的直接集成。
从 RHEL8 开始,RHEL 默认不再支持 RC4 加密。如果无法在 AD 域中启用 AES,您必须启用 AD-SUPPORT 加密策略,并在 playbook 中允许 RC4 加密。
RHEL 服务器和 AD 之间的时间必须同步。您可以通过在 playbook 中使用 timesync 系统角色来确保这一点。
在本例中,RHEL 系统使用 AD Administrator 用户和存储在 Ansible vault 中的此用户的密码加入 domain.example.com AD 域。playbook 还设置 AD-SUPPORT 加密策略,并允许 RC4 加密。为确保 RHEL 系统和 AD 之间的时间同步,playbook 会将 adserver.domain.example.com 服务器设置为 timesync 源。
先决条件
- 访问一个或多个 受管节点。
对 控制节点 的访问和权限。
在控制节点上:
- Red Hat Ansible Engine 已安装。
-
rhel-system-roles软件包已安装。 - 列出受管节点的清单文件。
AD 域控制器上的以下端口已开放,并可从 RHEL 服务器访问:
Expand 表 28.1. 使用 ad_integration 系统角色将 Linux 系统直接集成到 AD 所需的端口 源端口 目的地端口 协议 服务 1024:65535
53
UDP 和 TCP
DNS
1024:65535
389
UDP 和 TCP
LDAP
1024:65535
636
TCP
LDAPS
1024:65535
88
UDP 和 TCP
Kerberos
1024:65535
464
UDP 和 TCP
Kerberos 更改/设置密码(
kadmin)1024:65535
3268
TCP
LDAP 全局目录
1024:65535
3269
TCP
LDAP 全局目录 SSL/TLS
1024:65535
123
UDP
NTP/Chrony (可选)
1024:65535
323
UDP
NTP/Chrony (可选)
流程
使用以下内容创建一个新的
ad_integration.yml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:验证 playbook 语法。
ansible-playbook --syntax-check ad_integration.yml -i inventory_file
# ansible-playbook --syntax-check ad_integration.yml -i inventory_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在清单文件上运行 playbook:
ansible-playbook -i inventory_file /path/to/file/ad_integration.yml
# ansible-playbook -i inventory_file /path/to/file/ad_integration.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
显示 AD 用户详情,如
administrator用户:getent passwd administrator@ad.example.com administrator@ad.example.com:*:1450400500:1450400513:Administrator:/home/administrator@ad.example.com:/bin/bash
getent passwd administrator@ad.example.com administrator@ad.example.com:*:1450400500:1450400513:Administrator:/home/administrator@ad.example.com:/bin/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow
28.4. 其他资源 复制链接链接已复制到粘贴板!
-
/usr/share/ansible/roles/rhel-system-roles.ad_integration/README.md文件。 -
man ansible-playbook (1)