Infrastructure as Code
サーバーの設定をすべてコードに
"Infrastructure as Code" とは、これまで手順書や、シェルスクリプト、または管理者の脳内に
分散していたサーバー構築の手順(や作業)をすべてコード化し、実行可能な状態で管理しよう、という概念です。
コードは必ず正しい状態で管理される
常に正確で、一切漏れのない構築手順を管理できます。
知りたいことはすべて、コードを読めばわかります。
誰でもサーバー構築が可能
コードを実行する方法さえ知っていれば、どのようなサーバーも同じ手順で構築可能になります。
Chef とは
Chef はコンフィギュレーションツール
構成管理ツールにも実はいろいろと種類があります。
それぞれのツールが担当するプロビジョニングのレイヤから、以下のように分類されています。
- ブートストラッピングツール
- OS のインストール
- Docker, Vagrant, Packer
- コンフィギュレーションツール
- サーバーソフトウェアなどのインストール
- Chef, Puppet
- オーケストレーションツール
- アプリケーションのデプロイ
- Serf, Fabric, Ansible
Chef のプロビジョニング
Chef の Recipe はサーバーのあるべき状態を定義したものです。
Chef は Recipe を実行すると、サーバーの現在の状態を取得し、Recipe に定義されている状態との差分を埋めることで、
サーバーをあるべき状態へと収束します。
サーバーは常にあるべき状態へ収束されるので、Recipe を何度実行しても同じ結果が得られます。(冪等性)
サーバーを修正したい場合でも、Recipe の一部だけを書き換えれば、
必ずあるべき状態へ収束されるので、Recipe さえ管理しておけば複雑な運用手順やシェルスクリプトは不要になります。
Chef の運用形態
クライアント/サーバー形式
- サーバー
- Chef-Server
- Enterprise 版と Open Source 版がある
- Node 情報の管理
- Node の状態管理
- Chef-Zero
- インメモリの使い捨て Chef-Server
- 主に検証用
- Chef-Server
- クライアント
- Chef-Client
- Node の収束
- Chef-Client
単体
- Chef-Solo
- 簡易 Chef-Server + Chef-Client
- 1台で完結
- Knife Solo
- Chef-Solo をリモートから扱うツール
- 複数の Chef-Solo クライアントを扱える
外部ツールとの連携
- Vagrant
- Chef Solo Provisioner
- Box に対するプロビジョニングツールとして Chef Solo を利用
- vagrant-omnibus
- Box に Chef-Client を自動インストールする Vagrant プラグイン
- Chef Solo Provisioner
- Docker
- Chef-Container
- Docker コンテナ用 Chef クライアント
- Knife Container
- Docker コンテナのライフサイクルを管理する Knife プラグイン
- Chef-Container
コメントの追加