【问题标题】:How to pass storageaccount key to a Linux VM?如何将 storageaccount 密钥传递给 Linux VM?
【发布时间】:2017-12-16 02:44:15
【问题描述】:

我有一个 ARM 模板,可以创建一个 VM 和一些存储,然后在我的 VSTS 发布过程中运行一个安装脚本,该脚本存储在源代码控制中,在 Linux VM 上安装 Python 服务;所有这些都来自构建工件。这一切都很好,但是该服务需要读取作为 ARM 模板的一部分创建的存储帐户上的队列。

我知道模板中的 ListKeys 函数,但不确定如何使用它以某种方式将该信息传递给 Linux VM,以便更新 Python 的脚本配置文件。

干杯。

【问题讨论】:

    标签: python linux azure azure-virtual-machine azure-resource-manager


    【解决方案1】:

    如果我的理解是正确的,您可以使用Azure Custom Script Extension 来满足您的需求。您可以编写一个脚本来接收存储帐户名称和存储帐户密钥。您可以编写如下脚本:

    #!/bin/sh
    accountname=$1
    accountkey=$2
    ...............
    

    您可以使用以下脚本获取存储密钥并传递给您的脚本。

     {
          "type": "Microsoft.Compute/virtualMachines/extensions",
          "name": "[concat(variables('vmName'),'/', variables('extensionName'))]",
          "apiVersion": "[variables('apiVersion')]",
          "location": "[resourceGroup().location]",
          "dependsOn": [
            "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
          ],
          "properties": {
            "publisher": "Microsoft.Azure.Extensions",
            "type": "CustomScript",
            "typeHandlerVersion": "2.0",
            "autoUpgradeMinorVersion": true,
            "settings": {
              "fileUris": "[split(parameters('fileUris'), ' ')]",
               "commandToExecute": "[concat('sh ', parameters('scriptName'), ' ' ,parameters('StorageAccountName''), ' ', listKeys(concat('Microsoft.Storage/storageAccounts/', variables('StorageAccountName')), 
            },
    
          }
    

    【讨论】:

    • 嗨,谢谢,我正在考虑这个问题,但正在尝试弄清楚如何让脚本扩展使用受源代码控制的文件。在 VSTS 的发布过程中,我可以添加一个将脚本复制到存储的任务,但我需要先在一个模板中创建存储,然后复制脚本,然后将 VM 模板分开,这样在它运行时VM 模板脚本将存在于 Azure 存储中,最初来自源代码管理。
    • @Simon 您的意思是要使用模板将脚本从源代码管理复制到私有存储帐户?仅使用模板,据我所知,这是不可能的。使用自定义脚本扩展,这是可能的。将您的脚本复制到 VHD。你可以检查这个template
    • 是的,我发现这是不可能的,所以我认为我必须有任务 - a) 部署一个仅包含存储的模板,b) 将脚本工件复制到存储,c) 部署一个模板使用虚拟机和引用 a 和 b 创建的脚本扩展,假设我可以在虚拟机模板中包含/引用早期的存储详细信息...是时候进行实验了!
    • @Simon 是的,我认为您可以逐步完成。它更容易。使用模板创建存储帐户和虚拟机,您可以使用模板列出存储帐户密钥和输出。使用 Azure PowerShell 或 Azcopy 将文件上传到存储帐户。我认为您可以使用 PS 文件自动化来完成它们。
    • 是的,看来我需要在这里自己动手,谢谢您的意见。
    猜你喜欢
    • 2020-10-26
    • 1970-01-01
    • 2022-01-13
    • 2021-11-15
    • 1970-01-01
    • 2012-01-23
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多