我可以同时从同一台机器使用 azure-cli 访问多个 azure 帐户吗?

Can I access multiple azure accounts with azure-cli from the same machine at same time?

我们实际上有多个 azure 帐户(出于某些正当理由),我希望能够 运行 azure-cli 命令同时从同一台机器上的不同帐户。

问题是,一旦我使用 azure login 登录到一个 azure 帐户,令牌将存储在 ~/.azure 目录中,所以我不确定我是否可以准确地登录到另一个帐户同一时间在那台机器上。

有没有办法告诉 azure-cli 不要在本地配置文件中存储令牌,以便我可以使用 azure-cli 从同一台机器同时连接到多个帐户?

如果您使用 windows 或 mac machine,则令牌分别存储在 Windows 令牌管理器或 OSx 钥匙链中。仅在 Linux 系统上,令牌存储在 ~/.azure/azureProfile.json

但是,您应该仍然可以在 Win/Mac 或 Linux machines 上使用多个帐户登录。

azure account set "subscription-name" 会将订阅设置为您的默认订阅,您执行的所有命令都将 运行 针对该订阅。

每个命令都有一个 -s 或 --subscription 开关,您可以在其中明确指定订阅 ID。即使订阅属于不同的帐户,如果您已使用该帐户进行身份验证,它应该仍然有效。

对于 Linux 系统,我建议创建多个用户帐户,然后从这些帐户 运行 CLI。我认为当来自不同帐户的两个命令尝试访问 ~/.azure/azureProfile.json.

时可能存在竞争条件

最新的更新是引入了环境变量AZURE_CONFIG_DIR,在调用az login之前可以针对每个环境进行不同的设置。

export AZURE_CONFIG_DIR=/tmp1

az login

以及其他 window

export AZURE_CONFIG_DIR=/tmp2

az login

参考:configure the AZURE_CONFIG_DIR for fixing concurrency issue

对于Windows,步骤如下

  1. 转到环境变量并使用新配置文件夹的值添加 AZURE_CONFIG_DIR (e.x。C:\Users\YourUser\.azure-personal)
  2. 重新启动您的 cli,然后 运行 这个 az login --use-device-code
  3. 使用第 2 步中给出的代码并将其与任何浏览器一起使用以登录新的 azure 帐户

现在,您的其中一个帐户配置位于默认的 azure 文件夹配置中 (C:\Users\YourUser\.azure),而新帐户位于您在第 1 步中指定的位置。

如果你想在它们之间切换,你需要翻转环境变量以指向你想要的任何配置