Azure CLIとChefを始めるためのSubscription関係まとめ

Azure CLIとChefを始めるためのSubscription関係まとめ
===============================================

Azureを使っている人で、各種の自動化を行いたい人にとっては、Azure CLIやChefといったツールは
とても大切なものだろう。ところが、実際に使おうと思うと、そこに至るまでのところで引っかかりやすい。
今回の記事ではAzure CLIをダウンロードしてから、実際に使えるようにするためのオペレーションを
整理してみた。今回はWindows10で検証しているが、Macでも同じ手順である。

1. Azure CLIのダウンロードとインストール
---

[Azure CLI のインストール](https://azure.microsoft.com/ja-jp/documentation/articles/xplat-cli-install/)にあるWindowsインストーラーを落として実行するとよい。Mac/Linuxも同じノリでインストール自体は簡単だ。ここに乗っている手順で基本OKだ。ちなみに**chefを使いたい人もAzure CLIの設定が住んでいる必要がある**ので注意が必要だ。

Windowsの場合は、ダウンロード、実行だけでは、PATHにAzure CLIが反映されない。下記の場所にazureコマンドが存在するのでパスに追加する。

```
>set PATH=%PATH%;"C:\Program Files (x86)\Microsoft SDKs\Azure\CLI\wbin"
>azure
info:             _    _____   _ ___ ___
info:            /_\  |_  / | | | _ \ __|
info:      _ ___/ _ \__/ /| |_| |   / _|___ _ _
info:    (___  /_/ \_\/___|\___/|_|_\___| _____)
info:       (_______ _ _)         _ ______ _)_ _
info:              (______________ _ )   (___ _ _)
info:
info:    Microsoft Azure: Microsoft's Cloud Platform
```
永続的に追加したいときは下記のようにするとよい

```
SETX /M PATH "%PATH%;C:\Program Files (x86)\Microsoft SDKs\Azure\CLI\wbin"
```

2. Organizationユーザの作成とサブスクリプションの付与
-----------------------------------------------

さて、混乱しやすい部分だが、Azure CLIは組織ユーザ(Organizationユーザ)でしかログイン
できない。よって、多くの読者はOrganizationユーザを作っていないと思うので、まず先に
それを作る必要がある。

Azure Portalから Active Directory を選択してみよう。ディレクトリが表示されるはずだ。なければ適当な名前をつけて、作成しよう。

![ディレクトリ.png](https://qiita-image-store.s3.amazonaws.com/0/3470/653ec1f7-7298-4bef-544a-ddaa06d4b0df.png)


そして、その作成したディレクトリをクリックしよう。次にユーザタブをクリックする。組織ユーザがない人はここの「ユーザの追加」をクリックする

![組織ユーザ１.png](https://qiita-image-store.s3.amazonaws.com/0/3470/e314c5df-3e72-3cbf-b793-49f7edf8d424.png)

![組織ユーザ２.png](https://qiita-image-store.s3.amazonaws.com/0/3470/9447cd67-14eb-e60e-89c5-66573ae2c9ea.png)


すると組織ユーザが登録できるようになるはずだ。尚、組織ユーザの作成の最後で初期パスワードが付与
される。これは一時的なものですでに失効している。


次に「設定」タブをクリックする。先ほどの操作で組織ユーザを作ったので、今度はサブスクリプション
と紐づける。「管理者」タブをクリックしよう。

![設定.png](https://qiita-image-store.s3.amazonaws.com/0/3470/9225346c-c20a-c82d-fd04-f0bcd8ac853e.png)


「追加」ボタンを押すと「サブスクリプションの共同管理者の指定」という画面がでてくるので、ここで
組織ユーザに割り当てるサブスクリプションを指定すればよい。これで準備完了だ。
　ちなみに、ある人のサブスクリプションで、ほかの人にも同じサブスクリプションを使いたい場合、
その人でログインし、このオペレーションを行い、組織ユーザの作成、サブスクリプションの紐づけをするとよい。

![サブスクリプション紐づけ.png](https://qiita-image-store.s3.amazonaws.com/0/3470/2f180e72-8d68-9888-9d76-98eb2df8c6a6.png)


最後に、Azure Portalからサインアウトして、いま作成した組織ユーザでログインしなおす。最初に
付与されたパスワードはすでに失効しているので、ここで、新しいパスワードを入力しなおせばよい。

![SnapCrab_Sign in to Azure Portal ‎- Microsoft Edge_2015-9-10_9-56-28_No-00.png](https://qiita-image-store.s3.amazonaws.com/0/3470/3b7906b2-14ab-3589-c10f-21826cfb6b60.png)

これでAzure側の設定は完了だ。

3. Azure CLI側の設定
-------------------

### 3.1. login

早速組織ユーザでログインしてみよう

```
> azure login -u XXXXX@XXXXXX.onmicrosoft.com
    :
+
info:    login command OK
````

もし、下記のエラーがでたら、Azureに再ログインしてパスワードを再設定する手順が
できていないと思われる。

```
error:   Get Token request returned http error: 401 and server response: {"error":"user_password_expired","error_description":"AADSTS70002: Error validating credentials. AADSTS50055: Password is expired.
```

### 3.2. Credentialsのインポート

次にCredentaialsを取得、インポートする必要がある。
次のコマンドを発行すると、Webブラウザが起動し、サブスクリプション情報がはいった
Credentaialsがダウンロードされるので、それをどこかに保存しておこう。

```
>azure account download
info:    Executing command account download
info:    Launching browser to http://go.microsoft.com/fwlink/?LinkId=254432
help:    Save the downloaded file, then execute the command
help:      account import <file>
info:    account download command OK

```
そして、インポートする。次のコマンドの実態は、`.azure/azureProfile.json`を作ることをする。
ここでPay-As-You-Go...は先ほどダウンロードしたファイルだ。

```
>azure account import ./Pay-As-You-Go-9-9-2015-credentials.publishsettings
info:    Executing command account import
info:    account import command OK

```

さて、ちゃんとサブスクリプションが紐づいたか見てみよう。

```
>azure account list
info:    Executing command account list
data:    Name                       Id                                    Tenant Id                             Current
data:    -------------------------  ------------------------------------  ------------------------------------  -------
data:    Pay-As-You-Go              37xxxxx-13xx-4dxx-xx00-xxxxdd898bb2  xxxx1d61-xx86-xxe7-xxff-xxxxd6c937ba  true
data:    Microsoft Azure A plan  xxxx383f-xx95-xx9e-xx2d-xxxxc6166cc9  xxxx88bf-xxf1-xxaf-xxab-xxxx011db47  false
info:    account list command OK

```

もし、複数サブスクリプションを持っていて、違うのを使いたい場合は、次のコマンドを
発行するとよい。ちなみにxxxxで始まっているのは先ほどの`azure account list`で
でてきたサブスクリプションのIDだ。それを指定すると、指定されたサブスクリプションが
指定されるようになります。

```
>azure account set xxxx383f-xx95-xx9e-xx2d-xxxxc6166cc9

```

これで、準備完了！xPlatCLI(Azure CLI)とChefの自動化を楽しんでくださいね！