微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么Azure Cloud Shell在默认订阅中创建资源组?

如何解决为什么Azure Cloud Shell在默认订阅中创建资源组?

我使用Set-AzContextAzure Cloud Shell中当前会话的订阅更改为其他订阅,如下所示。但是,当我在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的订阅中创建资源组。

解决方法

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

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

对于Cloud Shell,有两种方法可根据您的Shell类型来设置Ansible使用哪种订阅:

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

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

    ...将<your-subscription-id>占位符替换为目标Azure订阅ID。

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

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

    ...将<your-subscription-id>占位符替换为目标Azure订阅ID。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。