使用 Azure 资源管理器模板从存储中复制文件?

Copy a file from storage using Azure Resource Manager Template?

我想将文件从我的存储帐户复制到使用 ARM 模板创建的 VM?

我已经创建了存储帐户并将文件添加到存储帐户。我正忙于创建模板,但没有看到任何选项可以将文件从存储帐户复制到创建 VirtualMachine 时创建的 OSDisk。

更新 我觉得我应该给出一些我想要实现的背景:

  1. 我想创建 ARM deploy.json 和 parameters.json
  2. 使用上述 JSON 我想使用 Azure Java SDK 在 Azure 中创建 VM
  3. 在 JSON 中,我将使用 docker 扩展来构建 docker 容器
  4. docker 容器将使用来自 DockerHub 的基本图像,然后将使用 DockerExtension
  5. 中支持的组合进行自定义
  6. 我需要从存储帐户复制某些文件,以便 Docker 扩展可以在构建自定义 docker 容器时将这些文件用作 docker 组合的一部分
  7. Java SDK 将根据用户输入做出某些决定,然后为 Azure Java SDK
  8. 生成 parameters.json

因此,基于此,我需要在 azure docker 扩展执行之前以某种方式将文件从存储复制到 VM。

实现此目的的一种方法是使用添加到您的 VM 的自定义脚本扩展。它允许您在部署 运行 虚拟机时 运行 一个 powershell 脚本。在 JSON 大纲 window 中 Visual Studio,单击添加资源

然后添加自定义脚本扩展并将其link添加到 VM

这会将一个空白的 powershell 脚本添加到项目中新创建的自定义脚本文件夹中。您可以在此处放置脚本以从 blob 下载文件。喜欢 this.

如果你想用 DSC 来做,这里有一个例子:https://github.com/bmoore-msft/AzureRM-Samples/tree/master/VMDSCInstallFile。 Ed 的回答可能是一种更简单的方法。这里的关键是获取 VM 的凭据以便能够从存储中提取。这意味着无论您使用的是 DSC 还是自定义脚本,都需要为脚本获取 location/uri 和 sasToken(除非文件不安全)。上面的 DSC 示例将为您提供一种传递 uri/token 的方法,该方法在任一工作流中都有效。查看根目录中的 PS 脚本,了解如何创建 uri 和令牌并将其传递给模板部署。