配置管理

您可以使用配置文件和通道管理客户端的配置,而无需手动配置每个客户端。

以下部分功能仅适用于传统客户端。有关 Salt 客户端支持的功能,请参见下表。

配置参数编写在脚本中并存储在配置文件中。您可以使用 SUSE Manager Web UI 直接写入配置文件,也可以上载或关联到其他位置存在的文件。

您可以集中管理或在本地管理配置文件。集中管理的配置文件由全局配置通道提供,并且可以应用到订阅了 SUSE Manager 服务器的任何客户端。在本地管理的配置文件用于覆盖集中管理的配置设置。对于没有配置管理特权,但又需要更改所管理的客户端的 SUSE Manager 用户,这些文件特别有用。

配置通道用于组织配置文件。您可以为客户端订阅配置通道,并根据需要部署配置文件。

配置文件有版本控制,因此您可以添加配置设置,在您的客户端上对其进行测试,并根据需要将其回滚到之前的修订版。如果您已创建配置通道,还可以在不同的配置文件以及同一配置文件的不同修订版之间进行比较。

您可以集中管理或在本地管理配置文件。集中管理的配置文件由全局配置通道提供。在本地管理的配置文件直接创建或上载到 SUSE Manager 中。

Salt 客户端与传统客户端可用的配置管理功能有所不同。下表显示了不同客户端类型支持的功能:

此表中图标的含意如下:

  • 功能受 SUSE 支持

  • 功能不受 SUSE 支持

  • 功能正在考虑之中,日后可能受支持,也可能不受支持。

Table 1. 配置管理支持的功能
功能 Salt 传统

全局配置通道

部署文件

比较文件

本地管理的文件

(结合 Salt 功能)

沙箱文件

应用 Highstate

从客户端导入文件

建立 Jinja 模板

配置宏

结合 Salt 功能(grain、pillar 数据等)

1. 为配置管理准备传统客户端

传统客户端需要进行一些额外的准备工作才能使用配置管理。如果您是使用 AutoYaST 或 Kickstart 安装传统客户端的,那么您可能已经拥有相应的软件包。对于其他传统客户端,请确保您已为客户端操作系统安装了相关的工具子通道。有关软件通道的详细信息,请参见 软件通道

您需要的软件包包括:

  • mgr-cfg:所有 mgr-cfg-* 软件包都需要的基础库和功能

  • mgr-cfg-actions:运行通过 SUSE Manager 安排的配置操作需要该软件包。

  • mgr-cfg-client:提供配置管理系统的客户端功能的命令行界面。

  • mgr-cfg-management:提供用于管理 SUSE Manager 配置的命令行界面。

您可以在引导过程中安装这些软件包,方法是导航到系统  激活密钥,单击要在引导期间使用的激活密钥,并选中配置文件部署选项。有关激活密钥的详细信息,请参见 激活密钥

2. 创建配置通道

要创建新的中心配置通道,请执行以下操作:

过程:创建中心配置通道
  1. 在 SUSE Manager Web UI 中,导航到配置  通道,然后单击 创建配置通道

  2. 键入通道的名称。

  3. 键入通道的标签。 此字段只能包含字母、数字、连字符 (-) 和下划线 (_)。

  4. 键入用于与其他通道进行区分的通道说明。

  5. 单击 创建配置通道 以创建新通道。

您也可以使用配置通道管理 Salt 客户端上的 Salt 状态。

过程:创建 Salt 状态通道
  1. 在 SUSE Manager Web UI 中,导航到配置  通道,然后单击 创建状态通道

  2. 键入通道的名称。

  3. 键入通道的标签。 此字段只能包含字母、数字、连字符 (-) 和下划线 (_)。

  4. 键入用于与其他通道进行区分的通道说明。

  5. init.sls 文件键入 SLS 内容

  6. 单击 创建配置通道 以创建新通道。

3. 添加配置文件、目录或符号链接

如果您已创建配置通道,则可以添加配置文件、目录或符号链接:

过程:添加配置文件、目录或符号链接
  1. 在 SUSE Manager Web UI 中,导航到配置  通道,单击要向其添加配置文件的配置通道的名称,然后导航到添加文件  创建文件子选项卡。

  2. 文件类型字段中,选择是要创建文本文件、目录还是符号链接。

  3. 文件名/路径字段中,键入应部署文件的位置的绝对路径。

  4. 如果您要创建符号链接,请在符号链接目标文件名/路径字段中键入目标文件和路径。

  5. 所有权字段中键入该文件的用户名组名称,以及文件权限模式

  6. 如果客户端启用了 SELinux,您可以配置 SELinux 上下文以启用所需的文件属性(例如用户、角色和文件类型)。

  7. 如果配置文件包含宏,请输入标记宏开始位置和结束位置的符号。

  8. 文件内容文本框中,使用脚本下拉框选择相应的脚本语言输入配置文件内容。

  9. 单击 创建配置文件

4. 为客户端订阅配置通道

您可以为单个客户端订阅配置通道,方法是导航到系统  系统列表,选择要使用的客户端,然后导航到配置选项卡。要为多个客户端订阅配置通道,可以使用系统集管理器 (SSM)。

