お前もAzureにしてやろうか!~Azure Arc enabled serversで自宅のUbuntuサーバを管理対象にしてみる~

2020年12月8日

はじめに

Azure Arcはざっくり説明すると、オンプレミスや他クラウドにあるサーバやコンテナ環境、データベースをAzure上から一手に管理できる的なものですが(かなり語弊ありそうですが)、今回は自宅のUbuntuサーバをAzure Arc enabled serversの機能を使って、Azureの管理下に置いてみました。

Azure Arcについては以下URLを参照ください。

Azure Arc

Azure Arc enabled serversの詳しい説明は「Azure Arc 対応サーバーとは」を見るのが良いのですが、簡単に言うと

  • Azureポータル上にオンプレサーバの状態を確認
  • Azure policyで定義した通りの運用がされているか診断
  • Azure Monitor for VMsによるプロセスやアプリケーションの監視
  • Automationによるソフトウェアアップデート管理
  • AutomationによるインストールされているソフトウェアやOS設定などの変更履歴管理

などが行えるようです。

基本的にAzure VMで動いているAzure Agentの代わりにインストールするazcmagentが、Azure基盤とのやり取りを行って、Log Analyticsエージェント、依存関係エージェントなどの自動インストールをサポートします。

今回の記事ではとりあえずAzure Arc enabled serversを自宅のUbuntuサーバで有効にして、ひととおり導入できるエージェントをインストールしてみました。

自宅サーバ構成

Synology NAS(Intel base)のVirtual Machine Manager(qemu)上で動作しているUbuntu 18.04.5 LTSのサーバを使います。

ネットワーク構成としては、インターネット向けにTCP/443のポートが開いていればOKです。(インバウンドではなくアウトバウンドです)

リソースプロバイダの確認

Azure Arc enabled serversを利用するためには、以下のリソースプロバイダが事前に登録されている必要があります。

  • Microsoft.HybridCompute
  • Microsoft.GuestConfiguration

事前にAzureポータルなどから登録しておきましょう。

Azure Arc enabled serverの登録

まずは、適当な名前でリソースグループを作成しておきます。

続いて、「+リソースの作成」から「サーバー – Azure Arc」を選んで、「作成」します。

続いてメソッドの選択画面では、1台の追加のみですので「対話型スクリプトを使用したサーバーの追加」にある「スクリプトの生成」をクリックします。

前提条件のページが表示されるので、「次へ:リソースの詳細」をクリックします。

Azure Arc enabled serversのリソースを配置するリソースグループと、リージョン、OS種類を指定します。
リージョンは東日本がまだ選択できなかったので、米国西部2にしました。

タグの設定はデフォルトのままで「次へ:スクリプトのダウンロードと実行」をクリックします。

表示されたスクリプトをUbuntuサーバの適当なフォルダにコピペします。ファイル名はなんでも良いので、setup.shとでも。

「sudo sh ./setup.sh」で実行します。root権限でないと、インストールに失敗します。

途中でAzureへログインするためのデバイス認証が出ますので、指定URLにアクセスして指定のcodeを入力後、Azureのアカウントでログインを行います。

最後に以下のメッセージが出たらインストール完了です。

systemctl status himdsd.serviceを実行して、動作中であることが確認出来ます。

Azureポータルにも登録したサーバのリソースが作成されました。

VMのブレードと似ていますが、無いメニューもいっぱいあります。

ポリシーの確認

前章の操作後しばらく(数十分?)待つと、Azure Policyへの準拠結果が表示できるようになります。

何もデフォルトから変更していないので、とりあえずASC Defaultのコンプライアンスに準拠していることが確認できました。

Azure Policyの機能はここまでです。しっかり定義しておけば、クラウドとオンプレ併せてコンプライアンス管理が行えるものと思います。

Log Analyticsエージェントのインストール

Log Analyticsエージェントのインストールは従来からオンプレも他社クラウドも個々のサーバ上でエージェントをインストールすれば行えましたが、Azure Arc enabled serversではAzureポータルからこの後の各種エージェントインストールが行えるようになります。

まずは事前にLog Analyticsワークスペースは作成しておき、「エージェント管理」からワークスペースIDと主キーを控えておきます。

※本来であれば、この後の章にある「分析情報(Azure Monitor for VMs)」のエージェントインストール時に自動的にこのLog Analyticsエージェントもインストールされ、その際にはワークスペースIDや主キーの登録もスキップできるはずなのですが、本記事執筆段階(2020/12/08)でうまく行かなかったため、まずはLog Analyticsエージェントを先に個別インストールしています。

Ubuntuサーバのブレードから「拡張機能」を選択して、「追加」をクリックします。

新しいリソースで「Log Analyticsワークスペース」をクリックします。

先程控えておいたLog AnalyticsワークスペースのIDとキーを貼り付けて作成を行います。

デプロイが開始されるのでしばらく待ちます。

Ubuntuサーバでomsagentのインストールが開始され、systemctl statusで確認すると、動き出しているようです。

omsagent(Log Analyticsエージェント)はrubyで動いているのですね。

実際にLog Analyticsエージェントにログがたまり出すと、Heartbeatテーブルにヘルスチェック結果が貯まりますので、こちらも確認します。

良さそうですね。

分析情報(Azure Monitor for VMs)のインストール

次は分析情報(Azure Monitor for VMs)のエージェントインストールです。

Ubuntuサーバのブレードから「分析情報」を選んで、サブスクリプションと先に作ったLog Analyticsワークスペースを選択して有効化します。

こちらのエージェントのインストールにも非常に時間がかかりました。先にAzureポータル側がタイムアウトしたりとなかなか苦戦しましたが、きっと近い将来改善されるでしょう。

systemctl status microsoft-dependency-agent.serviceを実行して、動作中であることが確認出来ます。

Ubuntuサーバから収集した情報がLog Analyticsに溜まって表示できるようになるまでしばらく時間がかかりましたが、一度出始めると後は問題なく継続して情報が更新されるようになります。

更新プログラムの管理、インベントリ

更新プログラムの管理、インベントリについてもAzure Arc enabled serversで管理出来ますが、現時点ではブレードに統合されていなく、結局はAutomationの機能を従来どおりハイブリッドで利用するまでになっています。

ポータルへの統合(自動的に有効化)は今後に期待ですが、従来どおりAutomationを作成して、そちらから登録することで、更新の管理もインベントリも利用することは出来ますのでご参考まで。

おわりに

今回は自宅の仮想マシン上(qemu)で動作しているUbuntu 18.04で試しましたが、マシンスペックの問題なのか分析情報(Azure Monitor for VMs)のインストールに少し手間取ってしまいました。

しかし、Azure Arc enabled serversは確実にオンプレや他クラウドのサーバをAzureで一手に管理・監視できるということでしばらく目が離せない感じです。

今回の記事ではLinuxのみでしたが、今後はWindowsについても確認してみようかなと思います。

個人レベルの検証であったため、1台のみの試用でしたが、当然Azure Arc enabled serverやAutomationでは大規模サーバのAzure Arc化のための手順もちゃんと準備されているので安心ですね。