概要
- サーバー構築後に行なっている作業を整理して、出来るだけ自動化とオペミスを無くす環境を構築出来ないか考えてみた
まずは整理
サーバー構築直後と、運用開始後についての作業を整理してみる。尚、サーバーの構築に関しては chef
や ansible
等のツールを利用し、監視ツールとしては cacti
を利用している環境を想定する。
サーバー構築直後
serverspec
による構築直後のチェック(標準的な設定の確認)- 監視ツールへのホスト登録
- 内部 DNS を利用していれば内部 DNS への登録
- 開発チームへの提供、もしくはアプリケーションのデプロイ
- アプリケーション側のテスト
- 外部 DNS または Proxy への登録
- リリース
運用開始後
- 様々な監視(稼働サービス監視、リソース監視、サーバー構成監視)を行い、障害発生の事前検知とチューニング
- 障害発生時の対応
等、ざっくりと現在の自分が行なっている作業も含め書いてみたが、今回はサーバー構築直後の 01 から 03 あたりまでをひと通りやってみて可能性を探ってみることにする。
実装
構成はこんな感じ
Jenkins
先生に色々と頑張って頂くことを前提に以下のようなフローとなる。
- サーバー構築直後にホスト側から
Jenkins
にserverspec
実行のビルドを API を使ってオーダー serverspec
の実行結果を解析して正常であればcacti
にホストを登録cacti
からホストの監視が開始されるserverspec
の実行のトリガーはサーバー側のrc.local
等に設定されている為、サーバーが再起動すると毎回実行される
サーバーから Jenkins API を叩いて serverspec を実行する
構築直後、再起動毎で serverspec
でテストする手順については割愛し、さらに jenkins
の API を叩いて serverspec
を実行する方法についてはこちらにて検証を行なっており、細かい設定はあるものの実装は可能。
serverspec の結果を以ってホストを Cacti に登録する
Cacti がコマンドラインから扱えることと Jenkins
のビルド結果を解析して次のビルドをキックするか、一つのジョブ内でシェルを複数書けるのでそれを利用する手もある。
ジョブのパラメータを使いまわせるということで、後者の一つのジョブ内でシェルを複数書くように設定してみた。登録したシェルスクリプトは以下の通り。
serverspec のホストを登録するシェルスクリプト
テストする為の spec ファイルは以下の通り。
とりあえずは Cacti でのグラフ生成に必要な snmpd
が稼働していることを確認する。他にも各環境に応じて適宜テストを書く。
登録したホストでテストを実行するシェルスクリプト
Cacti にホストを登録するシェルスクリプト
テスト
jenkins のコンソールから実行
パラメータ付きビルドにてビルドを行う
ビルドが成功
ビルドが成功を以って、以下が成功している。
serverspec
用の spec ファイルの生成- 生成された spec ファイルでの対象サーバーのテスト
- Cacti への対象サーバーの登録
しばらくすると...
Cacti
にて登録したホストの監視が開始されている。
ということで
引き続きの目標として...
serverspec
でのテスト項目を煮詰めていくChef
やAnsible
等でサーバーを一から構築して試してみる- DNS への登録の自動化
- 自動化だけではなく管理や冪等性をどのように担保するか検討
等を試していくつもり。