mikaaaan's blog

自分のポートフォリオとして技術的なことからプライベートまで幅広く書いていきます。

Azure Powershellをインストールする方法

本日もコロナウイルスの影響でリモートワーク。
(本当は出社しても良いんですが。)

週末の都内は外出規制もあり、昨日は志村けんさんの訃報があったりで、真剣にコロナウイルスの恐ろしさが身に染みてきました。


.....余談はさておき、本日はAzure Powershellのインストール方法について。


先日「サービスプリンシパルでAzure Powershellにログインする方法」っていう記事を書いたのですが、
そもそもAzure Powershell使用方法書いて無くない?と思ったのがきっかけです。


markdownを使用してブログ書くのにも慣れてきたので、今日はさくっと記事を書き上げたい。


目次




Azure Powershellとは


Azure Powerhshellとは、Powerhshellの拡張機能で、Azureリソースを直接管理するためのコマンドレットのセット。
Azure Powershellが使いこなせれば、普段Azure Portalで行ってる操作はなんでもできます。

Azureの操作をスクリプトで動かす、とかいう時もAzure Powershell

というか、Azure Portalでは出来ない操作も、Azure Powershellを使えばだいたい出来てしまう優れもの。

Azure使いになるのなら、Azure Powershellは知ってないと行けないなあ、と思い......私も勉強中の身です。



Azure Powershellのインストール方法


ここからは実際にAzure Powershellを使えるようにする方法をご紹介。



★インストールの前提条件

① Windows上のPowershellのバージョンが5.1以上であること。

Powershell上でバージョンを確認するコマンドは以下。

PS> $PSVersionTable.PSVersion


下記はPowershellのバージョンが5.1のとき。

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      18362  628


ちなみに、最初Powershell5.1使ってたけど、途中からバージョンアップしてPowershell coreを使うようになった、なんてことになると、
Azure Powershellも再インストールやらバージョンアップすることになります。



②.NET3.5がインストールされていること
.....これか厄介で、よく分かっていなかったりするんですが.....



あと、Azure Powershellには、

  • AzureRMモジュール
  • Azモジュール ← 今回インストールしたモジュール 

の2種類があって、今回はAzモジュールのインストール手順です。

1つの端末(またはサーバ)に2つのモジュールを同時にインストールすることは不可で、
すでにAzureRMモジュールがインストールされている場合は、アンインストールしてからAzモジュールをインストールする必要があります。


AzureRMモジュールは古いバージョンだと思ってもらえれば良いはず。
少なくとも私はAzモジュールで困ったことがないです。




★インストール方法① PowershellGetコマンドを使用してインストールする

Azure Powershellをインストールする方法は2通りあるので、1つずつ紹介。

1つ目は簡単。(2つ目も別に難しくないけど)
Azure Powershellをインストールしたい端末(もしくはサーバ)でPowershellを開いて、下記のコマンドを入力するだけです。


PS> Install-Module -Name Az -AllowClobber -Scope CurrentUser
  • -Scope XXXXでインストール範囲を変更していて、"CurrentUser"だとログイン中のユーザにのみインストールされる。
  • "CurrentUser"を"AllUsers"に変更すれば、全てのユーザに対してインストールされる。
  • ただし、Microsoftの推奨事項は "- Scope CurrentUser" らしい。


インストールコマンドを実行すると、下記の警告画面が表示されたりしますが、「[Y] Yes」か「[A] Yes to All」入力して「Enter」。

Untrusted repository

You are installing the modules from an untrusted repository. If you trust this repository, change
its InstallationPolicy value by running the `Set-PSRepository` cmdlet.

Are you sure you want to install the modules from 'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):


そうするとインストールが開始されるので、
インストールが終わったらPowershellを再起動して、Azure Powershellへのログインコマンドを実行。

PS> Connect-Azaccount


すると、Azureに登録しているユーザとパスワードの入力画面、または認証コードが表示されて、
Powershellのバージョンによって何が表示されるか変わる)

ポチポチ実行していけば、ほら簡単、ログイン完了です。

