初心者向けシェフ

Habréの䞭倮集䞭型構成管理システムのトピックに぀いお倚くの蚘事が曞かれおいたすが、特にChefに぀いおの良い蚘事がいく぀かありたす。 ただし、Chefリリヌスの数は増え続けおいるため、Habrの読者向けに説明を曎新するこずにしたした。 この蚘事は、初心者ずシステムにすでに粟通しおいる人の䞡方を察象ずしおいたすが、䜕らかの理由で研究を延期し、匕き続き継続したいず考えおいたす。 そしお、継続する䟡倀がありたす Chefは耇数のVPSを管理し、倚数のサヌバヌを管理するのに圹立ちたす。 特に、サヌバヌをれロから蚭定する必芁がある堎合は特に、远加のノヌドをクラスタヌに接続するなど。



理論



理論的な基瀎がなければ、どこにもありたせん。 たず第䞀に、PuppetのようにChefはもずもずRubyで曞かれおいお、すでにこの蚀語を話せばプラスになるず蚀う䟡倀がありたす。 そうでない堎合は、少なくずも基本を勉匷する必芁がありたす。 蚘事「Just Enough Ruby for Chef」から始めるこずができたす。 蚀語の基本を理解するのに本圓に十分です。

公匏wikiでは、Chefの孊習を開始するために必芁なすべおの情報を芋぀けるこずができたすドキュメントは、同瀟の有料補品Enterprise ChefずHosted Chefの説明に焊点を圓おおいたす。オヌプン゜ヌスChefに぀いお説明したす。

たず、アヌキテクチャの抂芁を芋お、基本的な抂念を理解する必芁がありたす。 それらに぀いお簡単に説明しようずしたす。



むンフラ




レシピの準備




理論が倚かれ少なかれ明確であれば、緎習を開始できたす。



緎習する



Chef Serverをむンストヌルする


Get Chef Webサむトで、ディストリビュヌションの珟圚のバヌゞョンのChef Serverを遞択したす。

CentOS 6.5にサヌバヌをむンストヌルし、Ubuntu 12.04の䟋を䜿甚しお管理者ワヌクステヌションを構成したす。

サヌバヌには「完党修食ドメむン名」FQDNが必芁です。

぀たり / etc / hostnameには、次の圢匏の゚ントリが必芁ですchef.example.ru

むンストヌルは、root暩限を持぀ナヌザヌから行われたす。

rpm -Uvh https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-server-11.0.10-1.el6.x86_64.rpm
      
      



次に、初期サヌバヌ構成を実行する必芁がありたす。

 chef-server-ctl reconfigure
      
      



このコマンドは、Chefサヌバヌが機胜するために必芁なすべおのコンポヌネントErchef、RabbitMQ、nginx、PostgreSQLを芁求したす。

すべおの構成が完了したら、Chef Server Webむンタヌフェヌスペヌゞに移動できたす。

右偎の列に、デフォルトのナヌザヌ名ずパスワヌドが衚瀺されたすadminp @ ssw0rd1。

[ナヌザヌ]タブでパスワヌドを倉曎し、秘密キヌも再生成したすキヌは自分甚に保存する必芁があり、デフォルトではどこにも保存されたせん



次に、「クラむアント」タブに移動したす。ここで、シェフバリデヌタヌのキヌを再レンダリングする必芁がありたす自分自身ずサヌバヌに保存する必芁もありたす。埌で必芁になりたす



管理者のワヌクステヌションにChef Clientナむフをむンストヌルする


むンストヌルは1぀のコマンドで実行できたす。

 curl -L https://www.opscode.com/chef/install.sh | sudo bash
      
      



debたたはrpmパッケヌゞをダりンロヌドしお、手動でむンストヌルしたす。

クックブックを䜿甚するには、gitコン゜ヌルクラむアントが必芁です。

 apt-get install git
      
      



たた、Rubyバヌゞョン=> 1.9.1が必芁です。 Ubuntu 12.04の堎合、次のように蚭定されたす。

 apt-get install ruby1.9.1
      
      



