AnsibleでのWindows ServerへのOpsRampエージェントインストール

この記事はOpsRamp Advent Calendar 2021の12月16日の記事です。

このブログでOpsRampを扱うのは初めてです。ありがたいことにOpsRampさんから検証用ライセンスを支援いただきましたので環境を作りながらAdvent Calendarにも1日参加させていただきました。

私は現在Youtubeで企業でよくあるWindows/M365環境を構築してみるというシリーズを作成しています。AnsibleをつかってHyper-VでInfrastructure as Codeを実現していますので、コードによって自動的に生成されたVMが自動的にOpsRampから監視されるように構成してみたいと思います。

OpsRampのエージェントをAnsibleから管理する方法に関しては下記の記事に記載がありますので、この内容に沿って試してみます。

https://docs.opsramp.com/platform-features/agents/managing-agents-ansible/

上記ドキュメントでは主にLinuxに関しての言及がなされています。ですが、私が今検証を進めている環境は今のところWindows Serverおよびそのうえで動いているWSL環境しか存在していません。Windows Server + WSLをAnsible環境として利用しつつ、Windows Serverを管理することができるのかどうか、ドキュメントの枠を超えて試してみたいと思います。

OpsRamp環境の初期セットアップ~手動でのエージェントインストール

Ansibleでの検証に先立って、そもそものOpsRamp環境の初期セットアップを行い、試しに1台手動でエージェントを導入してみます。下記ドキュメントを参考にしながら作業を行いました。

https://jpdemopod2.docs.opsramp.com/

管理ポータルにアクセスし…。

パスワードを変更し…。

Windows用のインストーラーをダウンロードし…。

インストーラーはネットワーク上の共有フォルダに配置しました。

監視対象には、ネットワーク上の共有フォルダから直接管理者として実行してエージェントをインストールしました。

「Undefined Resource」として見えてくることが確認できました。

モニターテンプレートを割り当てました。

Upの状態として認識されることを確認しました。

テスト的に監視対象を停止し、Downと検知されるところまで確認しました。

これで本当に基本的な部分のみですが、動作が確認できましたので、Ansibleを使ったエージェントインストールに進んでいきます。

Ansibleを使ったWindows ServerへのOpsRampエージェントインストール

管理者権限で実行すればエージェントがインストールされ、OpsRampからの監視を始めることのできるEXEファイルはOpsRampが用意してくれているわけですから単純にこのEXEファイルを実行させてインストールさせればよさそうです。

これを実現するにはwin_packageモジュールを利用すればよさそうです。

https://docs.ansible.com/ansible/latest/collections/ansible/windows/win_package_module.html

パスとしては共有フォルダへのUNCパスもサポートしているので都合が良いです。

インストール済みかどうかの判定にはProduct_IDを利用するということですので、インストール済みのVMにてProduct_IDを確認します。

コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{5DD30F80-C9BD-429B-89CA-03C0578C77B4}

結果的に「5DD30F80-C9BD-429B-89CA-03C0578C77B4」がProduct_IDであるとわかりました。

- name: OpsRampエージェントインストール
    win_package:
      path="\\\\nestedhyperv\\Share\\OpsRamp\\OpsRampAgent-demo001.exe"
      Product_Id="5DD30F80-C9BD-429B-89CA-03C0578C77B4"

これをPlaybookに追加追記します。

実行すると、UNCパスへのアクセス時にアクセス拒否がされてしまったので、IDをパスワードを直接記載する方法にしました。これはあまりよくないので、HTTPでダウンロードできる場所にインストーラーを置く等の方法の方が良いと思います。

これで、playbookを実行するだけで、エージェントがインストールされ、OpsRampからの監視対象とすることができるようになりました。

とりあえず、エージェントインストールするところまでですが、Windows Server環境であってもAnsibleでexe形式のインストーラーをwin_packageを用いてインストールし、自動的にOpsRampの監視対象とすることができました。

Leave a Reply