「入門Puppet」を読んだ
自社ではPuppetを使っています。
私が直接いじることはほとんどないけど、
基礎の基礎ぐらいは知っておきたいなということで「入門Puppet」を読みました。
入門Puppet - Automate Your Infrastructure
- 作者: 栗林健太郎
- 発売日: 2013/04/29
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
事前知識
- Chef-soloをほんの少しだけ使ったことがある
- Ansibleをほんの少しだけ使ったことがある
- Puppetの存在は知っていたけど使ったことはない
- でもどういうものか概要は知っている
- Vagrantを使ったことがある
- 書籍ではVagrantを使って説明が進む
- どこかの勉強会かネットでPuppetはちょっと面倒みたいなことを聞いた気がする
- 外部DSLなので学習コストがーみたいな話だったかな
読み方
- 1回目: 全体をさらっと一読
- 2回目: 実際にコマンドを実行しながら読んだ
- 15章以降は一身上の都合により試してはいない
- 3回目: この記事のために流し読みで復習
最後に1章ずつserverspecやcapistranoとの連携があるけど、今知りたいことではないので流し読み。
知ったこと
全体的なこと
- 「システムのあるべき状態」を記述したmanifestを用いる
- 他の構成管理でも同じことなのだろうけど、状態っていう言葉がなんかしっくりきた
- 今までは「手順の自動化」っていう感覚だった
- あるべき状態を管理と捉えると、Puppetの宣言的なDSLは読みやすい気がした
- もっと複雑化してくると違うのかもしれない
- 基本的な記述でシンプルに使う分には簡単
- 最初に抱いていた面倒なイメージは消えた
- むしろ簡単で良いではないかという気分
- 基本的な機能はChef/Ansibleとさすがに違いなさそう
具体的なこと
- 一つの記述でyumやaptとかを自動的に判別して実行してくれる
- ChefよりAnsibleが好きだけど、この方法が分からなくてうーんってなったのを思い出す
- あるべき状態を表す
resource
- 具体的な種類を
resource type
と呼ぶ resource type
は独自に追加定義できる(defined type
)
- 具体的な種類を
resource
をまとめるclass
- 上記のmanifestファイルをまとめる
module
module
の組み合わせとしてのrole
- サーバー毎の役割
resource type
の依存関係を表す書き方- 事前にこれが必要だよ =>
require
- このあとこれをしてね =>
notify
- あれが変わったらこれしてね =>
subscribe
- 事前にこれが必要だよ =>
class
の場合は依存関係を->
や~>
で表すmodule
では命名やパスに色々ルールがある- 変数や条件分岐も使える
感想
説明のバランスが自分にはとても良かった。
動作環境もVagrantを使って「このbox使います」と簡単だった。
段階的に仕様を学んで行く構成も非常に分かりやすかった。
題材とか説明を飛ばしたりとか推奨しない項目について、きちんと理由が書かれていて納得感があった。
これは読みやすさの上で結構重要だったように思う。
各章の最後に「まとめ」として、要約が載っているのがとても良かった。
ハウツー本とかでは良く見る手法な気がするけど、技術本ではあまり見ないかも?
あくまで初歩ということで、扱う項目も最小限になっているっぽい。
- agent/masterモードは扱わない
- node情報を管理しない
- 標準的なディレクトリ構成を用いない
自分は初歩を知りたかったので好都合でした。
総じて言うとすごい説明上手だなーと感じました。