プログラマでありたい

おっさんになっても、プログラマでありつづけたい

手動でサーバの設定をすることを禁ずる。入門Chef Solo


 入門Chef Solo - Infrastructure as Codeを読みました。アプリエンジニアだけでなく、インフラエンジニアでもあり1,000台規模のサーバを運用管理してきた経験のある元はてなの伊藤直也さんの著書です。そんなこともあり本書では一貫して実際の運用時の課題を元にChefでどう解決出来るかという観点があり、非常に実用的でした。また入門と銘打う通り、初めてChefを触る人に理解出来るように、概要説明からChef独特の用語説明とその役割、必要とされる背景まで解説してあります。またポイントとしては、Chef Server/Clientではなく、Chef Soloの入門ということです。Chef Server/Clientはフルスタックの機能を使えるのですが、その分構成がややこしくて挫折する人も多いと思います。その点Chef Soloは構成も単純で、手軽に始められるという点で非常に良いと思います。


 私も昨年から、Chef Soloをちょくちょく使っています。そろそろ本格的に運用の現場で取り入れようと思っていたところです。運用するにあたっては、プロジェクトごとにどう分けていけば良いのか等、色々考慮する必要があります。この本を読んでいると、色々なヒントがあります。特に最終章の"どこまでを Chef でやるべきか"は、伊藤さんが考えるChefでの運用像が色濃く反映されていて、非常に参考になります。特に気にったのが、下記の一文です。

Chefでサーバーを管理するにあたっては、その作業全般を可能な限りChefを使って行うようにしましょう。例外的にでも、sshでログインして直接パッケージをインストールしたりといったことは一切しません。

なぜなら何度か触れたとおりChefは「ノードの状態を管理し、そのノードをあるべき状態に収束させるフレームワーク」だからです。ノードの状態を管理するためには、あるノードにまつわるすべての状態はレシピに書かれていなければなりません。例外的にでもローカルでの構成変更を行なってしまうと、レシピに書かれていない状態が対象ノードに含まれることになってしまいます。


 中途半端なことをせず、本気で取り組もうと思いました。AWSを始めとするクラウドの出現で、インフラもプログラマブルに管理出来るようになりました。しかし、その上のミドル・アプリを従来通り手動で管理していたら余り意味がありません。ということで、もう一方を目指して今年はChefに取り組んで行こうと思います。

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

入門Chef Solo - Infrastructure as Code

入門Chef Solo - Infrastructure as Code


See Also:
Chefの辞典こと、「Chef活用ガイド コードではじめる構成管理」
Jenkinsでビルド・パイプラインを構築する
JenkinsとSelenium WebDriverでUI層のテストも自動化&永続化する
運用視点でChef ServerかChef Solo + Knife Soloのどちらが良いか考えてみた
何故、fluentdなのか?
初めてのVagrant
Knife SoloとAmazon EC2で始めるChef Solo
ChefとCapistranoの素敵な関係。或いはレイヤーの違いの話