21日でシェフ。 パート1 はじめに

こんにちは、Habrausers! 路上は天気が悪く、扁桃腺炎は喉の痛みに悩まされます。記事を書いてみませんか? これは、Habréでの執筆の最初の試みなので、厳密に判断しないでください。 その名前は、同様の名前を持つ膨大な数の本から着想を得ています。 この記事では、私自身もある程度私である若いパドヴァ人のための自動化戦士の道を説明しようとします。 CHEFのようなクロスプラットフォームの自動化ツールをすぐに理解するのに役立つアプローチについてです。 また、多大な努力を払って-最初の深刻な実験のために十分に習得する。 この記事は、自動化プロセスを初めて使用するユーザー向けの「ガイド方法」です。





ステップ1. CHEFの紹介





シェフとは? これは、コンピューター(Chef用語では「ノード」)の自動構成管理のためのツールキットです。 ノードはサーバーと通信します。サーバーには、ノードが実行する必要のあるアクションの説明が含まれています。 これらのアクションはクックブックで説明されており、その主な部分はレシピ (ノードの一連のアクション)、 属性 (json形式で記述されたノードデータ)、およびテンプレート (ノードで生成された埋め込みrubyファイル)です。



ステップ2.環境を準備する





さて、戦わずにどんな勉強をしますか? 何が必要ですか? 最小セット(ほとんどの場合に十分)は、ネットワークをサポートする2つの仮想マシンです。 それらの1つにサーバーがインストールされます( オープンソースChef )。 もう一方は顧客になります。 OSの選択は任意です-より洗練された選択、より多くの機能(一般的な人々-松葉杖)を満たすでしょう。 現時点で、私の謙虚な経験は、最も信頼できるオプションがDebのような分布であることを示しています。



もう1つのオプションはpreview.opscode.comリソースを使用することです。このリソースでは、自分で登録し、一意の名前で組織を開始できる既製のChefサーバーを使用して、今後サイトやクックブックを追加できます。 アカウントを作成し、組織を作成したら、いわゆる「スタートキット」をダウンロードできます。これは、証明書と設定ファイルを含む、シェフ管理者向けの既成の設定です。 このキットを使用すると、PCからサーバーを管理できます。



ステップ3.ノードの追加





環境の準備ができたら、最初のノードを追加できます。 2つの基本的な方法があります。サーバーのWebインターフェースを使用する方法と、chef-admin コンソールを使用する方法です。 Webインターフェイスを使用することはメソッドではないため、コンソールを使用します。 このプロセスに役立つツールキットはナイフです。 クックブックの作成、ノードの追加、各ノードの実行リストの管理など、多くの機能を備えています。 この場合、ノードを追加するプロセスはbootstrapと呼ばれます。これは基本的に、ノードでのchefクライアントのインストールと最初の起動です。 また、このプロセスでは、作成されたノードの最初の実行のパラメーターをjson属性の形式で渡すことができます 。 この操作を実行するには、管理者アカウントにアクセスし、そのパラメーターを指定する必要があります。 このプロセスが正常に完了すると、使用可能なノードのリストにノードが表示されます。 このリストは、Webインターフェイスまたはコンソールのknife nodeディレクティブを使用して表示できます。



これでインストールプロセスの最初の部分が完了し、幸せそうな顔でコーヒーを飲みに行くことができます。 私たちは力を得て、最も興味深いもの、つまり自動化が現れるものに進みます。



ステップ4.何を自動化しますか?





あなたが尋ねる-あなたが手ですべてをしなければならないので、ノードを追加することのこの苦痛はすべて自動化のようなものではありません。 はい、あなたは正しいですが、1つの「しかし」があります。 私の若いパドバン、すべてを語りません。 実際、このプロセスは自動化することもできます。 少し脱線しましょう。



多数のコンピューターがあり、それらのコンピューターにOSの初期インストールを実行すると、サーバーとクライアントをそこにインストールすることもできます。 したがって、ソフトウェアをインストールする最初のステップが実装されます。 これは、 シェフサーバークライアントが既に実行されており、指示を待っていることを意味します(常にデーモンまたはサービスとして動作させる方法は別の質問です)。 また、優れたナイフツールキットにより、顧客のパラメーター( 属性 )で検索できます 。 これは、クライアントで初期アクションを実行するために使用できます(たとえば、特定のパッケージをインストールします)。 覚えている場合、属性自体は、 json形式のファイルを使用してクライアントをインストールするときに割り当てられます。 実際には、属性は名前と値で構成されるラベルを想像してください(はい、はい、すべての自動化と同様に、すべてが非常に単純です(笑))。 その結果、これらのラベルで識別されるノードを取得します。たとえば、 node1( "label1" = "value1")です。 サーバーがノードを検索するとき、検索の目的(属性、および対応する値)を設定できます。 非常に詳細に説明すると、これはknife execnodes.findを使用して実行できますが、これについては個別に読むことができます(有用な資料へのリンクは記事の最後にあります)。 したがって、検索プロセスは基準に一致するノードのリストを提供し、このリストを使用して何でもできます-サーバーにフィードします。これにより、ノードはレシピに従って何かをインストールし、保存するなどのコマンドを提供します。

これらすべての簡単な操作の後、 サーバーとそれに必要な数のノードが登録され、 定期的に通信するアーキテクチャを取得する必要があります (このノードは、cronやWindowsサービスなどの利用可能な手段を使用して実装する必要があることに注意してください) ) タスクに戻りましょう-ノードの設定プロセスの自動化。



Chefは非常に強力であるため、ノードで多くの操作を行うことができます。 最後まですべての機能を知っているかどうかさえわかりませんが、そうでないことはほぼ確実です。 公式のChef Webサイトのドキュメントセクションですべての機能を見つけることができますが、すべてが説明されているわけではありません。

多数のパッケージと依存関係をインストールする必要がありますか? 問題ありません! サービスを再起動しますか? 問題ありません! テンプレートでファイルを生成しますか? まったく問題ありません! コンソールでコマンドを実行しますか? 質問なし!



これらはすべて、 クックブックとその中のレシピによって規制されています。 実際、これらの作成と使用はジェダイ自動化のスキルです。 そして、マスタリーを達成するために、Rubyに精通し、Chef自体の概念に触発されることを強くお勧めします。 数週間後、あなたは彼を愛し、彼はあなたを愛し、あなたを幸せにします。たまに松葉杖や虫で彼を怖がらせます。

私の謙虚な意見では、この部分には2日かかります。 もちろん、それはすべてあなたの忍耐力に依存します-だから先に進み、歌を続けましょう。



さて、そして約束されたように、 有用なリンクが以下に添付されています。

ホワイトペーパーおよびマニュアル-docs.opscode.com

Chefサーバーのインストール(エンタープライズ) -docs.opscode.com/install_server_oec.html

Chefサーバーのインストール(オープンソース) -docs.opscode.com/install_server.html

Chefクライアントのインストール-docs.opscode.com/install_workstation.html

ナイフツール-docs.opscode.com/knife.html

ナイフオプション付きの便利な画像-docs.opscode.com/_images/qr_knife_web.png

クックブックの基本情報-docs.opscode.com/essentials_cookbooks.html

詳細情報はこちら-docs.opscode.com/chef_overview.html



PS Anginaが犠牲になったので、記事の2番目のパートまでお別れをします。このパートでは、「調理」の基本について説明します。 私は批判、アドバイス、質問を受け入れています。 ご清聴ありがとうございました!



All Articles