Chefチュートリアル–インフラストラクチャをコードに変換する



Chefチュートリアルは、Chefブログシリーズの2番目のブログです。このブログでは、ChefアーキテクチャとCookbooks、RecipesなどのChefコンポーネントについて例を挙げて説明しています。

Chefチュートリアル

Chefチュートリアルは、Chefブログシリーズの2番目のブログです。私の中で 前のブログ 、Chefとは何か、構成管理と、Gannettのユースケースを使用してChefが構成管理を実現する方法について説明しました。

このChefチュートリアルでは、次のトピックについて説明します。





私を読んだ後、私は確信しています 前のブログ Chefがどのように機能するかを知りたいと思うはずです。このChefチュートリアルブログの最初のセクションでは、Chefアーキテクチャについて詳しく説明し、疑問をすべて解消します。



Chefチュートリアル–Chefアーキテクチャ

次の図に示すように、3つの主要なChefコンポーネントがあります。

  • ワークステーション
  • サーバ
  • ノード

Chefアーキテクチャ-Chefチュートリアル-Edureka

Chefチュートリアル–ワークステーション



ワークステーションは、すべてのChef構成が存在する場所です。管理。このマシンは、後で中央のChefサーバーにプッシュできるすべての構成データを保持します。これらの構成は、ChefServerにプッシュする前にワークステーションでテストされます。ワークステーションは、と呼ばれるコマンドラインツールで構成されています ナイフ、 これは、Chefサーバーとの対話に使用されます。中央のChefサーバーを一緒に管理する複数のワークステーションが存在する場合があります。

ワークステーションは、以下の機能を実行する責任があります。

  • 後で中央のChefサーバーにプッシュされるクックブックとレシピの作成
  • 中央のChefサーバーでのノードの管理

さて、上記のポイントを一つ一つ理解していきましょう。

後で中央のChefサーバーにプッシュされるクックブックとレシピの作成

レシピ: レシピは、特定の構成またはポリシーを説明するリソースのコレクションです。システムの一部を構成するために必要なすべてを説明します。ユーザーは、Chefがアプリケーションとユーティリティ(Apache HTTPサーバー、MySQL、Hadoopなど)を管理する方法と、それらを構成する方法を説明するレシピを作成します。

これらのレシピは、特定の状態にある必要がある一連のリソース、つまり、インストールする必要があるパッケージ、実行する必要があるサービス、または書き込む必要があるファイルについて説明しています。

ブログの後半 、Chef Workstationでrubyコードを記述して、ChefノードにApache2パッケージをインストールするレシピを作成する方法を紹介します。

クックブック: 複数のレシピをグループ化して、クックブックを作成できます。クックブックはシナリオを定義し、そのシナリオをサポートするために必要なすべてを含みます。

  • 使用するリソースとそれらが適用される順序を指定するレシピ
  • 属性値
  • ファイルの配布
  • テンプレート
  • ライブラリ、定義、カスタムリソースなどのChefの拡張機能

中央のChefサーバーでのノードの管理

ワークステーションシステムには、中央のChefサーバーのあらゆる側面を制御および管理するために必要なコマンドラインユーティリティがあります。中央のChefサーバーへの新しいノードの追加、中央のChefサーバーからのノードの削除、ノード構成の変更などはすべて、ワークステーション自体から管理できます。

ここで、上記の機能を実行するために必要なワークステーションのコンポーネントを見てみましょう。

ワークステーションには2つの主要なコンポーネントがあります。

ナイフユーティリティ: このコマンドラインツールを使用して、ワークステーションから中央のChefサーバーと通信できます。中央のChefサーバーでのノードの構成の追加、削除、変更は、このKnifeユーティリティを使用して実行されます。 Knifeユーティリティを使用すると、クックブックを中央のChefサーバーとロールにアップロードでき、環境も管理できます。基本的に、中央のChef Serverのすべての側面は、Knifeユーティリティを使用してワークステーションから制御できます。

ローカルChefリポジトリ: これは、中央のChefServerのすべての構成コンポーネントが保存される場所です。このChefリポジトリは、中央のChefサーバーと同期できます(ここでもknifeユーティリティ自体を使用します)。

Chefチュートリアル-Chefサーバー

Chef Serverは、構成データのハブとして機能します。 Chefサーバーには、クックブック、ノードに適用されるポリシー、およびChef-Clientによって管理されている登録済みの各ノードを説明するメタデータが格納されます。

