linux-system-roles.cockpit
Cockpit
安装和配置支持的发行版(如 RHEL、CentOS、Fedora、Debian 和 Ubuntu)的 Cockpit 网页控制台。
需求
RHEL/CentOS 7.x 需要启用 Extras 存储库。
收集要求
如果 cockpit_manage_firewall
和 cockpit_manage_selinux
分别设置为 true
,则该角色需要来自 fedora.linux_system_roles
集合的 firewall
和 selinux
角色。如果 cockpit
是来自 fedora.linux_system_roles
集合或 Fedora RPM 包的角色,则条件已满足。
如果您希望使用此角色管理 rpm-ostree
系统,您需要安装其他集合。请运行以下命令来安装集合。
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
角色变量
每个发行版的可用变量如下所示,并附带默认值(见 defaults/main.yml
):
cockpit_packages
主要变量是 cockpit_packages
,允许您指定要安装的自定义 Cockpit 包,或选择三组预定义的包集之一:default
、minimal
或 full
。如果您未定义此变量,默认选项为 default
。请注意,安装的包可能因发行版和版本而异,因为不同版本的 Cockpit 功能包随时间变化而变化。此外,某些包可能在所有发行版中不可用,例如在 RHEL 中被弃用的 cockpit-docker
,其替代方案是 cockpit-podman
。
显式安装 Cockpit 包的示例。依赖项应提取最小 Cockpit 包以确保其正常工作。
cockpit_packages:
- cockpit-storaged
- cockpit-podman
使用预定义包集的示例。这是推荐的安装方法。
cockpit_packages: default
# 等同于
# - cockpit
# - cockpit-networkmanager
# - cockpit-packagekit
# - cockpit-selinux
# - cockpit-storaged
cockpit_packages: minimal
# 等同于
# - cockpit-system
# - cockpit-ws
cockpit_packages: full
# 等同于提取所有包
# - cockpit-*
# 这将提取许多包,例如
# - cockpit ## 默认列表
# - cockpit-bridge
# - cockpit-networkmanager
# - cockpit-packagekit
# - cockpit-selinux
# - cockpit-storaged
# - cockpit-system
# - cockpit-ws
## 以及所有其他包
# - cockpit-389-ds
# - cockpit-composer
# - cockpit-dashboard
# - cockpit-doc
# - cockpit-kdump
# - cockpit-machines
# - cockpit-pcp
# - cockpit-podman
# - cockpit-session-recording
# - cockpit-sosreport
cockpit_enabled
cockpit_enabled: true
布尔变量,用于控制 Cockpit 是否在启动时自动启用(默认 true
)。
cockpit_started
cockpit_started: true
布尔变量,用于控制 Cockpit 是否应启动/运行(默认 true
)。
cockpit_config
cockpit_config: # 配置 /etc/cockpit/cockpit.conf
WebService: # 指定 "WebService" 配置部分
LoginTitle: "自定义登录屏幕标题" # 在 "WebService" 部分设置 "LoginTitle"
MaxStartups: 20 # 在 "WebService" 部分设置 "MaxStartups"
Session: # 指定 "Session" 配置部分
IdleTimeout: 15 # 在 "Session" 部分设置 "IdleTimeout"
Banner: "/etc/motd" # 在 "Session" 部分设置 "Banner"
在 /etc/cockpit/cockpit.conf 文件中配置设置。有关可用设置的列表,请参见 man cockpit.conf
。之前的设置将丢失,即使在角色变量中未指定(不会尝试保留或合并之前的设置,配置文件将完全替换)。
cockpit_port
cockpit_port: 9090
Cockpit 默认运行在 9090 端口。您可以使用此选项更改端口。
cockpit_manage_firewall
cockpit_manage_firewall: false
布尔变量,用于通过 firewall
角色控制 cockpit
防火墙服务。如果该变量设置为 false
,则 cockpit
角色不会管理防火墙。默认为 false
。
注意:cockpit_manage_firewall
仅限于 添加 端口。不能用于 删除 端口。如果要删除端口,您需要直接使用防火墙系统角色。
注意:此功能仅在受管主机的 os_family
为 RedHat
时受支持。
cockpit_manage_selinux
cockpit_manage_selinux: false
布尔变量,允许使用 selinux 角色配置 selinux。默认 SELinux 策略不允许 Cockpit 监听除 9090 端口以外的任何端口。如果更改端口,请启用此选项以使用 selinux 角色设置正确的端口权限(websm_port_t)。如果该变量设置为 false
,则 cockpit
角色不会管理 Cockpit 端口的 SELinux 权限。
注意:cockpit_manage_selinux
仅限于 添加 策略。不能用于 删除 策略。如果要删除策略,您需要直接使用 selinux 系统角色。
注意:此功能仅在受管主机的 os_family
为 RedHat
时受支持。
有关详细信息,请参见 Cockpit 指南。
cockpit_transactional_update_reboot_ok
cockpit_transactional_update_reboot_ok: true
此变量用于处理事务更新所需的重启。如果事务更新需要重启,并且 cockpit_transactional_update_reboot_ok
设置为 true,角色将继续重启。如果设置为 false,角色将通知用户需要重启,允许自定义处理重启要求。如果未设置此变量,角色将失败以确保不忽视重启要求。
证书设置
默认情况下,Cockpit 在第一次启动时为自己创建自签名证书。对于使用实际证书的环境,这应 进行自定义。
使用现有证书
如果您的服务器已经有一些证书,并希望 Cockpit 也使用这些证书,请将 cockpit_cert
和 cockpit_private_key
角色选项指向它们:
cockpit_cert: /path/to/server.crt
cockpit_private_key: /path/to/server.key
这将创建 /etc/cockpit/ws-certs.d/50-system-role.{crt,key}
的符号链接。
请注意,此功能需要至少 Cockpit 版本 257,即 RHEL ≥ 8.6 或 ≥ 9.0,或 Fedora ≥ 34。
生成新证书
建议为 Cockpit 生成新证书时设置 cockpit_certificates
变量。cockpit_certificates
的值传递给 cockpit
角色内部调用的 certificate_requests
变量,该变量生成私钥和证书。有关 cockpit_certificates
支持的参数,请参见 certificate_requests
角色文档部分。
设置 cockpit_certificates
时,不得设置 cockpit_private_key
和 cockpit_cert
变量,因为它们将被忽略。
以下示例假定您的机器已加入 FreeIPA 域,安装 Cockpit 并使用 IdM 签发的 Web 服务器证书。
- name: 使用 Cockpit Web 服务器证书安装 Cockpit
include_role:
name: linux-system-roles.cockpit
vars:
cockpit_certificates:
- name: monger-cockpit
dns: ['localhost', 'www.example.com']
ca: ipa
group: cockpit-ws
注意:在剧本中使用 certificate
系统角色生成新证书仍然受支持。
此示例也安装 Cockpit,并使用 IdM 签发的 Web 服务器证书。
# 此步骤仅在 Cockpit 版本 < 255 时必要;特别是在 RHEL/CentOS 8 上
- name: 允许 certmonger 写入 Cockpit 的证书目录
file:
path: /etc/cockpit/ws-certs.d/
state: directory
setype: cert_t
- name: 生成 Cockpit Web 服务器证书
include_role:
name: fedora.linux_system_roles.certificate
vars:
certificate_requests:
- name: /etc/cockpit/ws-certs.d/monger-cockpit
dns: ['localhost', 'www.example.com']
ca: ipa
group: cockpit-ws # 或在较新 Cockpit 版本中为 cockpit-wsinstance
注意:certificate
角色,除非使用 IPA 并将系统加入 IPA 域,否则将创建自签名证书,因此您需要显式配置信任,这在系统角色中当前不支持。要使用 ca: self-sign
或 ca: local
,请根据您的 certmonger 使用情况,参见 linux-system-roles.certificate 文档 了解详细信息。
注意:在 RHEL/CentOS-7 上不支持创建自签名证书。
示例剧本
最简单的示例。
---
- name: 管理 Cockpit
hosts: fedora, rhel7, rhel8
become: true
roles:
- linux-system-roles.cockpit
另一个示例,将角色作为任务控制操作执行时间。建议使用 fedora.linux_system_roles.firewall 角色配置防火墙,以使服务可访问。
---
tasks:
- name: 安装 RHEL/Fedora Web 控制台(Cockpit)
include_role:
name: linux-system-roles.cockpit
vars:
cockpit_packages: default
#cockpit_packages: minimal
#cockpit_packages: full
- name: 为 Web 控制台配置防火墙
include_role:
name: fedora.linux_system_roles.firewall
vars:
firewall:
service: cockpit
state: enabled
rpm-ostree
请参见 README-ostree.md
许可证
GPLv3