Chef-overview
シェフ-概要
Chefは、Opscodeによって開発されたオープンソーステクノロジーです。 Opscodeの共同設立者であるAdam Jacobは、Chefの創設者として知られています。 このテクノロジーは、Rubyエンコードを使用して、レシピやクックブックなどの基本的な構成要素を開発します。 Chefは、インフラストラクチャの自動化に使用され、インフラストラクチャ管理の手作業と反復作業を削減するのに役立ちます。
Chefには、インフラストラクチャの管理と自動化に必要なさまざまなビルディングブロックに対して独自の規則があります。
なぜシェフ?
Chefは、インフラストラクチャのプロビジョニングを自動化するために使用される構成管理テクノロジーです。 Ruby DSL言語に基づいて開発されています。 会社のサーバーの構成と管理のタスクを合理化するために使用されます。 任意のクラウドテクノロジーと統合する機能を備えています。
DevOpsでは、Chefを使用して、社内およびクラウドでサーバーとアプリケーションを展開および管理します。
シェフの特徴
以下は、シェフの最も顕著な特徴です-
- Chefは、一般的なRuby言語を使用して、ドメイン固有の言語を作成します。
- Chefは、ノードの現在のステータスを想定していません。 メカニズムを使用して、マシンの現在のステータスを取得します。
- Chefは、クラウドサーバー、ストレージ、およびソフトウェアの展開と管理に最適です。
シェフの利点
シェフは次の利点を提供しています-
- エントリーの障壁が低い-Chefは標準の構成言語であるネイティブのRuby言語を構成に使用しているため、開発経験のある人なら誰でも簡単に選択できます。
- クラウドとの優れた統合-ナイフユーティリティを使用すると、任意のクラウドテクノロジーと簡単に統合できます。 これは、マルチクラウド環境でインフラストラクチャを配布したい組織にとって最適なツールです。
シェフの短所
Chefの主な欠点のいくつかは次のとおりです-
- Chefの大きな欠点の1つは、クックブックの制御方法です。 働いている人が他の料理本を台無しにしないように、絶え間ない子育てが必要です。
- シェフソロのみが利用可能です。
- 現在の状況では、AWSクラウドに適しています。
- その人がRubyに慣れていない場合、学ぶことは非常に簡単ではありません。
- ドキュメントはまだ不足しています。
シェフの主要な構成要素
レシピ
インフラストラクチャの管理に使用される属性のコレクションとして定義できます。 レシピに存在するこれらの属性は、既存の状態を変更したり、特定のインフラストラクチャノードを設定したりするために使用されます。 Chefクライアントの実行中にロードされ、ノード(マシン)の既存の属性と区画されます。 次に、レシピのノードリソースで定義されているステータスになります。 クックブックの主な機能です。
クックブック
クックブックはレシピのコレクションです。 これらは、Chefサーバーにアップロードされる基本的な構成要素です。 Chefの実行が行われると、その中に存在するレシピが、レシピにリストされているように、指定されたインフラストラクチャを目的の状態に確実に取得します。
リソース
これは、さまざまな種類の状態のインフラストラクチャを管理するために使用されるレシピの基本コンポーネントです。 レシピには複数のリソースがあり、インフラストラクチャの構成と管理に役立ちます。 たとえば-
- package -ノード上のパッケージを管理します
- service -ノード上のサービスを管理します
- user -ノード上のユーザーを管理します
- group -グループを管理します
- template -Rubyテンプレートが埋め込まれたファイルを管理します
- cookbook_file -クックブックのfilesサブディレクトリからノード上の場所にファイルを転送します
- file -ノード上のファイルの内容を管理します
- directory -ノード上のディレクトリを管理します
- execute -ノードでコマンドを実行します
- cron -ノード上の既存のcronファイルを編集します
属性
基本的には設定です。 それらは、クックブックで使用したいもののキーと値のペアと考えることができます。 適用できる属性にはいくつかの種類があり、ノードが動作する最終設定よりも優先順位が異なります。
File
これは、クックブックを使用するノードに配置される静的ファイルを含むクックブック内のサブディレクトリです。 レシピは、そのディレクトリから最終ノードにファイルを移動するリソースとして宣言できます。
テンプレート
ファイルに似ていますが、静的ではありません。 テンプレートファイルは.ebr拡張子で終わります。つまり、埋め込まれたRubyが含まれています。 主に、ファイルに属性値を代入して、ノードに配置される最終ファイルバージョンを作成するために使用されます。
Metadata.rb
パッケージに関するメタデータを管理するために使用されます。 これには、パッケージの名前や詳細などの詳細が含まれます。 また、このクックブックを操作する必要があるクックブックを示す依存関係情報なども含まれます。 これにより、Chefサーバーはノードの実行リストを正しく作成し、すべてのピースが正しく転送されるようにします。
デフォルトのクックブック構造
C:\chef\cookbooks\nginx>tree
Folder PATH listing for volume Local Disk
Volume serial number is BE8B-6427
C: ├───attributes
├───definitions
├───files
│ └───default
├───libraries
├───providers
├───recipes
├───resources
└───templates
└───default
Chef −関連テクノロジー
以下は、Chef関連テクノロジーのリストです。
人形
Puppetは、実行場所に関係なく、ソフトウェアを配信および操作する標準的な方法を提供します。 Linux、Unix、およびWindowsシステム用の自動化された管理エンジンであり、一元化された仕様に基づいて管理タスクを実行します。
Puppet *の主な機能は次のとおりです-
- 均一な構成で新しいシステムを実装します。
- システムを更新し、セキュリティおよびソフトウェアパッケージをアップグレードします。
- 新機能の組み込みと器用な機能の追加。
- データソースの可用性を確保するための構成のカスタマイズ。
- 利用可能なリソースの最適化とコストの最小化。
- 役割を簡素化し、チームが中核的で生産的な問題に集中できるようにします。 *利用可能なインフラストラクチャの鳥瞰図を取得します。
アンシブル
Ansibleは、アプリケーションとシステムの展開を容易にする、根本的にシンプルなIT自動化プラットフォームです。 アプリケーションを展開および更新するためのスクリプトやカスタムコードの作成を避けます。リモートシステムにインストールするエージェントを使用せずに、SSHを使用して、平易な英語に近い言語で自動化します。
Ansible* の主な機能は次のとおりです-
- シンプルで学びやすい
- Pythonで書かれた
- エージェントレス
- YAMLベースのPlaybook
- アンシブル銀河
ソルトスタック
SaltStackは、データ駆動型の構成に使用されます。 これは、動的通信バス上に構築されたインフラストラクチャ管理の新しいアプローチです。 データ駆動型のオーケストレーション、インフラストラクチャのリモート実行、アプリスタックの構成管理に使用されます。
ファブリック
*Fabric* はPythonベースのプログラミング言語で、インフラストラクチャを構成および管理するためにPythonコードにインポートする必要があるPythonのAPIとして開発されています。