インフラ最近インフラの話題が熱いです。Code)ができるようになった事でプログラムソースと同じく、サーバーの構築手順などもコードとしてgitなどで管理できるようになりました。するとプログラマたちがJenkins等のCIツール(継続的インテグレーション)で自動テストしているのもやりたくなってきます。インフラのCIにおいてVagrantやserverspecといったツールがこれらのCI環境の整備を後押しした事もあり、インフラCIの手順などの記事も増えて、とてもワクワクしています。入れての作業になってます。vagrant-awsなどを使用してもそれは同じで、あくまでもローカルのMACからawsを操作する内容になっています。入れてもらうのは敷居が高いしちょっとなんだかなぁと思ってました。serverspecを入れてCIする環境を構築したいと思います。仮想サーバーの構築や破棄をコマンドで行える仮想環境構築ツール。CIする上で一番うれしいのは立ち上げたサーバへのSSHなどの接続まわりのすべてを面倒みてくれるところかな、と思います。サーバー構築の自動化フレームワークツールです。「冪等性を保証する」というポリシーで作成します。冪等性とは1回行っても複数回行っても結果が常に同じであるような事をいいます。冪等性を保証する事で、単なるサーバー構築を行うツールではなく、何度実行してもサーバーが設定どおりの状態となる事を保障できるツールとなります。サーバにApacheが入っているか、80ポートが空いているか、など、意図した通りにサーバが稼働しているかどうかをチェックできるツールです。CI(継続的インテグレーション)ツールです。jenkinsを使う事で「テスト」や「ビルド」、はては「デプロイ」まで自動化する事ができます。・結果をjenkinsで管理jenkinsサーバーの構築ともあれ、CIを行う為のサーバーが必要なのでEC2でインスタンスを立ち上げます。今回はCentOSを使いました。こちらのインスタンスにvagrant、Jenkins、chef-solo、serverspecをインストールしていきます。epel-release-6-8.noarch.rpmパッケージをインストール。httpd_spec.rbchef/cookbooksとかいろいろchefのレシピを配置テストしたいchefのレシピたちを配置します。vagrant-awsの設定とprovisionとして「シェルの実行でchefをインストール」「chef-soloの実行」「serverspecの実行」を行っています。endendvagrant-awsにおけるAWSのアクセスキーや秘密鍵。セキュリティグループの設定等は割愛。ttyと出る時があります。requiretty行をコメントアウトすれば解決するかもしれません。立ち上げるインスタンス用のAMIはこれらvagrantが接続してprovisionができる環境を整えたものであるといいかと思います。(例えばchefが入ってるAMIですとchefのインストールをvagrantから行う必要がなくなります)vagrantで仮想サーバーが立ち上がり、chefをインストールし、chefを流し、serverspecでテストまで流れるかテストします。--provider=awsもう一度chefとかを流したりしたい場合は以下のコマンドで実行できます。provision任意のprovisionのみ実行したいときは以下のような感じになります。serverspec確認できたら消します。ちなみにAWSでは1分でも立ちあげると1時間ぶんの料金がかかりますので注意です。requirettyとかあったらコメントアウトしておきます。jenkinsさんがみえます。Pluginをインストールします。新規ジョブを作成[新規ジョブ作成]->[フリースタイル・プロジェクトのビルド]を選択してプロジェクト名を適当に入力して作成します。プロジェクトの設定(git)作成したプロジェクトをクリックしてプロジェクトの画面に進み[設定]をクリックします。ソースコードの管理でgitを選択して監視を行うリポジトリとブランチを設定します。今回はmasterブランチですプロジェクトの設定(ビルド・トリガ)ビルド・トリガを設定します。通常であればgitのリポジトリ側からpushがあった場合にjenkinsに通知する事でビルドが実行されるのがよいのですが、簡単な方法として、jenkins側から定期的にgitリポジトリに更新を確認しにいくポーリングを設定しました。この設定ですと、10分に1回更新を確認しにいき、pushされていればビルドを実行する設定になります。プロジェクトの設定(ビルド)最後にビルド設定です。ビルドは「シェルの実行」を選択します。ビルド実行でvagrantを立ち上げ、テストして落とすという処理となりますので以下のようなコードとしました。このときのシェルはjenkinsユーザーが実行するので適宜sudo等をつけてあげる必要があります。0途中ややこしい事になっていますがvagrant-serverspecプラグインでのserverspecの結果は成功/失敗によらず正常終了となるので、serverspecが失敗した場合はjenkinsでFailとなるようにすこし調整しています。最終的にはこんな感じになりました。(gitの部分はエラーになってますが)この設定でchefのレシピをCIできるようになりました。向寒のみぎり、お健やかにお過ごしのことと存じます。Gen8サーバーにCentOS6.4(64bit)を入れるHPのサーバーをCentOSで使いたい事が出てきてインストールにい...2012-12-01#isucon2にていいかんじにスピードアップできなかった話ずいぶん遅くなってしまいましたが・・・。.スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。