課題:
ServiceNow ITOMによりシステムの各要素から情報を取得することは可能になるが実際のシステム運用はシステムの各要素を連動して設定する必要がある。
例えば新規にWebサイトを作成する場合はWebサイト用に新規にvmを作成、通信できるようにスイッチ/ファイアウォールを設定した後にWebサイトを監視ツールに登録したりサイトをバックアップするような設定が必要になる。ServiceNow ITOMはそれらの設定情報を取得することはできるが、各機器及びvm環境を設定する機能は未実装である。そのため機器及びサービス毎に設定する必要がある。
これらの設定を一括で行えるようにすることでシステム管理/運用を作業を効率的に行えるようにできる。
システム構成:
システム管理/運用を自動化するには次のようなサービスが必要である:
- ジョブ管理(例:Jenkins) - 各ジョブを実行する。
- 監視サービス(ネットワークモニター) - サービスが正しく動作しているか監視する。問題が発生した場合は管理者に通達する
- コミュニケーションサービス(例:Slack) - 監視サービスやユーザからの問い合わせを担当者に連絡をする
- バックアップサービス - 各機器及びサービスのバックアップを取得する
- ファイルのバージョン管理サービス(例:GitLab) - 各機器/サービスの設定ファイルを保管する。バージョン管理されていると設定の変更が分かりやすくなり設定を戻せるようになる。
1.仮想環境(例:VMware)
1.インフラ管理サービス - ①各機器/サービスの設定に乖離があるかチェック、②各機器/サービスを設定
その他に次のサービスもあると便利である:
- ログサービス
- 認証基盤(例:Azure AD/LDAP)
1.ユーザからの問い合わせフォーム
システム要件の例
1.Intuneのグループに登録された機器はインフラネットワークに接続できるようにする(Radiusに登録する)
1.すべてのvmにファイアウォール、自動セキュリティパッチ、ログ、ntpの設定を行う。定期的に設定をチェックする
1.すべてのサービスデータのバックアップを取得する
1.すべてのネットワーク機器の設定をバックアップする
1.停電など保守時間を設定できる(保守前後の設定を比較、該当監視センサを停止/再開、バックアップの取得、回避設定の確認、サービスのシャットダウン/再開設定(可能な場合))
1.機器/サービス毎の設定に管理があるかのチェック
実装
「バックアップサービス」と「インフラ管理サービス」を開発する必要がある。
開発言語はPythonにした。多くのネットワーク機器はPython用のモジュールで接続できる。また、インフラ管理サービスはバグが発見されるとシステムを停止しなくて短時間で修正する必要がある。Javaのような言語を利用した場合はビルドする必要があるので時間が掛かる。
機器/サービスから提供されるAPIで機能が実装できない場合はnetmiko/paramiko/telnetなどで接続する。それでも対応が不十分な場合はheadlessブラウザやpyautoguiを利用してWebブラウザから設定を行えるようにした。
以上