初心者向けシェフ

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による䞀連の蚘事残念ながら英語のみ シェフ゜ロ入門

Source: https://habr.com/ru/post/J208858/


All Articles