ノードはChef-Clientを使用して、レシピ、テンプレート、ファイル配布などの構成の詳細をChefサーバーに要求します。次に、Chef-Clientは、ノード自体で(Chefサーバーではなく)可能な限り多くの構成作業を行います。各ノードにはChefClientソフトウェアがインストールされており、そのノードに適用可能な中央のChefサーバーから構成をプルダウンします。このスケーラブルなアプローチにより、構成作業が組織全体に分散されます。

Chefチュートリアル-Chefノード

ノードは、中央のChef Serverを使用して管理される、クラウドベースの仮想サーバーまたは独自のデータセンター内の物理サーバーにすることができます。ノードに存在する必要がある主要なコンポーネントは、中央のChefサーバーとの通信を確立するエージェントです。これはChefClientと呼ばれます。

Chefクライアントは次の機能を実行します。

  • 中央のChefサーバーとのやり取りを担当します。
  • 中央のChefサーバーへのノードの初期登録を管理します。
  • クックブックをプルダウンし、ノードに適用して構成します。
  • 新しい構成アイテムがある場合は、それをフェッチするための中央Chefサーバーの定期的なポーリング。

Chefサーバー、ワークステーション、ノードのインストール方法については、ここをクリックしてください

Chefチュートリアル– Chefの利点:

Chefの主な利点を含めないと、このChefチュートリアルは不完全になります。

  • Chefを使用してインフラストラクチャ全体を自動化できます。手動で実行されていたすべてのタスクは、Chefツールを介して実行できるようになりました。
  • Chefを使用すると、数分以内に数千のノードを構成できます。
  • Chefの自動化は、次のようなパブリッククラウド製品の大部分で機能します。 。
  • Chefは、自動化するだけでなく、システムの一貫性をチェックし、システムが実際に必要な方法で構成されていることを確認します(Chef Agent / Clientがこの仕事をします)。誰かがファイルを変更して間違いを犯した場合、Chefがそれを修正します。
  • インフラストラクチャ全体をChefリポジトリの形式で記録できます。これは、インフラストラクチャを最初から再作成するための青写真として使用できます。

理論的な投稿で十分に、これまでこのChefチュートリアルを楽しんでいただけたと思います。ハンズオンを楽しんでみましょう。

Chefチュートリアル|シェフ入門|エドゥレカ

Chefチュートリアル–ハンズオン

ここでは、Chef Workstationでレシピ、クックブック、テンプレートを作成する方法について説明します。また、CookbookをWorkstationからChef-Client(Chef Node)にデプロイする方法についても説明します。

ChefWorkstation用とChefNode用の2つの仮想イメージを使用しています。 Chef Serverの場合、ホストされているバージョンのChef(クラウド上)を使用します。 ChefServerに物理マシンを使用することもできます。

ステップ1: ChefワークステーションにChefDK(開発キット)をインストールします。

Chef DKは、Chefをコーディングするときに必要なすべての開発ツールを含むパッケージです。ここにダウンロードするためのリンクがあります シェフDK

ここで、使用しているオペレーティングシステムを選択します。 CentOS 6.8を使用しているので、をクリックします Red Hat Enterprise Linux

使用しているCentOSのバージョンに応じてリンクをコピーします。上のスクリーンショットで強調表示していることがわかるように、私はCentOS6を使用しています。

ワークステーションターミナルに移動し、wgetコマンドを使用してChef DKをダウンロードし、リンクを貼り付けます。

これを実行します:

wget https://packages.chef.io/stable/el/6/chefdk-1.0.3-1.el6.x86_64.rpm

これでパッケージがダウンロードされました。 rpmを使用してこのパッケージをインストールする時が来ました。

これを実行します:

rpm -ivh chefdk-1.0.3-1.el6.x86_64.rpm

ChefDKがワークステーションにインストールされました。

ステップ2: ワークステーションでレシピを作成する

ワークステーションでレシピを作成し、ローカルでテストして機能していることを確認することから始めましょう。chef-repoという名前のフォルダーを作成します。このフォルダ内にレシピを作成できます。

これを実行します:

mkdir chef-repo cd chef-repo

このchef-repoディレクトリに、edureka.rbという名前のレシピを作成します。 .rbはrubyに使用される拡張子です。私はvimエディターを使用します。gedit、emac、viなどの他のエディターを使用できます。

これを実行します:

vim edureka.rb

ここに以下を追加します。

file '/ etc / motd' content'Welcome to Chef 'end

php7をインストールする方法

このRecipe です dureka .rb 「WelcometoChef」という内容の/ etc / motdという名前のファイルを作成します。

次に、このレシピを使用して、機能しているかどうかを確認します。

実行する この:

シェフ-edureka.rbを適用します

そのため、chef-repoに作成されたコンテンツを含むファイルがあります シェフへようこそ。

