love.インフラのコード化にちょこっと触れてみるさっそくサーバ/インフラ徹底攻略(技術評論社)を参考にインフラのコード化に触れてみたいと思います。VirtualBOXのインストールhttps://www.virtualbox.org/wiki/Linux_Downloads公式サイトにマニュアルもあります。/etc/apt/source.listを編集します。contrib公開鍵をコピペしてきて取り込みます。oracle_vbox.ascOKaptをupdateして、インストールします。アーカイブを取得する必要があります。ディスク容量が消費されます。...最初のパッケージのDLいらなくね?って気がするんだけれど、まぁいいか。続いてVagrantのインストールaptだと1.4.3だったので、公式からDLしたものをインストール。個のファイルとディレクトリがインストールされています。1.6.5本書に従って初回の仮想イメージを取得してみます。Vagrant.upは権限的にsudoが必要らしい。NATの設定から何からなにまで全部やってくれるようだ。/home/takekensshもsudoが必要だった。いつのことだったかDockerを初めて試した時に「ありのままに起こった事を話すぜ。CentOSを使っていたと思ったらいつの間にかubuntuだった。」みたいなネタの話をしていたけれど、今まさにその逆だな。コンテナじゃねーけど。(Final)Chefを入れまするところでChefもPuppetと同じくServerとスタンドアロンの2つがあります。Chef!これでVagrant+VirtualBOX+Chef+Ubuntuな環境が出来上がりました。同じ事をするんもいいけれど、少し変えてみて自分でも考える部分を作ろうと思います。いう訳でnginxを入れてみることに。nginxどうやら失敗したようです。~]$ではhttpdに変えてみてレシピを見てみます。httpdhttpdでは上手くいきました。secondsレシピを見ると同じなんですけどね。:installendnginxが無理な理由は後で追いかけるとして追いかけて雪国な感じで、本書の通り進めていきます。knife-soloを入れます。bundler-1.7.4...うまくいかねー!この黄色と赤の画面見るとレンサバにRailsを入れていた時のことを思い出すよ。extension.原因はdevパッケージがないからというのを見つけたのでdevをインストール。完了うまくいきました。Soloを入れてみます。sshの設定からですがうまくいったようです。'nodes/takedb.json'...ホストからゲストに向かってChefからhttpをインストール。secondsじゃあ、Puppetに応用しようかと考えたのだが、Puppetにknife-soloみたいなものはないらしい。Slidesharehttp://www.slideshare.net/winebarrel/2013-0720-chefpuppet見本の通りにBase_packagesを作ってノードに入れてみた。seconds良かったらしい。後はChefでのコード化の話になってくる。ここまでやってきて、Vagrantに対してはいまいちやりきってない感じがするのでChefはいったん切り上げてVagrantについて~と思って本をぺらぺらめくっていたら、Puppet、Vagrant、VirtualBOXという特集があったじゃないか。飛んでそっちにいきたいと思います。小話ですが、CentOSなどのRH系はYum、Deb系ならAptというコマンドがありますが、PuppetやChefはその辺は明示せずにインストールするという宣言をすることになります。他は開発関係の用語は聞きなれないので、単体テストとか結合テストとか、テスト駆動とか・・・言葉そのものにパッとしないので書いている事もよく分からない事になるかもしれませんがご容赦くだしあ。ま、意味がよく分からんのはいつものことですけどね。Vagrantfileを作成しよう。今回のVagrantfileは上の方で手動でおこなった、イメージを取ってきてインストールという部分とPuppetのインストールと、Puppetに記述されている作業をVagranfileに記述して自動でやってくれるものだ。おおお、サーバーはこれで出来上がり。2回目という事でなんとなくVagrantのイメージも出来てきた。起動もなんなくクリアできた。略ではServerspecの作業にうつります。テストコードのひな形を作成。テストも自動でできるというのがまだパッとしないけれど、構築部分がコード化(自動化)されているから出来ることなのだろうな。テスト駆動をやってみようserverspecの用意もできたので、続いて必要なファイルを作成したり、Puppetの記述をしたりと本に沿って進めていこう。.rspecServerspecのテストはLakeコマンドでやるみたいで、ここでもRubyみたいだ。何だかRubyばっかりだのう。テストの内容はntpが入っているか?というものなので、同じように進めているので当然のごとくエラーが出る。テストはうまくできたので第1段階完了だ。failedでは、さっきのテストを通過させるためにntpモジュールを作成し、Puppetマニフェストを適用します。provisionを実行するということに注意。この2個のファイルを作成して実行します。second再テストしてみます。failures続いて本のように、マニフェストに追記して、再テストしてみます。provisionで適用。failures問題なしでした。本当にさわりの部分しかやってないと思いますが、コード化、自動化ってこんな感じなのだなぁというのはちょっとばかり体験できました。まじにコードで全部やりきっている。テスト駆動インフラっていうのがこうして積み重ねてコードを育てていく手法という事らしい。今までやってきたサーバー構築とは全く違っていると感じるのだけど、サーバーで行われていることは同じなのだね。何から何までをすべてをコードでやっているって違いがあるだけ。それだとまだまだ自分なんかは本当にダイジョブかな??って逆に感じてしまうのですが。いうか書いた通りになっているはずなので確実なのだよ。手動で手順通りに確認するという作業の問題点が改善される気もするし。Gitなんかで差分管理もできるということだ。