皆さん、インフラはやってますでしょうか?!。InSpec(以後、InSpec)を、インストールと初期状態で動かすところまで紹介したいと思います。InSpecとは、公式ページによると、アプリケーションとインフラをテストおよび監査するオープンソースのテストフレームワークです。具体的には特定のユーザが存在するか?それはどういう権限を持っているか?特定のフォルダは存在するか?想定するパッケージが含まれているか?そのバージョンは想定通りか?特定のポートでリスンされているか?それはTCPか?sshd_confiの設定でrootでのログインが許可されていないか?特定の設定ファイルの設定はあっているか?のような事を、サーバやクラウドのサービスに対してテストたり、その結果を出力したりするとができます。CIと連携して継続的に確認することもできます。いうか、そうしましょう。OS等、よく使わるOSはサポートされています。Rubyベースで組まれているので、rubyが動けば他のOSでも動きそうですね。細かいバージョンは直接HPをみてください。通常のOSとは別に、GCP、AWS、Azureのクラウドサービスのユーザ管理機能や、AD、各VMの設定等、各種クラウド特有の内容にも対応しているようです。大まかな流れInSpecは、インストール後に一般的には以下の流れで作業を行います。単純なので一回やってしまいましょう。プロファイルを作る(決まった構成のディレクトリで、プロジェクトみたいなもの)コントロールを作る(具体的なチェックコードです)ターゲットに対してテストを実施するINSPECのインストールインストール方法は、dokcerやgemを利用する方法もありますが、rpmでのインストールを例にします。今回はCentos7で進めていますのでここからバージョンに合ったダウンロードしてください。wgetを入れておきましょう以下のバージョン確認を行い、正常に起動するかを確認します。inspecのコマンドを一番初めにうつと、ライセンスの確認が入るので、yesとしておいてください。4.18.39プロファイルを作成inspecは実際のチェックにコントロールというスクリプト(設定?)を作成し、それを動かすことで確認処理が動きます。コントロールを1つだけ作成して動かすこともできますが、大体はもっと複雑な条件を一気に確認することが多いと思います。その時にプロファイルという単位で管理していく事になります。実際は下記のようなディレクトリ構成になっており、スケルトンをinspecのコマンドで作成することができます。ここに説明が載っていますが、正直説明がよくわからないので、まあよくある「プロジェクト」単位でディレクトリを作るイメージを考えておいてください。inspec.ymlプロファイルは以下のコマンドで作成します。server01で、以下のようにディレクトリと必要なファイルが作成されます。libraries今回はこのディレクトリ構成の細かい説明を省きますが詳しくはここをみてください。----------------------------のような中身です。このfileの部分をリソースといい、InSpecはこのリソースに対して何等かのテストを実施していく事になります。(ファイルやディレクトリ等のパーミッションやタイプ等のチェック)passwd(/etc/passwdに特定のユーザが含まれているか等のチェック)などがあります。nginxがインストールされおり、バージョンは1.9.5であることを確認するのが以下の内容になります。直感的でわかりやすいですよね。endそれ以外にはcommandのリソースのように特定のコマンドを起動してその結果がマッチするかや、それでも難しい場合は自分でカスタムリソースという独自のリソースを作成することもできます。ブロックを1ファイルに複数書くこともできますし、controlsデレクトリ配下に複数のファイルを作成してテストを実施することもできます。テストの実施それではserver01のディレクトリにある場所に移動して、テストを実施してみましょう。テスト実施のコマンドの代表的な定義は以下のとおりです。sshやWinRMを利用してリモートから接続することがわかりますね。:プロファイルはどの単位で作成すればいいのかの解がまだ解がわかっていません。InSpecはプロファイルに対して、1つのターゲット(サーバ等のテスト対象)を指定しテストをします。ターゲット事にプロファイルを作る場合、サーバが100台あったら100プロファイルを作成する必要があります。これは非常に怠けることができない事態となります。OSの設定内容等の、ある程度共通的にテスト実施できる部分と、webサーバとAPサーバならインストールするミドルウェアに違いがあるので、そういう特殊部分だけのプロファイルを管理して、出来るだけ数を減らし管理しやすいようにするのがよいのではないかと思っています。./server01以下の結果が表示されます。成功すると画面に緑色の文字で、失敗すると赤色の文字で結果が表示されます。/tmpがディレクトリなのですべてのテストで成功すると思います。以後、いろいろなリソースを追加してテスト内容を増やしていくながれになります。skipped次回はより具体的な内容を記載します。sankit25.qrunch.io@sankit25がまあまあ頑張ってブログを書きます。偉そうな事も書くので、こっぱずかしいので家族に見つからないように書いてます。Qrunch.netサーバー提供フィードバックを送信する。