サーバーの提供、またはOpscode Chefを使用した展開の開始方法

私が出会ったロシア語の記事( Opscode Chef )の大部分には、料理の本からの抜粋と、「なんてクールなシェフ」というストーリーが含まれていました。 そしてそれだけです。 のように、私ができることを見てください! しかし、それをどうするか、どのように行うかは明確ではありません。 公式ウェブサイトには詳細なウィキがあります。 しかし、私見では、迷子になりやすいです。 この記事が作成された基礎となるビデオ形式でのみ、「初歩的な作品の作り方」という簡単なガイドを見つけました。



パート1 イデオロギー。 なぜだ。



5台のサーバーがある場合、それらをセットアップすることは非常にまれであり、2、3の手で十分です。 GitまたはSVNに/ etcを配置することもできます。定期的にバックアップを作成し、安心して生活してください。 アプリケーションの展開を自動化するために、管理者が最もよく知っているのは、たとえbash / python / ruby​​またはcapistrano / fabric /などの単純なスクリプトであってもです。

類似または同一のほかに12台以上の車がある場合、スクリプト作成はすでに困難です。 Capistrano /ファブリック-複数のサーバーでいくつかの便利な並行起動を提供しますが、ロジックを自分で記述する必要があります。 特に同じ言語のアプリケーションを一緒にデプロイすると便利ですが、構成やセットアップはできません。 ここでは、独自の「クランチ」をフェンスするか、簡単な方法で既製のものを用意する必要があります。



Chefから、最後までロックを解除し、次のものに出くわしました。 同一のサーバーがn台あり、/などすべてが同じリポジトリブランチを持っているとします。 nginxの構成を変更しました。 他のすべてのマシンに変更を適用する必要があります。 どうやって? たとえば、dshを使用します。

dsh -r ssh -c -M -m node1 -m node2 -m nodeN -- 'cd /etc && sudo git pull'
      
      





ここでは、原則として、「/ etc / init.d / nginx reload」を追加して、どこでも一度にすべてを更新できます。 しかし、生産ではこれは良くありません。 また、ローカルユーザーにとって、中断はあまり快適ではありません。 他のすべてには、スーパーバイザー、postgres、mongodb、および同じストーリーを持つ他の多くのサービスがまだあります。 少なくとも、それぞれを再起動するスクリプトを実行する必要があります。 一般的に、「クランチ」が取得されます。

そして、シェフはこのためだけです。 構成を変更し、ファーム全体に分散し、必要な(そして必要なだけの)サービスが過負荷になりました。 さらに、* nixバージョンからの抽象化とMSがサポートされているようです。 設定には、サーバー設定に応じて「収集」されるテンプレートがあります。 一般的に、おいしいです。 ちなみに、現在のプロジェクトでは、bash、fabric、Chefの2つのスクリプトのすべてを一度に使用します。

練習に近い。 簡単なnginxインストールクックブックを最初から作成してデプロイし、同時にそれを理解します。 まず、sudoを備えたテストマシンが必要です。 この命令はUbuntu 11.10用に設計されていますが、どの* nixでも動作するはずです。



2.インストールと構成



シェフはRubyで書かれています。 また、 Rubyバージョンマネージャー(RVM)を使用しRubyをインストールする方が便利です。

彼のマシンで、通常のユーザーの下から:

 bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
      
      





次に、ログインするか、新しいターミナルを開きます(bashプロファイルが再起動するように)。

 rvm install 1.9.2 rvm use 1.9.2 --default
      
      





RVMは、ルートの外部から実行される場合、自身と〜/ .rvmの両方をハックします。 システムが汚れることはありません。その場合は簡単に取り外すことができます。

シェフをソロにしました。 パッケージからインストールできますが、rubygemsはパッケージマネージャーから独立した、より「ネイティブ」な方法です。

 gem install knife-solo
      
      





3つのChef構成があります。



構成:

 cd ~ knife configure -r . --defaults
      
      





