みなさまお疲れ様です。
事業開発部、中條です。
前回の記事では、CIsco Merakiで企業ネットワークを構築する場合の悩みの種である、
拠点(ネットワーク)毎に分散した個別設定管理の煩わしさについて記載しました。
今回はその悩みに対しどのようなアクションを取っているか、
実例をご紹介します。
■できることなら自動化したい、各ネットワークの設定チェック
複数拠点の設定管理を効率化するべくちょびっと開発します。
目指したいのはこんなイメージ。
人力だと大変なので、左側の有能社員をプログラムで作り出したい。
なるべく設定内容を確認しやすい形で吐き出せないか試してみます。
※今回は特に実環境の運用で求められた、
グループポリシー設定の確認にフォーカスしています。
なお、今回のお客様はクラウド環境としてGCPをメインで利用されているため、
ランタイム環境はGoogle Cloud Functionsを使っています。
他のプラットフォームを使う場合は適宜読み替えて頂ければと思います。
作成したFunctionは目的別に以下の2つです。
①Meraki_GroupPolicy_Get
→各ネットワークで定義されたグループポリシー設定を日次で吐き出し、
Excelファイルにシート別に書き出すことを目的としています。
目視確認していた設定情報を一つのExcelファイルに纏めることができますので、
うまくいけばだいぶ確認の手間が減るでしょう。
②Meraki_DiffCheck
→①で吐き出した設定値を前日の取得データと比較し、
差分を検知した場合に変更内容を別ファイルとして保存しておくことが目的です。
これにより、いつ、どのような設定変更が行われたか
履歴として残せるようになります。
二つのFunctionともに、ファイルの吐き出し先はGoogle Cloud Storageを
使用しています。
※本当はGoogle Driveに保存できればアクセスしやすく便利だったのですが、
権限上の理由によりアクセスが拒まれてしまい、
やむなくCloud Storageを使っています。
この件については今後機会があれば紹介します。
これらをスケジュール実行するため、
Cloud SchedulerとCloud Pub/Subを組み合わせてFunctionのトリガーとしています。
実行したい一連の処理は以下の通りです。
記事が長くなるのでスクリプトの内容は割愛しますが、
実際に得られた結果を見てみましょう。
Cloud Storageに用意したバケット(フォルダ)の中身を見ると、
日付ごとにフォルダが作成されています。
日付フォルダの中には、各ネットワーク毎のグループポリシー設定を吐き出した
テキストファイルと、
それらすべてのテキストを纏めたExcelファイルが保存されるようになっています。
一番下にある「ZZ_Meraki_GroupPolicy_yyyymmdd.xlsx」が、
その日の纏めのExcelです。
さて、Excelを開いてみましょう。
ネットワーク毎にシートが分かれているのはよいのですが、、
どうです??
見辛いでしょう??
MerakiのAPIで情報取得したままだと、形式がJSONなので
人間がここから設定値を読むのは非常に面倒です。
というわけで、Excelのマクロを活用して成型してみました。
この形式で吐き出せれば実用に耐えそうですが、
叶うことならここまでの処理をすべて自動化したいものです。
このあたりは今後の課題ですね。
最後に差分チェックで得られた結果を見てみます。
「差分フォルダ」という分かりやすい名前のフォルダ配下に以下のファイルが
保存されています。
各日の設定情報取得後に前日との差分チェックを行い、
差分があった場合のみファイルを吐き出す仕様です。
ここにファイルができていなければ、その日は設定変更が行われていない
ということになります。
現時点では開発途中のためtxt形式とhtml形式2パターンで出力していますが、
htmlの方が見やすかったため、内容についてはそちらを紹介します。
JSON形式ではありますが、追加/削除/変更があった箇所は色付きでマークされるため、
変更内容は読み解くことができます。
こちらも今後、より見やすい形で整理できるようにしたいものです。
■まとめ
前編後編2回に亘って紹介した、Meraki APIとGoogle Cloud Functionsによる
Merakiの運用効率化についてですが、
一部の設定情報を取得できるようになっただけですのでまだまだ第一歩です。
今後はさらに
・ライセンス情報の一覧取得と、期限が近づいた場合のメール通知機能
・設定変更/追加の一括適用自動化
などなど、運用負荷低減のために考えられる策を練っていきたいと考えています。
進捗があればまたこちらで報告します。
長文となりましたがお読み頂き有難う御座います。
お疲れ様でした!