クラウドエンジニアブログ

GitHub Codespaces を使って無料で Azure CLI を実行する環境を整えてみた

佐藤 実

佐藤 実

こんにちは。 CI/CD を含むクラウドインフラの構築や技術支援を担当している、クラウドエンジニアの佐藤です。

Azure の検証にも使える Microsoft 365 開発者プログラムの E5 ライセンスを無料で手に入れてみた
Visual Studio サブスクリプション特典の Azure を Microsoft 365 開発者プログラムのテナントに追加してみた
の続きです。

E5 ライセンスと Azure サブスクリプションをほぼ無料で手に入れたので、Azure CLI の実行環境も無料で手に入れたくなりませんか?

Azure CLI を実行する環境として、Azure クレジットで仮想マシンや Azure Cloud Shell を用意しても良いですし、自身のローカル PC に実行環境を用意しても良いです。

私の検証環境は、Azure クレジットがそんなに多くなく、私のローカル PC がクリーンな環境ではないため、今回は GitHub Codespaces を使って無料で Azure CLI を実行する環境を整えてみました。


GitHub Codespaces の無料枠について

既に GitHub アカウントを持っている前提で進めます。
まだ GitHub アカウントをお持ちでない方は、 GitHub のトップページ 右上の「 Sign up 」から GitHub アカウントを取得してください。


GitHub Codespaces のサイトにアクセスし、ページの下の方に行くと価格の情報があります。
Azure CLI の実行環境としては、2 core 4 GB のスペックで良さそうです。


GitHub Codespaces の請求について というドキュメントを見ると「個人用アカウントに含まれる月間ストレージとコア時間」に、無料枠があることが確認できます。
1 core 1 か月あたり 120 時間までは無料で使用できるようです。
よって、2 core のスペックを利用する場合は、60 時間までは無料で使用できると解釈できます。

GitHub Codespaces を起動

GitHub のトップページ にサインインして「 Codespaces 」をクリックします。
次に真ん中あたりの Blank 枠にある「 Use this template 」をクリックすると、CodeSpaces が起動します。
ちなみに、右上にある緑色のボタンの「 New codespaces 」から進むと Git リポジトリを選択できますが、今回は Git リポジトリを使用しないため、Blank Template を使用します。


あっという間に、Codespaces が起動しました。
コンテナ基板上でコンテナイメージを起動しているくらいの速さです。


OS 情報を確認するコマンド「 cat /etc/os-release 」を実行すると、「 Ubuntu 20.04 LTS 」であることがわかります。
Ubuntu なので apt コマンドで Azure CLI をインストールすることができそうです。


余談ですが、私の作業スタイルが 1920 x 1080 のモニターの左半分に Azure ポータルやドキュメントを表示して、右半分でコードを表示しつつコマンドを実行するため、スクリーンショットが縦長になりがち、という点を考慮して本ブログを見て頂けると幸いです。

Azure CLI のインストールとログイン

Azure CLI のインストール ドキュメントを読むと「 curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash 」コマンドのみでインストールが完了するようです。
実際にやってみましょう。


エラーがなくインストールが完了したら、Azure CLI でログインします。
「 az login 」コマンドを入力し実行します。
※ポップアップブロックが表示されたら「完了」をクリックします。


ところが、client_id パラメーターが含まれていないというエラーが表示されて先に進めません。


別の方法でログインを試してみたいと思います。
コード認証を使用してログインする「 az login --use-device-code 」コマンドを入力し実行します。
表示されたメッセージの https://microsoft.com/devicelogin を Ctrl を押しながらクリックするとブラウザに新しいタブが開きます。
次に「 enter the code HX4MTJZT6 to authenticate. 」というメッセージの 10 桁のコードをダブルクリックして選択し、Ctrl+C でクリップボードにコピーします。


ブラウザの新しいタブで開いたページを開き 10 桁のコードをペーストします。
「次へ」をクリックします。


私の推測ですが、Azure のシンガポールリージョンでコンテナが動いていそうです。
2 つアカウントが表示されていますが、今回は上の組織アカウントでサインインしました。
Microsoft アカウントでサインインする場合は、下に表示されているアカウントを使用します。


「続行」をクリックします。


このメッセージが表示されたらブラウザのタブを閉じます。


ブラウザの CodeSpaces のタブに戻り、ログインが完了したことを確認します。
Azure サブスクリプションの情報が JSON 形式で表示されます。

Azure CLI で Azure Active Directory にユーザーを作成

Azure Active Directory ユーザーを作成する場合の例が こちらのドキュメント にあります。
必須のパラメーターと省略可能なパラメーターを確認しておきます。


Azure CLI で Microsoft Graph API を実行することもできます。
例えば、Azure AD テナントのドメインを取得する例は こちらのドキュメント にあります。

Azure CLI で Microsoft Graph API を実行する場合は下記の様に書くことができます。
az rest

az rest \
  --method get \
  --uri https://graph.microsoft.com/v1.0/domains