3.キッチン、料理の本、ナイフ



 knife kitchen solodemo
      
      





solodemoフォルダーが作成されます。

 cd solodemo tree . |-- cookbooks - .  . |-- data_bags -     (, ,  ,   ). |-- nodes -    (). |-- roles - .        . , Apache , MySQL . |-- site-cookbooks `-- solo.rb
      
      





これはいわゆる 「キッチン」。 実際、ローカルファイルシステム上でのみ、Chef Serverとの単純化された類似性があります。



クックブックを作成して、nginxをインストールします。

 cd solodemo knife cookbook create nginx -o cookbooks
      
      





これもフォルダーです。 見ます。

 cd cookbooks tree . |-- attributes |-- definitions |-- files | `-- default |-- libraries |-- metadata.rb |-- providers |-- README.md |-- recipes -  " ". default.rb   ,    .     . | `-- default.rb |-- resources `-- templates -    ERB. `-- default
      
      





レシピは、何をする必要があるかを記述するスクリプトです。 RubyとBash、Perl、Python、csh挿入の両方がサポートされています。

いくつかのレシピがありますが、(クックブックを呼び出すときに)特に指定しない限り、「デフォルト」が実行されます。

レシピ/ default.rbで追加

 package "nginx"
      
      





保存します。

ここでの「パッケージ」はリソースです。 Wikiの組み込みリソースの説明を含むリストを表示できます 。 必要に応じて、クックブックで直接補完および拡張できます。 レシピが書かれている言語はRuby DSLです。 ロジックは反対から構築されます。 パッケージ「nginx」をサーバーにインストールする必要があるというだけです。 そしてChefは、必要なことを確実に実行します。 原則として、同じことは他の言語でも記述できます。 しかし、「箱から出して」と言うように、多くの便利なことがあります。 もちろん、微妙な違いがあります。 たとえば、パッケージの場合、名前を正しく設定することが重要です。 したがって、Apacheの場合、条件を記述する必要があります。 RPMベースのディストリビューションではhttpd、Debianではapache2です。

次に、テストサーバーに移動してホスト名を設定します。 これは重要です Chefはそれによってノードを区別します。

 hostname testserver.example.com echo "testserver.example.com" > /etc/hostname
      
      





/ etc / hostsに追加します

 10.10.10.10 testserver.example.com
      
      





私たちはチェックします:

 hostname -f
      
      





答えが「testserver.example.com」の場合-すべてが正常です。 いいえ-/ etc / hostsを編集します。

次に、solodemoフォルダーのローカルマシンから:

 knife prepare ubuntu@testserver.example.com
      
      





少し待って、おそらくsudoのパスワードを入力する必要があります。 「準備」は、コマンドを受け入れるchef-clientをインストールします。

testserver.example.com.jsonという形式のファイルがノードフォルダーに表示されます。 書き込みます:

 { "run_list": ["recipe[nginx]"] }
      
      





つまり、クックブック "nginx"を実行する必要があり、それからレシピ "default"を実行する必要があります。

それから

 knife cook ubuntu@testserver.example.com
      
      



それだけです



結論



はい、1つのnginxの周りにたくさんのダンスがあります。 しかし、些細なタスクのためのクックブックがあり、それらは非常に柔軟で思慮深いです。 そして、自明ではないもののために-書かれたクックブックがインストールを完全に自動化できるようになると、それは一種のドキュメントになります。 最初のサーバーのインストールを把握して説明するのに1週間かかりましたが、最初からインストールするのに約20分かかります。 まだです。 しかし、今すぐ設定するのは楽しいことです。 まだドキュメントを作成しているのであれば、Chefですぐに作成してみませんか? はい、顧客は2つのコマンドを使用して、仮想マシン上のすべてを持ち上げて「タッチ」できます。

私は情報で記事をオーバーロードしないことに決めました。 これはまだガイドです。 しかし、用語はリンクによって作成されるため、興味のある人は誰でも簡単に見つけられます。



参照資料






All Articles