过程:为多个客户端订阅配置通道
  1. 在 SUSE Manager Web UI 中,导航到系统  系统列表,然后选择要使用的客户端。

  2. 导航到系统  系统集管理器,然后转到配置  订阅通道子选项卡,以查看可用配置通道的列表。

  3. 可选:单击目前订阅的系统列中的数字以查看目前订阅了配置通道的客户端。

  4. 选中要订阅的配置通道,然后单击 继续

  5. 使用向上和向下箭头对配置通道排名。 两个配置通道之间的设置发生冲突时,系统会优先使用更靠近列表顶部的通道。

  6. 确定通道应用到所选客户端的方式。 单击 订阅为最低优先级 可将新通道添加为比目前订阅的通道都低的优先级。单击 订阅为最高优先级 可将新通道添加为比目前订阅的通道都高的优先级。单击 替换现有订阅 可去除现有通道并将其替换为新通道。

  7. 单击 应用订阅

如果新配置通道优先级与现有通道冲突,系统会去除重复的通道并根据新优先级进行替换。如果某个操作要对客户端的配置优先级重新排序,Web UI 会要求您在继续之前先确认更改。

5. 比较配置文件

您也可以使用系统集管理器 (SSM) 将客户端上部署的配置文件与存储在 SUSE Manager 服务器上的配置文件进行比较。

过程:比较配置文件
  1. 在 SUSE Manager Web UI 中,导航到系统  系统列表,然后选择订阅了要比较的配置文件的客户端。

  2. 导航到系统  系统集管理器,然后转到配置  比较文件子选项卡,以查看可用配置文件的列表。

  3. 可选:单击系统列中的数字以查看目前订阅了配置文件的客户端。

  4. 选中要比较的配置文件,然后单击 安排文件比较

6. Jinja templating on clients

Jinja templating is possible on Salt clients. Jinja is only evaluated when content is processed by the Salt engine. Jinja provides variables from pillars or grains. They can be used in files managed by Salt (for example, via file.managed) or Salt states.

File configuration channels deliver static files without Jinja processing. State channel files are only applied if referenced in a Salt state.

有关详细信息,请参见 https://docs.saltproject.io/salt/user-guide/en/latest/topics/jinja.html,该页面包含以下示例:

{% if grains.os_family == 'RedHat' %}
  {% set dns_cfg = '/etc/named.conf' %}
{% elif grains.os_family == 'Debian' %}
  {% set dns_cfg = '/etc/bind/named.conf' %}
{% else %}
  {% set dns_cfg = '/etc/named.conf' %}
{% endif %}
dns_conf:
  file.managed:
    - name: {{ dns_cfg }}
    - source: salt://dns/files/named.conf
    - template: jinja

7. 传统客户端上的配置文件宏

能够存储一个文件并共用相同的配置非常有用,但有些情况下,您可能需要同一配置文件的许多变体,或者需要只有系统特定细节(例如主机名和 MAC 地址)不同的多个配置文件。在此情况下,您可以在配置文件中使用宏或变量。这样您便可上载和分发包含数百甚至数千变体的单个文件。除了用于提供自定义系统信息的变量外,我们还支持以下标准宏:

rhn.system.sid
rhn.system.profile_name
rhn.system.description
rhn.system.hostname
rhn.system.ip_address
rhn.system.custom_info(key_name)
rhn.system.net_interface.ip_address(eth_device)
rhn.system.net_interface.netmask(eth_device)
rhn.system.net_interface.broadcast(eth_device)
rhn.system.net_interface.hardware_address(eth_device)
rhn.system.net_interface.driver_module(eth_device)

要使用此功能,请通过配置通道细节页面上载或创建配置文件。然后打开其配置文件细节页面,并根据需要包含支持的宏。请确保用于偏置变量的分界符与宏起始分界符宏结束分界符字段中设置的分界符匹配,并且与文件中的其他字符不冲突。我们建议使用长度为两个字符且不含百分号 (%) 的分界符。

例如,您可能有一个适用于所有服务器,但只有 IP 地址和主机名不同的文件。您无需为每台服务器都管理一个单独的配置文件,而是可以创建一个文件(例如 server.conf),在其中包含 IP 地址和主机名宏。

hostname={| rhn.system.hostname |}
ip_address={| rhn.system.net_interface.ip_address(eth0) |}

当文件传送到各个系统时(无论是通过 SUSE Manager Web UI 中安排的操作,还是在命令行中使用 SUSE Manager 配置客户端 (mgrcfg-client) 传送),变量将被替换为 SUSE Manager 的系统配置文件中所记录的系统主机名和 IP 地址。在此示例中,部署的版本将如下所示:

hostname=test.example.domain.com
ip_address=177.18.54.7

要获取自定义系统信息,请在自定义信息宏 (rhn.system.custom_info) 中插入键标签。例如,如果您开发了一个标记为“asset”的键,则可以在配置文件中将其添加到自定义信息宏中,以便在任何包含该键的系统上替换该值。该宏将如下所示:

asset={@ rhn.system.custom_info(asset) @}

将文件部署到包含该键值的系统上时,宏将会被转译,生成如下所示的字符串:

asset=Example#456

如果要包含默认值(例如,如果需要默认值以防发生错误),您可以将其追加到自定义信息宏中,如下所示:

asset={@ rhn.system.custom_info(asset) = 'Asset #' @}

此默认值会被任何包含该值的系统上的值覆盖。

在 SUSE Manager 客户端计算机上可以使用 SUSE Manager 配置管理器 (mgrcfg-manager) 来协助进行系统管理。它不会转译或更改文件,因为该工具与系统没有关联。mgrcfg-manager 命令不依赖于系统设置。无法插入二进制文件。