可以在 SaltStack Config 的“文件服务器”和“Pillar”工作区中创建或上载状态文件和 pillar 数据。如果您不希望使用文件服务器,SaltStack Config 还支持连接到外部存储库(例如 Git 存储库),可以在其中保存状态文件和 pillar 数据。

什么是状态文件?

可以使用 SaltStack Config 状态管理系统创建状态文件,然后将其同时应用于许多节点,而不必逐个手动配置每个节点或应用程序。这些状态文件可以包含一组指令,告知 SaltStack Config 应在节点上运行哪些操作以及应采用何种顺序运行。它们还可以解释应该应用哪些配置文件或设置。

编写或修改状态文件后,可以自动运行这些状态文件,并将其一次应用于许多节点。可以根据每个节点的固有属性(例如,其操作系统)确定目标节点,也可以根据您定义的自定义标签确定目标节点。有关详细信息,请参见如何创建目标?

状态管理系统还确保尽可能高效地正确配置每个节点。如果配置发生偏差,SaltStack Config 可以将节点和应用程序恢复到其合规配置状态。如果配置需要更改,SaltStack Config 可以将这些更改快速部署到受影响的节点。

状态文件示例

状态文件通常采用 YAML 和Jinga 编写,但其他格式(如 JSON)也与 Salt 兼容。典型的状态文件可能如下所示:

install_apache:
  pkg.installed:
    - name: httpd
    
ensure_service_running:
  service.running:
    - name: httpd
    - watch:
      - pkg: install_apache
      
default_html_page:
  file.managed:
    - name: /var/www/html/index.html
    - source: salt://apache/index.html
此状态文件包含三个步骤,分别运行三个不同的 Salt 执行模块。将此状态文件应用于工作节点时, SaltStack Config 会:
  • 在工作节点上安装 Apache (httpd)。
  • 启动 Apache 服务。
  • 部署在工作节点上托管的示例 HTML 索引页面。

什么是 pillar 数据?

文件服务器工作区中的示例 pillar 文件

注: 建议最好保留敏感信息的 Pillar 数据。
Pillar 是在 Salt 主节点上存储数据的结构,并传递到已获得授权能够访问这些数据的一个或多个工作节点。Pillar 数据有两个主要用例:
  • Pillar 可以限制用户访问专用、敏感数据,例如,密码和配置设置。例如,可以使用 pillar 允许用户运行需要对外部服务进行身份验证的作业,而无需访问这些身份验证凭据本身。在这种情况下,您可以向用户分配给定作业和目标的访问权限,而不是包含敏感身份验证详细信息的 pillar 的访问权限。
  • Pillar 可以发送根据上下文或请求数据的工作节点的不同而不同的数据。例如,可以将不同的密码分配给不同的工作节点,并将所有密码存储在一个 pillar 文件中。然后,可以编写一个状态文件,告知工作节点在该文件中查找其唯一密码,而不必创建多个文件或在多个位置存储密码。

存储在 SaltStack Config Pillar 存储中的数据使用与 SaltStack Config 的特定实例关联的 Raas 加密密钥(例如:“/etc/raas/pki/.raas.key”)进行加密。在 SaltStack Config UI 中定义 Pillar 数据后,将使用此密钥对其进行加密并存储在 PostgreSQL 数据库中。此外,还使用此密钥解密数据,以便在 SaltStack Config UI 中显示。

pillar 文件示例

Pillar 文件通常采用 YAML 和Jinga 编写,但其他格式(如 JSON)也与 Salt 兼容。Pillar 数据存储为字典,并使用键-值对查找值。典型的 pillar 文件可能如下所示:

 pillar1: value
 pillar2:
   - value
   - value
 pillar3:
   sub_key:
     - value
     - value

此示例展示了三种设置 pillar 数据格式的不同方法。您选择使用的语法取决于您的需求以及需要存储的数据类型。

开始前

由于 SaltStack Config 由 Salt 提供支持,因此具备 Salt 的基本应用知识以及与这些功能相关的概念会有所帮助。下表列出了一些有用的资源,以了解更多信息:

要了解... 请参见...

使用 Salt 的基础知识

Salt 状态

Pillar 数据

Salt 执行模块和状态模块

定义 pillar 数据后,可以通过单击更新目标,选择目标组,然后单击保存,将 pillar 数据分配给一组工作节点系统。

将 pillar 数据附加到 SaltStack Config 中的目标

将 pillar 数据分配给特定目标系统并包含在状态文件中时,主节点将为每个工作节点系统处理这些数据,并针对每个工作节点使用单独的 AES 密钥加密这些数据。借助此密钥,可以在状态文件或编排文件程序期间将 pillar 数据传输到目标系统。

将状态文件添加到文件服务器

要将状态文件添加到文件服务器以便可在作业中使用,请执行以下操作:

  1. 研究哪个 Salt 执行模块或状态模块可帮助您实现期望的结果。找到满足您需求的 Salt 模块时,阅读该模块的文档,以确保熟悉该模块的参数和其他要求。
  2. 可选:最佳做法是,在首选代码编辑器中编写状态文件的粗略草稿,然后使用代码 linter 检查状态文件是否使用格式正确的语法。
  3. SaltStack Config 用户界面中,单击侧边菜单中的配置 > 文件服务器以打开“文件服务器”工作区。
  4. 首次打开“文件服务器”工作区时,您会看到文件目录和一个空白的新文件。使用此空白文件可创建新的状态文件或从代码编辑器中复制状态文件。SaltStack Config 中文件服务器工作区中的空白状态文件
  5. 单击 Saltenv 菜单,然后选择要在其中存储状态文件的环境。如果您不确定要选择哪个环境,请使用 base
  6. 路径名称字段中,键入文件路径和文件名,以文件扩展名 .sls 结尾。例如,/my-directory/my-state-file.sls
  7. 在文件正文中,编写或复制状态文件代码。例如:文件服务器工作区中状态文件中的状态文件代码
  8. 保存状态文件并确认新文件显示在文件服务器目录中。

将 pillar 数据添加到 Salt 主节点

虽然可以使用 SaltStack Config“Pillar”工作区将 pillar 数据添加到 Salt 主节点,但将 pillar 数据直接添加到 Salt 主节点可能会更轻松。要添加 pillar 数据以使其可在状态文件中引用或分配给目标,可以采用以下两种方法之一:

  • 通过 SSH 登录到 Salt 主节点,然后使用将文件添加到主节点的标准 Salt 过程将 pillar 文件添加到主节点的目录。有关详细信息,请参见 PillarPillar 讲解示范
  • SaltStack Config 用户界面中创建一个作业,该作业使用 salt-run 命令(使用 Salt 运行程序功能)将 pillar 数据添加到 Salt 主节点。有关详细信息,请参见如何创建作业

后续步骤

创建工作节点可以访问的状态文件和 pillar 数据后,可以在 SaltStack Config 中创建的作业中引用这些文件。有关详细信息,请参见如何创建作业