目次 | ||
---|---|---|
|
Infrastructure as Code
サーバーの設定をすべてコードに
"Infrastructure as Code" とは、これまで手順書や、シェルスクリプト、または管理者の脳内に
分散していたサーバー構築の手順(や作業)をすべてコード化し、分散していたサーバー構築の手順(や作業)をすべてコード化し、実行可能な状態で管理しよう、という概念です。実行可能な状態で管理しよう、という概念です。
コードは必ず正しい状態で管理される
常に正確で、一切漏れのない構築手順を管理できます。
知りたいことはすべて、コードを読めばわかります。
誰でもサーバー構築が可能
コードを実行する方法さえ知っていれば、どのようなサーバーも同じ手順で構築可能になります。
Chef とは
Chef はコンフィギュレーションツール
構成管理ツールにも実はいろいろと種類があります。
それぞれのツールが担当するプロビジョニングのレイヤから、それぞれのツールが担当するプロビジョニングのレイヤから、以下のように分類されています。以下のように分類されています。
- ブートストラッピングツール
- OS のインストール
- Docker, Vagrant, Packer
...
- オーケストレーションツール
- アプリケーションのデプロイ
- Serf, Fabric, Ansible
Chef のプロビジョニング
Chef の Recipe はサーバーのあるべき状態を定義したものです。
Chef は Recipe を実行すると、サーバーの現在の状態を取得し、
Recipe を実行すると、サーバーの現在の状態を取得し、Recipe に定義されている状態との差分を埋めることで、
サーバーをあるべき状態へと収束します。
サーバーは常にあるべき状態へ収束されるので、Recipe を何度実行してもを何度実行しても同じ結果が得られます。(冪等性)
同じ結果が得られます。(冪等性)
サーバーを修正したい場合でも、Recipe の一部だけを書き換えれば、
必ずあるべき状態へ収束されるので、Recipe さえ管理しておけばさえ管理しておけば複雑な運用手順やシェルスクリプトは不要になります。複雑な運用手順やシェルスクリプトは不要になります。
Chef の運用形態
クライアント/サーバー形式
Section | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
単体
Section | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
外部ツールとの連携
Section | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Section | |||||
---|---|---|---|---|---|
|
...
|
...
|
|