【问题标题】:Why Azure Cloud Shell is creating resource group in default subscription?为什么 Azure Cloud Shell 在默认订阅中创建资源组?
【发布时间】:2020-10-28 00:31:52
【问题描述】:

我将Azure Cloud Shell 中当前会话的订阅更改为使用Set-AzContext 的不同订阅,如下所示。但是当我在Azure Cloud Shell的同一个会话中使用Ansible playbook创建Resource Group时,资源组仍然在默认订阅中创建,为什么?

Set-AzContext -SubscriptionId "myOtherSubscription"

以上命令成功将订阅从默认更改为myOtherSubscription,结果如下:

Name                                     Account                         SubscriptionName                Environment                     TenantId
----                                     -------                         ----------------                -----------                     --------
Visual Studio Enterprise – MPN (a86c7y8… MSI@51342                       Visual Studio Enterprise – MPN  AzureCloud                      86eafd5a-8ce3-4d0c-981c-8dac1…

然后我运行了 ansible 命令ansible-playbook myplaybook_to_create_rg.yml,它成功创建了资源组,但仍在默认订阅中,而不是在myOtherSubscription 中。如 Microsoft 团队的 this 示例所示,用于创建资源组的 ansible 代码中没有提到订阅。这意味着它应该在运行 Azure Cloud Shell 的订阅中创建资源组。

【问题讨论】:

  • AZURE_SUBSCRIPTION_ID 环境变量的值是多少(PowerShell:$env:AZURE_SUBSCRIPTION_ID)?是myOtherSubscription 的ID 还是其他订阅?在链接的文章中特别提到 Ansible playbook 使用它来确定要使用哪个订阅:“使用多个订阅时,通过导出 AZURE_SUBSCRIPTION_ID 环境变量来指定 Ansible 使用的订阅。
  • @esqew 我想你明白了。正如here 解释的那样,我首先需要使用my-subscription-id 运行export AZURE_SUBSCRIPTION_ID=<your-subscription-id>。让我先试试吧。
  • @esqew 否。它仍然在默认订阅中创建资源组。如何在 Azure Cloud Shell 的当前会话中查看 AZURE_SUBSCRIPTION_ID 的值?
  • 后续问题的答案将完全取决于您在设置 Cloud Shell 时选择的 shell 类型。正如我之前提到的,对于基于 PowerShell 的 Cloud Shell,您可以运行一个简单的 $env:AZURE_SUBSCRIPTION_ID 来打印当前值;在基于 Bash 的 shell 中,您应该能够使用 echo $AZURE_SUBSCRIPTION_ID 之类的东西。
  • 你能再尝试一件事吗?自从我大量使用 PowerShell 执行与环境变量相关的任务以来已经有一段时间了,我刚刚查找了导出环境变量的正确语法。您可以尝试简单地运行 $env:AZURE_SUBSCRIPTION_ID="<your-subscription-id>" 来创建本地范围的环境变量并在 Cloud Shell 中重新运行 Ansible 剧本吗?问题可能是您尝试使用export,这在基于 PowerShell 的环境中无效。尝试运行export... 命令时,您应该得到一个大的红色错误。

标签: azure ansible azure-cloud-shell


【解决方案1】:

您在这里的误解源于 Ansible知道您正在使用的 AzContext 中选择的订阅。您链接的文档证实了这一点:

处理多个订阅时,通过导出 AZURE_SUBSCRIPTION_ID 环境变量来指定 Ansible 使用的订阅。

对于 Cloud Shell,有两种方法之一来设置 Ansible 使用的订阅,具体取决于您的 shell 类型:

  • 对于基于 PowerShell 的 Cloud Shell 实例,通过运行在本地范围内设置 AZURE_SUBSCRIPTION_ID 环境变量:

    $env:AZURE_SUBSCRIPTION_ID="<your-subscription-id>"
    

    ...用目标 Azure 订阅 ID 替换 &lt;your-subscription-id&gt; 占位符。

  • 对于基于 bash 的 Cloud Shell,您可以使用 export 关键字来实现相同的目的:

    export AZURE_SUBSCRIPTION_ID="<your-subscription-id>"`
    

    ...用目标 Azure 订阅 ID 替换 &lt;your-subscription-id&gt; 占位符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-25
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多