可以在 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
- 在工作节点上安装 Apache (httpd)。
- 启动 Apache 服务。
- 部署在工作节点上托管的示例 HTML 索引页面。
什么是 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 数据分配给特定目标系统并包含在状态文件中时,主节点将为每个工作节点系统处理这些数据,并针对每个工作节点使用单独的 AES 密钥加密这些数据。借助此密钥,可以在状态文件或编排文件程序期间将 pillar 数据传输到目标系统。
将状态文件添加到文件服务器
要将状态文件添加到文件服务器以便可在作业中使用,请执行以下操作:
- 研究哪个 Salt 执行模块或状态模块可帮助您实现期望的结果。找到满足您需求的 Salt 模块时,阅读该模块的文档,以确保熟悉该模块的参数和其他要求。
- 可选:最佳做法是,在首选代码编辑器中编写状态文件的粗略草稿,然后使用代码 linter 检查状态文件是否使用格式正确的语法。
- 在 SaltStack Config 用户界面中,单击侧边菜单中的配置 > 文件服务器以打开“文件服务器”工作区。
- 首次打开“文件服务器”工作区时,您会看到文件目录和一个空白的新文件。使用此空白文件创建新的状态文件或从代码编辑器复制状态文件。
- 单击 Saltenv 菜单,然后选择要在其中存储状态文件的环境。如果您不确定要选择哪个环境,请使用 base。
- 在路径名称字段中,键入文件路径和文件名,以文件扩展名
.sls
结尾。例如,/my-directory/my-state-file.sls
。 - 在文件正文中,编写或复制状态文件代码。例如:
- 保存状态文件并确认新文件显示在文件服务器目录中。
将 pillar 数据添加到 Salt 主节点
虽然可以使用 SaltStack Config“Pillar”工作区将 pillar 数据添加到 Salt 主节点,但将 pillar 数据直接添加到 Salt 主节点可能会更轻松。要添加 pillar 数据以使其可在状态文件中引用或分配给目标,可以采用以下两种方法之一:
- 通过 SSH 登录到 Salt 主节点,然后使用将文件添加到主节点的标准 Salt 过程将 pillar 文件添加到主节点的目录。有关详细信息,请参见 Pillar 和 Pillar 讲解示范。
- 在 SaltStack Config 用户界面中创建一个作业,该作业使用
salt-run
命令(使用 Salt 运行程序功能)将 pillar 数据添加到 Salt 主节点。有关详细信息,请参见如何创建作业。
后续步骤
创建工作节点可以访问的状态文件和 pillar 数据后,可以在 SaltStack Config 中创建的作业中引用这些文件。有关详细信息,请参见如何创建作业。