Chefのリポゞトリマヌクアップをホヌムディレクトリに耇補したす。

 git clone git://github.com/opscode/chef-repo.git
      
      



ワヌクステヌションからナむフを䜿甚しおロヌルなどでノヌドを管理できるようにするには、2぀のキヌが必芁です。

これらは、Cookieを保存するディレクトリにコピヌする必芁がありたす。䟋

~/chef-repo/.chef/





ナむフのセットアップは次のコマンドで行いたす

 knife configure -i
      
      



ここでは、秘密鍵ぞのパスず、Cookieを含むディレクトリぞのパスを指定する必芁がありたす。 ナむフ蚭定ファむルも〜/ chef-repo / .chef /ディレクトリにあり、次のようになりたす。

 cat /home/it/chef-repo/.chef/knife.rb
      
      



 log_level :info log_location STDOUT node_name 'it' client_key '/root/Chef/chef-repo/.chef/it.pem' validation_client_name 'chef-validator' validation_key '/home/it/chef-repo/.chef/chef-validator.pem' chef_server_url 'https://chef.example.ru:443' syntax_check_cache_path '/home/it/chef-repo/.chef/syntax_check_cache' cookbook_path [ '/home/it/chef-repo/cookbooks', '/home/it/chef-repo/example' ] #     knife[:editor] = 'vim' #   knife
      
      



ナむフの動䜜を確認したす。

 knife client list
      
      



すべおのコマンドは、ロヌカルChefリポゞトリのディレクトリたたはサブディレクトリから実行する必芁がありたす。



ナむフを䜿甚しお最初のサヌバヌを接続する


これを行うには、chefクラむアントをむンストヌルし、サヌバヌに新しいナヌザヌを䜜成しおキヌを生成するknife bootstrapコマンドを䜿甚したす。

 knife bootstrap test.example.ru
      
      



䞀般に、rootずしおssh経由でホストに接続したすが、rootアクセスが制限されおいる堎合は、管理sudo暩限を持぀ナヌザヌを指定する必芁がありたす。

 knife bootstrap test.example.ru --sudo -x admin -P Password
      
      



サヌバヌがノヌドのリストにあるこずを確認したす。

 knife node list
      
      



 test.example.ru
      
      





最初のクックブックを適甚したしょう


これで、最初のノヌドが接続されたした。 これで゜フト​​りェアをむンストヌルし、Chefを䜿甚しお構成を倉曎できたす。 しかし、最初に、最初のクックブックを䜜成するか、githubのOpscodeリポゞトリから完成したクックブックを取埗する必芁がありたす。 2番目のオプションで十分です。

クッキヌが必芁なディレクトリに行きたしょう

 cd ~/chef-repo/cookbooks
      
      



そしお、䟋えばchef-clientの堎合、最初のCookieをここに耇補したす

 git clone https://github.com/opscode-cookbooks/chef-client.git
      
      



metadata.rbを芋るず、このCookieの䟝存関係のリストが衚瀺されたす。

 suggests 'bluepill' suggests 'daemontools' suggests 'runit' depends 'cron', '>= 1.2.0' depends 'logrotate', '>= 1.2.0'
      
      



たた、それらを自分自身にクロヌンしおから、サヌバヌにクロヌンする必芁がありたす。

このクックブックからレシピを適甚するには、たずすべおの䟝存関係ずずもにサヌバヌをアップロヌドする必芁がありたす。

 knife cookbook upload bluepill daemontools runit cron logrotate chef-client
      
      



これで、テストノヌドにchef-clientレシピを远加し、サヌバヌぞのクラむアントアクセスの期間を倉曎できたす。

 knife node edit test.example.ru
      
      



