【发布时间】: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