銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

Azure CLI 2.0 でMicrosoft Azure Stack に接続する

これであっているか自信ないのですがとりあえずメモしておきます。

Microsoft Azure Stack*1にAzure CLIで接続したい場合、managementAPIのエンドポイントを指定してcloudを登録します。名前は自由なので、複数Azure Stack環境がある場合などは適宜わかりやすい名前をつけましょう。

$  az cloud register -n AzureStackExample --endpoint-resource-manager "https://management.azurestack.example.com" --suffix-storage-endpoint azurestack.example.com

とりあえず上の2つのエンドポイントだけでよさそうですが、他にも指定できるパラメーターはあるようです。上の例はAzure Stackのユーザー環境を登録している想定で、下のドキュメントの手順1-bに相当します。また、Azure Stack環境の場合は、VPN接続が〜というあたりのドキュメントは無視してよさそうです。

docs.microsoft.com

次にここで登録したcloudを指定して接続先を切り替えます。

$ az cloud set -n AzureStackExample
Switched active cloud to 'AzureStackExample'.
Active subscription switched to 'XXXX (UUID)'.

これでログインできてコマンド実行できるはずですが、1つ忘れてはいけないことがあります。Azure Stack側で提供しているARM Rest APIのバージョンは古いらしく、コマンドを実行するとエラーになることがあります。そのため下記コマンドをまず実行しておく必要があります。

$ az cloud update --profile 2017-03-09-profile

なおこのコマンドは現在Activeなcloudに対して処理が行われます。現在利用可能なcloudの一覧は次のコマンドでリストできます。

$ az cloud list
Name                   Profile             IsActive
---------------------  ------------------  ----------
AzureCloud             latest
AzureChinaCloud        latest
AzureUSGovernment      latest
AzureGermanCloud       latest
AzureStackExample      2017-03-09-profile  True

AzureStackExample以外はデフォルトで利用可能なものです。そのため、例えばAzure Germanyを利用したい場合はazure cloud set -n AzureGermanCloudと実行するだけでよいです。

あとはログインです。次のコマンドを実行して、Azure Stack環境にログインする際の認証情報でログインすればOKなはずです。

$ az login
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code XXXXXXXXXXXX to authenticate.

CloudName           IsDefault    Name   State    TenantId
------------------  -----------  -----  -------  ----------
AzureStackExample   True         NNNN   Enabled  UUID

*1:Azure Stack Development Kitではなく、ポータルやAPIエンドポイントをインターネットに公開できる方