Chef実践入門 ~コードによるインフラ構成の自動化 のまとめノート
1 はじめに
1.1 なぜChefが注目されているのか
ビジネス速度の変化
ソフトウェア開発プロセスの変化
- ウォーターフォールからアジャイルへ
開発(dev)と運用(ops)の対立
- 開発者と運用者の考え方の違い
- 開発者は新たな機能を追加して反映にリリースしたい
- 運用者はそのソフトウェアが安定して動作するようになるべく変更はさけたい
DevOpsの提唱
- DevOpsとは、ソフトウェア開発手法の一つ。開発 (Development) と運用 (Operations) を組み合わせたかばん語であり、開発担当者と運用担当者が連携して協力する開発手法をさす。
- 考え方
- 尊重
- 信頼
- 失敗に対する健全な態度
- 相手を避難しない
- ツール
- 自動化されたインフラ
- バージョン管理システムの共有
- ワンステップによるビルドとデプロイ
- フィーチャーフラグ
- メトリクスの共有
- IRCとインスタントメッセンジャーのbot
1.2 Infrastructure as Code
Infrastructure as Codeとは
- 自動化されたインフラを実現するための方法。今まで手作業で行っていたインフラの構築作業をコードで記述することで自動化する。
従来型のインフラ構築の問題点
- サーバー台数に比例して増える作業時間
- 手順書の陳腐化
- 作業ミス
- 再利用が難しく無駄が発生
コードによるインフラ記述の優位性
- いわずもがな
コードによるインフラ構築の実現方法
シェルスクリプト
- 制御構文とかいろいろ大変
デプロイツール(capistrano, fabric)
- そもそもデプロイ用なので...
インフラ構築自動化ツール(Chef)
- Ruby構文で書くので読みやすい書きやすい
cookbook_file "#{Chef::Config[:file_cache_path]}/supervisor-3.0.rpm" do
source "supervisor-3.0a12-2.el6.noarch.rpm"
mode 00644
end