linux-system-roles.cockpit

Cockpit

安装和配置支持的发行版(如 RHEL、CentOS、Fedora、Debian 和 Ubuntu)的 Cockpit 网页控制台。

需求

RHEL/CentOS 7.x 需要启用 Extras 存储库。

收集要求

如果 cockpit_manage_firewallcockpit_manage_selinux 分别设置为 true,则该角色需要来自 fedora.linux_system_roles 集合的 firewallselinux 角色。如果 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 包,或选择三组预定义的包集之一:defaultminimalfull。如果您未定义此变量,默认选项为 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_familyRedHat 时受支持。

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_familyRedHat 时受支持。

有关详细信息,请参见 Cockpit 指南

cockpit_transactional_update_reboot_ok

cockpit_transactional_update_reboot_ok: true

此变量用于处理事务更新所需的重启。如果事务更新需要重启,并且 cockpit_transactional_update_reboot_ok 设置为 true,角色将继续重启。如果设置为 false,角色将通知用户需要重启,允许自定义处理重启要求。如果未设置此变量,角色将失败以确保不忽视重启要求。

证书设置

默认情况下,Cockpit 在第一次启动时为自己创建自签名证书。对于使用实际证书的环境,这应 进行自定义

使用现有证书

如果您的服务器已经有一些证书,并希望 Cockpit 也使用这些证书,请将 cockpit_certcockpit_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_keycockpit_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-signca: 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

关于项目

Install and enable the Cockpit Web Console

安装
ansible-galaxy install linux-system-roles.cockpit
许可证
gpl-3.0
下载
170k