ステップ3: Mhttpdパッケージをインストールするためのレシピファイルの変更

ワークステーションにhttpdパッケージをインストールするようにレシピを変更し、index.htmlファイルをデフォルトのドキュメントルートにコピーして、インストールを確認します。パッケージリソースのデフォルトのアクションはインストールであるため、そのアクションを個別に指定する必要はありません。

実行する この:

vim edureka.rb

ここに以下を追加します。

パッケージ 'httpd' service'httpd 'do action [:enable、:start] end file' / var / www / html / index.html 'do content'Welcome to Apache in Chef' end

次に、以下のコマンドを実行して、これらの構成を適用します。

実行する この:

シェフ-edureka.rbを適用します

コマンドの実行は、レシピ内の各インスタンスを明確に記述します。 Apacheパッケージをインストールし、ワークステーションでhttpdサービスを有効にして開始します。また、デフォルトのドキュメントルートに「Welcometo ApacheinChef」というコンテンツのindex.htmlファイルを作成します。

次に、Webブラウザーを開いて、Apache2のインストールを確認します。パブリックIPアドレスまたはホストの名前を入力します。私の場合、それはlocalhostです。

ステップ4: 次に、最初のクックブックを作成します。

クックブックというディレクトリを作成し、以下のコマンドを実行してクックブックを生成します。

実行する この:

mkdirクックブックcdクックブックシェフがクックブックを生成httpd_deploy

httpd_deployは、クックブックに付けられた名前です。好きな名前を付けることができます。

この新しいディレクトリhttpd_deployに移動しましょう。

実行する この:

cd httpd_deploy

次に、作成したクックブックのファイル構造を見てみましょう。

実行する この:

ステップ5: Cテンプレートファイルを再作成します。

以前、いくつかのコンテンツを含むファイルを作成しましたが、それは私のレシピとクックブックの構造に適合しません。それでは、index.htmlページのテンプレートを作成する方法を見てみましょう。

実行する この:

chefはテンプレートを生成しますhttpd_deployindex.html

クックブックのファイル構造が表示されている場合は、index.html.erbファイルを含む名前テンプレートで作成されたフォルダーがあります。このindex.html.erbテンプレートファイルを編集して、レシピを追加します。以下の例を参照してください。

デフォルトのディレクトリに移動します

実行する この:

cd / root / chef-repo / cookbook / httpd_deploy / templates / default

ここで、使い慣れたエディターを使用してindex.html.erbテンプレートを編集します。 vimエディターを使用します。

実行する この:

vim index.html.erb

次に、以下を追加します。

Chef ApacheDeploymentへようこそ

ステップ6: Cこのテンプレートを使用してレシピを再作成します。

Recipesディレクトリに移動します。

tを実行します 彼:

cd / root / chef-repo / cookbooks / httpd_deploy / recipes

次に、必要なエディターを使用してdefault.rbファイルを編集します。 vimエディターを使用します。

実行する この:

vim default.rb

ここに以下を追加します。

パッケージ 'httpd'サービス 'httpd'アクション[:enable、:start]終了テンプレート '/var/www/html/index.html'実行ソース 'index.html.erb'終了

次に、chef-repoフォルダーに戻り、ワークステーションでレシピを実行/テストします。

実行する この:

cd / root / chef-repo chef-client --local-mode --runlist'recipe [httpd_deploy] '

私のレシピによると、Apacheは私のワークステーションにインストールされており、サービスが開始され、起動時に有効になっています。また、テンプレートファイルがデフォルトのドキュメントルートに作成されています。

これで、ワークステーションをテストしました。 Chefサーバーをセットアップする時が来ました。

ステップ7: Chefサーバーのセットアップ

クラウド上でホストされているバージョンのChefServerを使用しますが、物理マシンを使用することもできます。 このChef-Serverはに存在します manage.chef.io

アカウントをお持ちでない場合は、こちらでアカウントを作成してください。アカウントを作成したら、ログイン資格情報を使用してサインインします。

ChefServerは次のようになります。

スコープ解決演算子c ++

初めてサインインする場合、最初に行うことは組織を作成することです。組織は基本的に、ChefServerで管理するマシンのグループです。

まず、[管理]タブに移動します。あちらで、私はすでにeduという組織を作りました。そのため、ワークステーションにスターターキットをダウンロードする必要があります。このスターターキットは、ワークステーションからChefサーバーにファイルをプッシュするのに役立ちます。右側の設定アイコンをクリックし、スターターキットをクリックします。

そこをクリックすると、スターターキットをダウンロードするオプションが表示されます。それをクリックするだけで、スターターキットのzipファイルをダウンロードできます。