それでは、ドメインを取得するコマンドを実行してみましょう。
レスポンスは JSON で value キーの値が配列になっており、id というキーに .onmicrosoft.com という値があることがわかります。
他に、isDefault というキーに true がセットされており、複数のドメインがあってもこのキーを確認すれば常にデフォルトドメインを取得できそうです。


Azure CLI をもうひと工夫して、デフォルトドメイン名だけ取得するコードに変更してみます。
ブール式を使用して配列をフィルター処理する
「 --query "value[?isDefault].id" 」を追加して value 配列の isDefault が true になっている id キーの値を取得します。

az rest \
  --method get \
  --uri https://graph.microsoft.com/v1.0/domains \
  --query "value[?isDefault].id" \
  --output tsv

「 --output tsv 」も追加して、下記のように値の前後のダブルクオートも取り除いた状態でデフォルトドメインが取得できました。


これらを組み合わせて、本題の Azure CLI で Azure Active Directory にユーザーを作成します。

domain=$(az rest \
  --method get \
  --uri https://graph.microsoft.com/v1.0/domains \
  --query "value[?isDefault].id" \
  --output tsv)

echo $domain

az ad user create \
  --display-name myuser \
  --password st0r0nGp@ssw0rd \
  --user-principal-name myuser@$domain

下記のようにコマンドがエラーなく正常に完了しました。
id の値は、次のコマンド実行時に同じものが表示されるか確認します。


Azure CLI で作成されたユーザーの ID を表示してみます。

az ad user list \
  --display-name myuser \
  --query [].id \
  --output tsv

ひとつ前の実行結果の id と同じものが表示されました。


Azure ポータルにも作成されたユーザーが表示されます。


ユーザーを作成する検証をしたので、削除する検証もしてみましょう。
az ad user delete

az ad user delete \
  --id myuser@$domain


Azure ポータルから削除したユーザーが表示されなくなりました。


「削除されたユーザー(プレビュー)」をクリックしてユーザーを復元することも可能です。

Azure CLI で Azure にリソースグループを作成

仮想マシンなどの Azure リソースを作成するには、リソースグループという入れ物が必要になります。
そのリソースグループを Azure CLI で作成します。 ※ az group create
リソースグループ作成時には Azure のリージョンを指定します。
この例では、リソースグループ名を test-rg にします。リージョンは東日本の japaneast を指定しています。

az group create \
  --name test-rg \
  --location japaneast

実行結果の JSON 内にある provisioningState が Succeeded と表示されます。


Azure CLI でリソースグループの一覧をテーブル形式で出力します。

az group list \
  --output table


Azure ポータルのリソースグループ一覧も確認します。
リソースグループ test-rg が Japan East と表示されます。


検証なので最後にリソースグループを削除します。
「 --yes 」を付けると Yes/No の確認プロンプトを表示させずにコマンドが実行されます。

az group delete \
  --name test-rg \
  --yes


Azure ポータルのリソースグループ一覧も確認します。
リソースグループ test-rg が表示されなくなりました。

GitHub Codespaces の停止と利用状況確認

CodeSpaces を停止してみたいと思います。
例えばブラウザのタブを閉じて、デフォルトで 30 分アイドル状態になると自動的に停止する方法でも良いのですが、貴重な 60 時間分の無料枠を無駄にしたくないので、確実に停止させます。
CodeSpaces のページ にアクセスして、右下の Active となっている箇所の隣にある「・・・」をクリックします。
「 Stop codespace 」をクリックして停止します。


CodeSpace が停止した旨のメッセージが表示され、右下には Active という表示が消えました。


もし CodeSpaces を開いているブラウザのタブがまだあれば、下記のように表示され、停止したことが確認できます。


続いて、実際に CodeSpaces の無料枠をどのくらい消費したかを確認してみましょう。
画面右上のユーザーアイコンから「 Settings 」をクリックします。


「 Billing and plans 」をクリックします。


CodeSpaces 停止直後には数値が反映していませんが、しばらく経ってから確認すると下記のようになっていました。
CodeSpaces 欄の「 Usage hours 」を確認すると、120 時間のうち 1.69 時間が消費され、2-core では 0.84 時間消費されていることが確認できます。

まとめ

  • GitHub CodeSpaces を Azure CLI の実行環境として無料で利用しました。
  • GitHub CodeSpaces 内で Azure CLI のインストールとログインができました。
  • Azure CLI を使って Azure Active Direcotory のユーザー作成とリソースグループ作成を試しました。

これで、Azure の検証環境が整いました。

Azure CLI のコードを実行して Azure ポータルで結果を確認していく流れで、今後も検証結果を本ブログで共有していきます。 そうすれば、スクリーンショットで検証手順を共有するよりも再現性が高く、より役立つブログ記事になるのではないかと思います。

このブログ記事が誰かの何かの参考になればうれしいです。 最後まで読んで頂き、ありがとうございます。

お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録