Account                   SubscriptionName                  TenantId             Environment
-------                   ----------------                  --------             -----------
XXXXXXXXXXXXXXXX      XXXXXXXXXXXXXXXX                  XXXXXXXXXXX          XXXXXXXXXXXX

↑ ログインに成功したら、上記のように、自分のアカウント名と使えるサブスクリプション、Azure ADのテナントIDなどが表示されます。



★インストール方法② MSIパッケージを使用してインストールする


2つ目はMSIパッケージをダウンロードしてAzure Powershellをインストールする方法。



基本的には①のコマンドでインストールすれば良いんじゃないかと私も思ってるんですが、
インターネット環境に接続できないと①の方法は実行できないので、オフラインインストールを行う際には必要だったりします。

ただし、後程記載しますが、Azure Powershellインストールするのは場合によってはかなり大変だったりします。

MSIパッケージを使ったAzure Powershellのインストールも基本的には簡単。

まず、下記のGitHubのページから、Azure PowershellPowershellをダウンロード。
MSIパッケージのダウンロードはここから

ダウンロードが完了したら、あとはポチポチ実行していくだけです。

f:id:tomocls2:20200331103740j:plain

f:id:tomocls2:20200331103745j:plain

f:id:tomocls2:20200331103737j:plain

インストールが完了したら、Powershellを開いて、
PowershellGetコマンドでインストールした時と同様にAzure Powershellにログインすれば良いだけです。


【おまけ】オフラインでAzure Powershellを使えるようにする方法


ここまでインストール方法を2つ上げましたが、インストールするのは簡単。

オンラインであれば、の話ですが。



Azure環境って、基本的にはインターネットにそのまま接続される環境なので、ほとんどの場合問題無いんですが、
インフラエンジニアとして仕事をしていると、自社のネットワーク環境でのみAzureに接続できるようにしてほしい、なんてお客様は割とたくさんいらっしゃいます。

オフライン環境(インターネットに接続出来ない環境)のサーバに、Azure Powershellをインストールすることになると、
上述したインストール方法①のPowershellGetコマンドは、インターネット上のPSgarallyというリポジトリに情報を見に行ってインストールを実行しているため、使用不可。

となると、②のMSIパッケージを使ってインストールすることになるのですが、まあこれが面倒だったりします。


何が面倒かというと。

まず、Azure Powershellのインストール前提条件より

②.NET3.5がインストールされていること


サーバに.NETをインストールするためには、「サーバーマネージャー」の「役割と機能」からインストールする必要があります。

ただこれも、オンライン環境だと「役割と機能」の画面からポチっとすれば、
インターネット上から情報拾ってきて勝手にインストールしてくれるんですが、
オフライン環境だと、OSのインストールメディアが必要になります。


OSのインストールメディアだと.....?!
オンプレミス環境なら存在していることもあるかもしれませんが、
(私もデータセンターで構築してた頃にその辺に転がっていたメディアを拝借してインストールしたことがあります。)

クラウド環境なんて、インターネットに繋がってさえいれば、ポチポチしていけばメディアなんて使わずとも勝手にVMは作れてしまうので、
「インストールメディアなんて存在しない」なんてことも多いんじゃないかと...(´・ω・`)



また、奇跡的にインストールメディアが存在して、.NETがインストール出来たとしても、

Azure Powershellに接続する際にインターネット見に行ってしまうので、

  • 別途Azure側でNSGの設定+Azure Firewallの設定 or プロキシの設定をする
  • Azure ADでサービスプリンシパルを作成する

のどちらかの手段を実行する必要があります。

【Azure ADでサービスプリンシパルを作成して、Azure Powershellにログインする方法についてはこちら】 mikaaaaaaan.hatenablog.com



おわりに

と、まあ、長々と書きましたが、言いたかったのは、

  • Azure PowershellはAzure使う上で必須なので、とりあえずインストールしよう
  • でも、オフラインでインストールするのはむずかしいよ

ということです。


今回の記事だとまだインストールしか出来てないので、
続きはまたいつか記事にしようと思います。


では、また次回.......!!