こんにちは、ノリと勢いで最近バイクを買った石川です?
まだ記憶に新しいMicrosoft Ignite 2019で発表されたAzure Arcですが一体何者なんだ?と今ある情報を漁ってもよくわからなかったので触ってみました。

※2019年12月24日時点での記事です。
何はともあれ公式ページの説明を読んでみましょう
オンプレミス、エッジ、マルチクラウドの全体で、複雑で分散した環境を簡素化したいお客様は、Azure Arc を使用すると Azure サービスのデプロイをどこからでも行うことができ、Azure の管理をあらゆるインフラストラクチャに拡大することができます。
ふむ?Azure Portalでどこにあるリソースでも管理できるってことかな。ひとまず触って確かめましょう。
現時点ではサクっと触れるのはサーバー管理だけのようですのでまずはそこから触ってみます。
・サーバー用Azure Arc登録スクリプトの生成

Azure portalの検索から サーバー用Azure Arc (プレビュー) を探し出します。
作成をクリックし、作成していきましょう。

大規模なことはしないので 対話型スクリプトを使用したマシンの追加 を進めていきます。
スクリプトの作成をクリックし、次の画面へ。

見慣れたような画面が出てきます。
リージョンと監視対象とするサーバーのOSを選択します。現時点での対応OSはWindowsとLinux。

必要事項を入力したら確認と作成へ。
プレビュー機能なので必要な場合はここでリソースプロバイダーへの登録用のボタンが出てきます。(これは登録済みなので出ていません。)
シェルスクリプトがダウンロードできるので監視対象としたいサーバーで実行しましょう。
スクリプトの中身は
- パッケージのDL
- パッケージのインストール
- Azure Arcへ接続
となっています。
・サーバーの登録
対象とするサーバーで上記スクリプトを実行します。
Azure内でやってもいいんですがちょっとおもしろくないので他クラウドサービスでやってみましょう。

ということでGCPでVMを立てます。
VMが立ち上がったら先ほどのスクリプトをポチポチと実行。

ブラウザ使ってサインインして認証してくれとのこと。https://microsoft.com/devicelogin を開き赤い部分に表示されるコードを入力します。

入力するとMicrosoftアカウントもしくは組織アカウントでのログインを求められます。ログインすると完了です。
待つこと2~3分………

Azureポータル上からGCPに立てたVMが見えました。
調子に乗ってOracle cloudのAlways Freeで立てたVMを追加しました。

結果こうなりました。VMを止めるとどうなるんだろうと思いGCP側のVMは停止。オフラインと表示されていますね。
・ポリシーを設定してみる
Azure Arcではリソースに対しAzure Policyを設定することが可能です。試しに、 powershellをインストールしていなければいけない というポリシーを設定してみます。

ポリシーはリソースグループ単位で設定できるのでサーバーを役割ごとにリソースグループでまとめると管理が楽になりそうです。
この設定をした後、AlwaysFreeのVM(alwaysfree1)だけにpowershellをインストールしておきます。
すると………

GCP側のVMには入ってないぞ ということでポリシーに準拠していないと結果が出ました。これをうまく使うことで、複数VMで動いてるようなシステムを一括で管理できそうです。今回使ったものはアプリの有無確認ですが、VMのディスク暗号化の有無やSSHをはじめとする管理用ポートが閉じているか といったことも確認ができます。
・まとめ
今はまだプレビューですが現段階でもVMの管理といった面では死活監視を始め、ポリシーにより様々な条件を課して監視/監査が可能になっています。今後、Arcに特化したポリシーや今は登録制のkubernetes、データサービスの方もリリースされていくと思いますので機会があれば触ってみようと思います。
以上、Arcを触ってみたでした。