【问题标题】:Variables in azure iot edge deployment templateazure iot edge 部署模板中的变量
【发布时间】:2021-01-04 01:44:50
【问题描述】:

在 Azure IoT Edge 部署模板 json 中,我看到一个名为 MODULES.SampleModuleMODULES.SampleModule.json 的变量。这个link 就是一个例子。 iotedge repository 有 JSON 模式。但我无法找到可用于 azure 部署模板 json 的变量的参考文档。

  1. 变量MODULES.SampleModule从哪里填充?
  2. 是否有 azure 部署模板变量的参考文档?

【问题讨论】:

    标签: azure-iot-edge


    【解决方案1】:

    对于部署模板,每个变量都必须采用此语法 ${var_name}。 运行部署文件生成时,变量将替换为同名的宿主环境变量。

    例如,我的 deployment.template.json 中有 ${CONTAINER_REGISTRY_USERNAME} 和 ${CONTAINER_REGISTRY_PASSWORD}。在我的主机上,CONTAINER_REGISTRY_USERNAME 和 CONTAINER_REGISTRY_PASSWORD 集具有环境变量。当任务运行时,它们会被替换。

    要使其在管道中工作,您必须在主机上添加环境变量。在 AzureDevOps 中,您必须创建一个库 (https://docs.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups?view=azure-devops&tabs=yaml)。

    在您的管道中,您可以使用此任务进行生成:

    - task: AzureIoTEdge@2
      displayName: 'Generate deployment manifest - amd64'
      inputs:
         action: 'Generate deployment manifest'
         templateFilePath: 'EdgeModule/deployment.template.json'
         defaultPlatform: 'amd64'
         deploymentManifestOutputPath: '$(System.DefaultWorkingDirectory)/config/deployment-amd64.json'
         validateGeneratedDeploymentManifest: 'true'
         fillRegistryCredential: 'true'
    

    我有一个带有默认 iotedge 模板的 github 项目,其中包括用于单元测试、代码覆盖、构建和推送映像、生成部署清单和部署到 iothub 的完整管道。

    https://github.com/MaxThom/IoTEdgeModule-Template

    祝你好运:)

    【讨论】:

    • 谢谢。但这不是问题的答案。 CONTAINER_REGISTRY_USERNAME 是用户定义变量的示例。这个问题是关于像MODULES.*(但不限于)和类似类别的变量。这些不是用户定义的变量。理想情况下,这些变量的超集应该由 Microsoft 在某个位置记录。我找不到那个超集。最近的文档位于link。但是超集文档在哪里?
    【解决方案2】:

    此项目是使用 Visual Studio Code IoT Edge 扩展 (https://marketplace.visualstudio.com/items?itemName=vsciot-vscode.azure-iot-tools) 构建的。它是用于生成实际 IoT Edge 部署文件的模板。当扩展从这个模板创建部署文件时,它将用所需的值替换这些变量。这是一个未公开的实现细节,因此未记录在案。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多