🎃

Amazon Linux2@Cloud9にPowershell+Azモジュールを入れてAzureを操作する話

2021/05/15に公開

はじめに

先日のAWSのアップデートで、Cloud9でAmazon Linux2がサポート対象になりました。
https://aws.amazon.com/jp/about-aws/whats-new/2021/04/aws-cloud9-now-supports-amazon-linux-2-environments/

私は普段AWS関連の開発はCloud9で、Azure関連の開発はWindows+VSCodeでということが多いのですが、
Amazon Linux2ならPowershellも使えるようになるはずで、じゃあAzureの操作もCloud9からいけるじゃん!ということで導入手順をまとめてみました。
Cloud9のところを無視すれば、普通のLinuxからAzureの操作をする手順ですので、普通の人は後半だけでも読んでもらえれば意味があると思います。

環境作成

Cloud9の環境作成

まずCloud9の環境を作成します。

といっても、環境作成時にOSを指定するだけです。

なお、シングルコアだとあまりにも動作が遅いので(体感)、t3.smallくらい以上にすることをお勧めします。

Powershell+Azモジュール導入

導入するのは2つだけです。
Linux版のPowershellと、PowershellのAzモジュールです。

Powershellのインストール

Powershellの導入はClassmethodさんのブログにとても分かりやすくまとまっていました。
https://dev.classmethod.jp/articles/powershell_on_amzn2_rk/
こちらを参考に実行してみます。

curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repo
yum -y install powershell

おっと。yum installに失敗しましたね。ということでやり直します。

sudo yum -y install powershell


(中略)

という形で、特に問題なく導入できました。
続けてPowershellを起動して、実行テスト。

何のコマンドでもよいのですが、タイムゾーンを取ってみました。

東京リージョンで立ち上げたEC2で動いてると思いますが、GMTですね。

以上の通り、Powershellのコマンドが実行できました。

Azモジュールの導入

こちらは公式ドキュメントから手順を確認します。
https://docs.microsoft.com/ja-jp/powershell/azure/install-az-ps?view=azps-3.8.0

念のためPowershellのバージョンを確認してから、

Install-Module -Name Az

を実行します。


こちらも特に問題なくインストールが進みました。

動作確認

ということで操作してみます。

ログイン

ユーザープリンシパルを使ってログインしてみます。
サインインのやり方はいくつかありますが、ここではユーザープリンシパルを用いた対話的なログインを行います。
https://docs.microsoft.com/ja-jp/powershell/azure/authenticate-azureps?view=azps-4.8.0

ログイン確認は以下の通り。
まずConnect-AzAccountを実行すると、トークン文字列が表示されるので、

別ブラウザを立ち上げて、指定されたURLにアクセス。トークン文字列を叩きこみます。

すると元のコンソール(Powershell)上でログインが完了しています。

操作例

さて、ログインできたところで動作確認です。ログインできているのであとは情報の取得を試してみます。ちなみにこのユーザープリンシパル、いろんなAzureADテナントにゲストユーザーとして招待しており、またいくつかサブスクリプションの情報も取れるのですが、一部Warningが出ていてうまく取得できていません。メイン以外のテナントでMFAが必要になってるからかなぁ…と思いながらも未確認。

ストレージアカウントの情報を取ってみるとこんな感じです。ストアカ名やRG名に人の名前とか入っちゃってたのでマスクマスク。

情報取得もしっかりできています。ログインに使ったアカウントに権限さえあれば、リソース作成や更新操作も問題なく可能ですね。

おわりに

Cloud9からAzureを操作することができました。これで開発が捗るというほどではないですが、端末ごとのバージョン差異など開発時の困りごとを減らせそうです。

Discussion