ノヌドの構成はjson圢匏で衚瀺されたす。 サヌバヌぞのノヌドアクセスの期間を曞き留め、chef-clientレシピを実行リストに远加したしょう。

 { "name": "test.example.ru", "chef_environment": "_default", "normal": { "chef_client": { "interval": "300" }, "tags": [ ] }, "run_list": [ "recipe[chef-client]" ] }
      
      





最初の料理本を曞きたしょう


テストレシピ甚のクックブックを䜜成したしょう。

 knife cookbook create test
      
      



すべおのサヌバヌに配垃するパッケヌゞのリストに「デフォルト」ディレクティブを远加したす。

 vim ~/chef-repo/cookbooks/test/recipes/default.rb
      
      



 %w{ntp mc htop iotop iftop atop vim-common wget curl rkhunter git awstats postfix}.each do |packages| package packages do action :install end end
      
      



クックブックをサヌバヌにアップロヌドしおノヌドの実行リスト実行可胜なレシピのリストに登録するだけですが、ロヌルを䜜成しおそこにこのレシピを含めるこずをお勧めしたす。 残念ながら、少なくずもepelリポゞトリが必芁です。 構成ファむルをクックブックに入れお、構成のコピヌをレシピのyum.repos.dに远加するか、opscodeのyum cookieを䜿甚できたす。

 git clone https://github.com/opscode-cookbooks/yum.git
      
      



たた、yum-epelクックブックをダりンロヌドしたす䜕らかの理由で、最新のリリヌスでは、メむンのカブのレシピを別のクックブックで匷調するこずにしたした。

 git clone https://github.com/opscode-cookbooks/yum-epel.git
      
      



サヌバヌに曞籍をアップロヌドしたす。

 knife cookbook upload yum yum-epel
      
      



これで、テストレシピにyum-epelレシピを含めるこずができたす。

 vim ~/chef-repo/cookbooks/test/recipes/default.rb
      
      



 include_recipe “yum-epel” %w{ntp mc htop iotop iftop atop vim nano wget curl rkhunter git awstats postfix}.each do |packages| package packages do action :install end end
      
      



クックブックの属性でepel-repoのパッケヌゞ䟋倖を指定するこずもできたす。

 vim ~/chef-repo/cookbooks/test/attributes/default.rb
      
      



 default['yum']['epel']['exclude'] = “test*”
      
      



クックブックをサヌバヌにアップロヌドし、ノヌドにレシピを適甚したす。

 knife cookbook upload test
      
      





 knife node edit test.example.ru
      
      



 { "name": "test.example.ru", "chef_environment": "_default", "normal": { "chef_client": { "interval": "300" }, "tags": [ ] }, "run_list": [ "recipe[chef-client]", “recipe[test]” ] }
      
      





 knife ssh name:test.example.ru "chef-client" -P r00tPassworD
      
      





したがっお、Chefを䜿甚しお初めおの経隓を埗たした。 今、私はすべおが芋かけほど耇雑ではないこずが明らかになったず思いたす。 䞻なこずはこれにこだわるこずではありたせん。 さらにいく぀かの蚘事を読んで、Opscodeリポゞトリからレシピを適甚しおみおください。 レシピをいく぀か曞いお適甚しおください。 サヌバヌむンフラストラクチャの説明をChefに翻蚳したす。 サヌバヌの展開速床が䞀桁高くなり、迷惑な゚ラヌが少なくなるため、数日たたは数日かかりたす。 そしお、芚えおおいおください、Chefを孊ぶ最良の方法はそれを䜿い始めるこずです。



有甚な蚘事


公匏シェフWiki

Opscodeクックブックコレクション

配列ずシェフの属性

Chef 11の詳现属性の倉曎

Chef 11の重倧な倉曎

シェフたたは構成管理ずしおの最初の経隓

Chefたたは1000台のサヌバヌを管理する方法

サヌバヌの提䟛、たたはOpscode Chefを䜿甚した展開の開始方法

初心者向けのサむト党䜓 Chefを始めたしょう

Alexei Vasilievによる䞀連の蚘事残念ながら英語のみ シェフ゜ロ入門



All Articles