CentOS7へのAzure CLIインストールについて

Azure CLIのインストール

仮想環境にCent OS 7を入れて、Azure CLIをインストールしていました。

インストールは下記で確認できます。dnfコマンドはCent OS7の場合はyumに置き換えれば問題ないです。

docs.microsoft.com

パッケージインストール後、Azureにログインするコマンド az loginを実行する必要があります。Windows環境でこのコマンド実行すると規定のブラウザが立ち上がってAzureログイン作業となるのですが、sshで作業している場合どうなるんだろう、と思ったのでやってみました。

結局のところ、ブラウザが利用できる別のPC環境が必要になってしまいますが…

ログイン方法

Webブラウザが使えない場合には、という内容で以下に記載があります。

docs.microsoft.com

az login --use-device-codeのコマンドを利用するとのことなので、実行してみると以下の状態で入力待ちになります。

[user@centos7 ~]$ az login --use-device-code
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code ABCD12345 to authenticate.

ここでブラウザが利用できる環境からhttps://microsoft.com/devicelogin に接続します。

コードの入力画面が表示されるので、先ほどのコマンド結果に出てくるコード(例の場合は「ABCD12345」の部分)を入力します。

f:id:akky97:20210718213344p:plain

「次へ」ボタンをクリックすると以下のようにサインイン画面に遷移されるので、Azureを利用するアカウント/パスワード情報を入力します。

f:id:akky97:20210718214230p:plain

サインインが完了した画面に遷移します。

f:id:akky97:20210718214513p:plain

この画面が表示された後、コマンドの入力待ちになっていた画面では以下のようにログインが成功し、サブスクリプションの情報が表示されます。

[user@centos7 ~]$ az login --use-device-code
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code ABCD12345 to authenticate.
The following tenants require Multi-Factor Authentication (MFA). Use 'az login --tenant TENANT_ID' to explicitly login to a tenant.
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 'Microsoft'
[
  {
    "cloudName": "AzureCloud",
    "homeTenantId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
    "id": "zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz",
    "isDefault": true,
    "managedByTenants": [],
    "name": "サブスクリプション名",
    "state": "Enabled",
    "tenantId": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
    "user": {
      "name": "user@sampledesu.com",
      "type": "user"
    }
  },
 :

これでログイン作業は完了となり、azコマンドでAzure操作が可能となります。

複数のサブスクリプションがある場合

az account list コマンドで利用可能なサブスクリプションを確認します。一つしか表示されない場合は特に問題はないかと思いますが、複数出てくる場合、デフォルトで利用するサブスクリプションが選択されている状態になっています。

これを変更するには以下のようにします。「サブスクリプション名」の部分は上記のリストで表示されている名前を設定します。

az account set --subscription 'サブスクリプション名'