はじめに
Linux 環境で利用できるAzureのUtility Toolsについて公式・非公式問わず整理します。
加えてマニュアルでセットアップするのは面倒なので、Azure上のLinux VM にCloud-initで全部セットアップしてみます。
Tools For Linux
1. Azure CLI
Cross Platform(Mac, Windows, Linux)で利用できるAzureリソースをシェルベースで操作できるコマンドラインツール。(ポータルやPowerShellでできることをシェルで書けるツール)。Open Sourceでgithub上にリポジトリがありpythonベースで作られています。
Azure/azure-cli :https://github.com/Azure/azure-cli
通常Linuxにインストールする場合は、aptやyumなどのパッケージ管理ソフトでインストールします。
Azure CLI のインストール
Dokcer Imageもあるので、環境を独立させたい場合はこちらを使えます。
microsoft/azure-cli : https://hub.docker.com/r/microsoft/azure-cli
※公式ドキュメントにはなかったがsnapでも使える模様 > Azure CLI Snap
2. Azcopy v10
Azure Storageに対するデータ操作を実行できるGoベースのツール。2019/4にGAされました。
AzCopy v10 を使用してデータを転送する
https://docs.microsoft.com/ja-jp/azure/storage/common/storage-use-azcopy-v10
こちらもOpen Sourceでgithub上にリポジトリが公開されている。
Azure/azure-storage-azcopy : https://github.com/Azure/azure-storage-azcopy
ローカル<=>Azure Storage、
Azure Storage<=>Azure Storage,
AWS S3 =>Azure Storage
でデータ操作ができる。
個人的には、azcopy loginでAzure サブスクリプションへのユーザアカウントでログインして使える点が便利(以前のv8などはストレージアカウントのキーベースで認証する必要があった)。Data Lake Storage Gen2も扱えます。
3. armclient-go
Azureリソースを管理するREST-APIをLinux環境から叩きやすくしてくれるツール。
ツール自体は非公式だが、一応作っている人はMSの中の人
元々、Windows環境でChocolatey経由でインストールできる、ARM-clientがあったので、それのLinux版として作っているという位置づけ。
Azure CLI も実体はREST APIを発行して管理しているだけなので、できることはかぶっている。
ただ、直接RESTにリクエストしたいとき、認証ヘッダとかの処理が面倒だったりするので、さくっと試したいときには便利だと思う。
Azure REST API Reference
https://docs.microsoft.com/en-us/rest/api/azure/
Azure VMに全部インストールしてデプロイする。
環境を作っては削除し作っては削除するタイプの人間なので、手作業でセットアップしたくない。Ubuntu VM上にcloud-initで上のツールをインストールして作成するスクリプトを作成してみた。
まず端末にAzure CLIだけは動作するようにしておき、cloud_init_config.txt の同一階層で以下のコマンドを実行する。
作成されるUbuntu VMの初期ユーザは、コマンドを実行したユーザとなり、sshのキーペアは自動的に生成されて公開鍵が初期ユーザに紐づいている。秘密鍵はローカルの.ssh配下に配置されるなので実行して、VMが作成できたらそのままsshすればOK。
Azure CLI Script
az group create --name DevTools --location japaneast
az vm create --resource-group DevTools --name ubuntu-dev-server --image UbuntuLTS --custom-data cloud_init_config.txt --generate-ssh-keys
Cloud-init-config
package_upgrade: true
packages:
- tree
runcmd:
- sudo apt-get install apt-transport-https lsb-release software-properties-common dirmngr -y
- AZ_REPO=$(lsb_release -cs)
- echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | sudo tee /etc/apt/sources.list.d/azure-cli.list
- sudo apt-key --keyring /etc/apt/trusted.gpg.d/Microsoft.gpg adv --keyserver packages.microsoft.com --recv-keys BC528686B50D79E339D3721CEB3E94ADBE1229CF
- sudo apt-get update
- sudo apt-get install azure-cli
- sudo apt-get install liblttng-ust0 libcurl3 libssl1.0.0 libkrb5-3 zlib1g libicu60 -y
- sudo wget https://aka.ms/downloadazcopylinux64 -O /opt/azcopy.tar.gz -r
- sudo tar -xf /opt/azcopy.tar.gz -C /opt/
- sudo /opt/install.sh
- sudo wget https://aka.ms/downloadazcopy-v10-linux -O /opt/azcopyv10.tar.gz -r
- sudo tar -xzf /opt/azcopyv10.tar.gz -C /opt/
- sudo apt-get install curl -y
- sudo curl -sL https://github.com/yangl900/armclient-go/releases/download/v0.2.3/armclient-go_macOS_64-bit.tar.gz | sudo tar xz -C /opt/