DSC 配置文档架构参考

概要

定义 DSC 配置的 YAML 或 JSON 文件。

元数据

SchemaDialect: https://json-schema.org/draft/2020-12/schema
SchemaID:      https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.1.0/config/document.json
Type:          object

DESCRIPTION

DSC 配置使用户能够通过组合不同的 DSC 资源来定义状态。 配置文档使用参数和变量传递给定义所需状态的一个或多个资源集。

配置文档可以定义为 YAML 或 JSON。 为了便于创作,Microsoft 建议在 YAML 中起草配置文档。

要使 DSC 的创作工具将文件识别为 DSC 配置文档,文件名必须以下列之一结尾:

  • .dsc.config.json
  • .dsc.config.yml
  • .dsc.config.yaml
  • .dsc.json
  • .dsc.yml
  • .dsc.yaml

您可以使用配置文档函数在运行时动态确定文档中的值。 有关更多信息,请参阅 DSC 配置文档函数参考

本文档的其余部分介绍了 DSC 用于验证配置文档的架构。

例子

必需属性

每个配置文档都必须包含以下属性:

属性

$schema

$schema 属性指示解析为文档所遵循的此架构版本的 URI。 DSC 在验证和处理配置文档时使用此属性。

DSC 的 JSON 架构以多个版本和形式发布。 本文档适用于最新版本的架构。 为方便起见,您可以为 GitHub 中托管的架构指定完整的 URI,也可以使用较短 aka.ms 的 URI。 您可以为特定语义版本指定 Schema,为次要版本指定 latest Schema,或者为 DSC 的主要版本指定 latest Schema。 有关架构 URI 和版本控制的更多信息,请参阅 DSC JSON 架构 URI

对于架构的每个版本,都有三个有效的 URL:

  • .../config/document.json

    规范非捆绑架构的 URL。 用于验证时,验证客户端需要检索此架构及其引用的每个架构。

  • .../bundled/config/document.json

    规范捆绑架构的 URL。 当它用于验证时,验证客户端只需要检索此架构。

    此架构使用为 JSON 架构 2020-12 引入的捆绑模型。 虽然 DSC 在使用此架构时仍可以验证文档,但如果其他工具不完全支持 2020-12 规范,则它们可能会出错或以意外方式运行。

  • .../bundled/config/document.vscode.json

    增强创作架构的 URL。 此架构比其他架构大得多,因为它包括其他架构,这些定义提供其他架构不包含的上下文帮助和代码片段。

    此架构使用仅由 VS Code 识别的关键字。 虽然 DSC 在使用此架构时仍可以验证文档,但其他工具可能会出错或以意外方式运行。

Type:        string
Required:    true
Format:      URI
ValidValues: [
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3/bundled/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3/bundled/config/document.vscode.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.1/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.1/bundled/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.1/bundled/config/document.vscode.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.1.0/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.1.0/bundled/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.1.0/bundled/config/document.vscode.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0/bundled/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0/bundled/config/document.vscode.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.2/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.2/bundled/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.2/bundled/config/document.vscode.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.1/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.1/bundled/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.1/bundled/config/document.vscode.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.0/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.0/bundled/config/document.json
               https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.0/bundled/config/document.vscode.json
               https://aka.ms/dsc/schemas/v3/config/document.json
               https://aka.ms/dsc/schemas/v3/bundled/config/document.json
               https://aka.ms/dsc/schemas/v3/bundled/config/document.vscode.json
               https://aka.ms/dsc/schemas/v3.1/config/document.json
               https://aka.ms/dsc/schemas/v3.1/bundled/config/document.json
               https://aka.ms/dsc/schemas/v3.1/bundled/config/document.vscode.json
               https://aka.ms/dsc/schemas/v3.1.0/config/document.json
               https://aka.ms/dsc/schemas/v3.1.0/bundled/config/document.json
               https://aka.ms/dsc/schemas/v3.1.0/bundled/config/document.vscode.json
               https://aka.ms/dsc/schemas/v3.0/config/document.json
               https://aka.ms/dsc/schemas/v3.0/bundled/config/document.json
               https://aka.ms/dsc/schemas/v3.0/bundled/config/document.vscode.json
               https://aka.ms/dsc/schemas/v3.0.2/config/document.json
               https://aka.ms/dsc/schemas/v3.0.2/bundled/config/document.json
               https://aka.ms/dsc/schemas/v3.0.2/bundled/config/document.vscode.json
               https://aka.ms/dsc/schemas/v3.0.1/config/document.json
               https://aka.ms/dsc/schemas/v3.0.1/bundled/config/document.json
               https://aka.ms/dsc/schemas/v3.0.1/bundled/config/document.vscode.json
               https://aka.ms/dsc/schemas/v3.0.0/config/document.json
               https://aka.ms/dsc/schemas/v3.0.0/bundled/config/document.json
               https://aka.ms/dsc/schemas/v3.0.0/bundled/config/document.vscode.json
             ]

元数据

metadata 属性定义一组键值对作为配置的注释。 DSC 不验证元数据。 配置可以在此属性中包含任意信息。

Type:     object
Required: false

参数

parameters 属性为配置定义一组运行时选项。 每个参数都定义为键值对。 每对的键定义参数的名称。 每对的值必须是一个对象,该对象定义 type 关键字以指示 DSC 应如何处理参数。

参数可以在运行时被覆盖,从而可以在不同的上下文中重用相同的配置文档。

有关在配置中定义参数的更多信息,请参阅 DSC 配置文档参数架构

Type:                object
Required:            false
ValidPropertySchema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.0/config/document.parameter.json

变量

variables 属性将文档中资源的一组可重用值定义为键值对。 每对的键定义变量的名称。 按名称引用变量的资源可以访问变量的值。

这有助于减少配置中资源的复制值和选项的数量,从而使文档更易于阅读和维护。 与参数不同,变量只能在配置中定义,不能在运行时覆盖。

Type:     object
Required: false

资源

resources 属性定义配置管理的 DSC 资源实例列表。 列表中的每个实例都必须是唯一的,但实例可以共享相同的 DSC 资源类型。

有关在配置中定义有效资源实例的更多信息,请参阅 DSC 配置文档资源架构

Type:             array
Required:         true
MinimumItemCount: 1
ValidItemSchema:  https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/v3.0.0/config/document.resource.json