このファイルをルートディレクトリに移動します。次に、ターミナルでunzipコマンドを使用して、このzipファイルを解凍します。 chef-repoというディレクトリが含まれていることに気付くでしょう。

実行する この:

chef-starter.zipを解凍します

次に、このスターターキットをchef-repoディレクトリのcookbookディレクトリに移動します。

実行する この:

mvスターター/ root / chef-repo / cookbook

シェフクックブックはクックブックスーパーマーケットで入手できます。シェフスーパーマーケットに行くことができます。から必要なクックブックをダウンロードします supermarket.chef.io 。そこからApacheをインストールするためのクックブックの1つをダウンロードしています。

実行する e t h は:

cdchef-レポナイフクックブックサイトダウンロードlearn_chef_httpd

ApacheCookbook用にダウンロードされたTarボールがあります。次に、このダウンロードしたTarファイルからコンテンツを抽出する必要があります。そのために、tarコマンドを使用します。

tar -xvf learn_chef_httpd-0.2.0.tar.gz

必要なすべてのファイルは、このクックブックの下に自動的に作成されます。変更する必要はありません。レシピフォルダ内のレシピの説明を確認しましょう。

tを実行します h です

cd / root / chef-repo / learn_chef_httpd / recipes cat default.rb

今度は、このクックブックをChefServerにアップロードします。

ステップ8: クックブックをChefサーバーにアップロードします。

ダウンロードしたApacheクックブックをアップロードするには、まずこのlearn_chef_httpdファイルをchef-repoのCookbooksフォルダーに移動します。次に、ディレクトリをクックブックに変更します。

tを実行します h です

mv / root / chef-repo / learn_chef_httpd / root / chef-repo / cookbooks

次に、このクックブックディレクトリに移動します。

これを実行します:

CDクックブック

このディレクトリで、以下のコマンドを実行してApacheCookbooをアップロードします。に:

Exec ute t h は:

ナイフクックブックアップロードlearn_chef_httpd

Chefサーバー管理コンソールからクックブックを確認します。ポリシーセクションには、アップロードしたクックブックがあります。以下のスクリーンショットを参照してください。

最後のステップは、ChefNodeを追加することです。ワークステーションとChefサーバーをセットアップしました。次に、自動化のためにクライアントをChefサーバーに追加する必要があります。

ステップ9: ChefサーバーへのChefノードの追加。

デモンストレーションの目的で、1台のCentOSマシンをChefノードとして使用します。 1つのChefサーバーに数百のノードが接続されている可能性があります。私のノードマシンの端末の色はワークステーションとは異なるため、両方を区別することができます。

ノードのIPアドレスが必要なだけです。ノードマシンで以下のコマンドを実行します。です。

Exec u t です t h は:

ifconfig

ChefノードのIPアドレスとその名前を指定するKnifeBootstrapコマンドを実行して、Chefノードをサーバーに追加します。以下に示すコマンドを実行しますに:

Exec ute t h は:

ナイフブートストラップ192.168.56.102--ssh-user root --ssh-password edureka --node-name chefNode

このコマンドは、ChefノードへのChef-Clientのインストールも初期化します。以下に示すように、knifeコマンドを使用してワークステーションのCLIから確認できます。に:

Exec ute t h は:

ナイフノードリスト

Chefサーバーから確認することもできます。サーバー管理コンソールの[ノード]タブに移動します。ここで、追加したノードが存在することがわかります。以下のスクリーンショットを参照してください。

ステップ10: ノード実行リストの管理

クックブックをノードに追加し、Chefサーバーからその実行リストを管理する方法を見てみましょう。以下のスクリーンショットに示されているように、[アクション]タブをクリックし、[実行リストの編集]オプションを選択して、実行リストを管理します。

利用可能なレシピで、learn_chef_httpdレシピを確認できます。これを利用可能なパッケージから現在の実行リストにドラッグして、実行リストを保存できます。

次に、ノードにログインし、chef-clientを実行してRunLisを実行します。t。

Exec ute t h は:

チーフクライアント

このChefチュートリアルを楽しんで、Chefを使用して数百のノードを構成する方法を学んだことを願っています。 Chefは、DevOpsを実現するために多くの組織で重要な役割を果たしています。 Chefを使用すると、組織はアプリケーションをより頻繁にリリースし、信頼を得ることができます。bガラス。

このブログを「 Chefチュートリアル 」関連、 チェックアウト 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 Edureka DevOps認定トレーニングコースは、学習者がSDLCの複数のステップを自動化するためのPuppet、Chef、Jenkins、Nagios、GITなどのさまざまなDevOpsプロセスとツールに関する専門知識を習得するのに役立ちます。