[Azure] プロキシ環境下のBash on Ubuntu on WindowsでAzure CLI 2.0を使う

[Azure CLI 2.0](https://github.com/Azure/azure-cli) がリリースされました。

インストール手順は [こちら](https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli) に詳しいですが、プロキシ環境下では複数箇所に設定が必要なので、Bash on Ubuntu on Windowsの場合の手順を以下にまとめておきます。

# プロキシ設定(1) /etc/environmentの設定

環境変数にhttp_proxy, https_proxyを設定します。大文字小文字が区別されるものがあるといけないので4つ設定しておきます。

```sh
http_proxy="http://<プロキシサーバ>:<ポート>/"
https_proxy="http://<プロキシサーバ>:<ポート>/"
HTTP_PROXY="http://<プロキシサーバ>:<ポート>/"
HTTPS_PROXY="http://<プロキシサーバ>:<ポート>/"
```

# プロキシ設定(2) apt-get設定

/etc/apt/apt.confに設定を追加します。

```sh
$ cat /etc/apt/apt.conf
Acquire::ftp::proxy "ftp://<プロキシサーバ>:<ポート>/"
Acquire::http::proxy "http://<プロキシサーバ>:<ポート>/"
Acquire::https::proxy "https://<プロキシサーバ>:<ポート>/"
```

# インストール、およびプロキシ設定(3) apt-key設定

以降は [インストール手順](https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli) に従って進めますが、apt-keyのみ引数で別にプロキシの指定が必要です。

- ソーススクリプトの修正

```sh
$ echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ wheezy main" | sudo tee /etc/apt/sources.list.d/azure-cli.list
deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ wheezy main
```

- インストール実施

apt-keyのみ、<font color="red">keyserver-option引数でプロキシの指定が必要</font>です。

```sh
$ sudo apt-key adv --keyserver packages.microsoft.com --keyserver-option http-proxy=http://<プロキシサーバ>:<ポート>/ --recv-keys 417A0893
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.OMj5zOYLDZ --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver packages.microsoft.com --keyserver-option http-proxy=http://proxy.xxxxxxx.com:9999/ --recv-keys 417A0893
gpg: requesting key 417A0893 from hkp server packages.microsoft.com
gpg: key 417A0893: public key "MS Open Tech <interop@microsoft.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

$ sudo apt-get install apt-transport-https
Reading package lists... Done
Building dependency tree
Reading state information... Done
apt-transport-https is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

$ sudo apt-get update && sudo apt-get install azure-cli
Ign http://ftp.jaist.ac.jp trusty InRelease
Get:1 http://ftp.jaist.ac.jp trusty-updates InRelease [65.9 kB]
Hit http://ftp.jaist.ac.jp trusty-backports InRelease
Get:2 http://ftp.jaist.ac.jp trusty-security InRelease [65.9 kB]
Hit http://ftp.jaist.ac.jp trusty Release.gpg
(以下省略)
```

# 動作確認

あとは、azコマンドでログインとVM一覧の取得を試してみます。

```sh
$ az login
To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code XXXXXXXXXX to authenticate.

$ az vm list | jq -r  '.[] .name'
CentOS-WEB1
CentOS-WEB2
Zabbix-CentOS72
Zabbix-Redhat67
Zabbix-W2012R2
```

# 雑感

Bash on Ubuntu on Windowsで色々試していますが、pipやnpmも別に設定が必要だし、なんだかプロキシの設定ばかり設定しているような気がします。

# 参考資料

- [Azure コマンド ライン インターフェイス (Azure CLI) 2.0 プレビューを発表](https://blogs.msdn.microsoft.com/devamm/2016/11/01/azure-%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-%E3%83%A9%E3%82%A4%E3%83%B3-%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9-azure-cli-2-0-%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5/)
- [Azure CLI 2.0(Github)](https://github.com/Azure/azure-cli)
- [Install Azure CLI 2.0](https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli)