Your SlideShare is downloading. ×
0
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
社内Chef勉強会
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

社内Chef勉強会

1,566

Published on

0 Comments
12 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,566
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
21
Comments
0
Likes
12
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 社内Chef勉強会@uchiunyo
  • 2. 本日の目標• Chefで何が 勵るのか 卆する• Chefを何となく動かせるようになる• Chefの動きがそれとなくわかる
  • 3. よくある困りごと• 環境構築しなきゃ・・・⇒ 構築する時間が無い⇒ 手順書どおりに構築できない⇒ そもそも手順書が無い⇒ オペミスこわい
  • 4. 環境構築を自動化しよう!• シェル化して自動化がベターですが・・・• 最近自動化ツールたくさんあります必要Ruby構成Puppet必要Ruby構成Chef勘要PythonデプロイFabric勘要RubyデプロイCapistranoクライアントインストール言語種別ツール名
  • 5. Chefの特徴• 構成 ツールである・このサーバはこういう構成であると定義する・冪等性を持つ• Rubyで記述する• 用語に特徴がある• 対象ホストへのインストールが必要• Communityやgithubで多数のcookbookが公開されている
  • 6. Chef基本用語• chef-server⇒ Server/Client環境のChef。大規模環境向け• chef-solo⇒ 単 のChef。小規模ならこれで十分。• Knife⇒ chefを操作するためのCLIツール• Cookbook⇒ 設定をひとまとめにしたディレクトリ• Recipe⇒ 卣の定義本
  • 7. 早速動かしてみようhttps://github.com/uchiunyo/uchistudy/tree/master/201305chefstudy“Chefをインストールしてみよう” “ してみよう”までやってみましょう。
  • 8. Chef-soloのChef-soloは以下のように します$ sudo chef-solo –c solo.rb –j chef.jsonsolo.rb ・・・ chef-soloの設定ファイルchef.json ・・・ するレシ や匂数を指定する
  • 9. chef.json対象ホストで するレシ や変数を設定します。JSON形式で書きます。{“helloworld":{“name”:”uchi”},"run_list":[“helloworld”]}変数の設定。node[“helloworld”][“name”]として参照可能するcookbookを指定する
  • 10. Cookbook構成[cookbooks]└ [helloworld]├ [recipes] 卣の定義本├ [resources]├ [templates] 設定ファイルのテンプレート├ [files] に必要なファイル├ [attributes] 変数の定義├ [definitions]├ [libraries]└ [providers]
  • 11. ChefでMySQLをインストールしようhttps://github.com/uchiunyo/uchistudy/tree/master/201305chefstudy“Chefでmysqlを入れてみよう“をやりましょう。
  • 12. Recipeの書き方• Resourceを使いcookbookの 卣を定義する・ ResourceとはChefのDSL・ Resourceに対してAttributeを定義する・ Rubyのコードが匏用 勵る・ Recipeに書いた事が から順に される
  • 13. Recipeの書き方template "my.cnf" dopath "/etc/my.cnf"source "my.cnf.erb"owner "root"group "root"mode 0644notifies :restart, service[mysqld]endResourceAttribute%w{mysql mysql-server}.each do |pkg|package pkg doaction :installendendこんな感じにRubyで書けます
  • 14. Recipeの書き方• Resourceいろいろあります・ package パッケージをインストール・ Template テンプレートを配置する・ File ファイルを操作する・ Directory ディレクトリを操作する・ User ユーザー作成する・ Service サービスを起動したり色々する標準Resourceは以下のとおりhttp://docs.opscode.com/chef/resources.html
  • 15. Attributes• Attributesは変数のデフォルト値を設定するファイルを格納するディレクトリです・ RecipeのAttributeとは“別モノ”・ 変数はRecipeやTemplateから匏用できる
  • 16. Attributedefault[“mysql”][“pkg_name”] = “mysql-server”package node[“mysql”][“pkg_name”] doaction :installendcookbook/mysql/templates/attributes/default.rbpackage “mysql-server” doaction :installendcookbook/mysql/recipes/default.rb
  • 17. Templateを使おう• Chefから配布する設定ファイルはTemplateを使用する事で動的に生成が可能です・ TemplateはeRubyで書く<%= … %>と囲う事で、設定ファイルにRubyのコードが埋め込める・ 作成したTemplateはTemplate Resourceで配置する
  • 18. [mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlcharacter-set-server = utf8skip-character-set-client-handshakeinnodb_buffer_pool_size=<%= node["mysql"]["buffer_pool_size"] %>innodb_log_file_size=<%= node["mysql"]["log_file_size"] %>innodb_file_per_table[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidcharacter-set-server = utf8Templateを使おうmy.cnfのTemplate(cookbook/mysql/templates/default/my.cnf.erb)
  • 19. [mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlcharacter-set-server = utf8skip-character-set-client-handshakeinnodb_buffer_pool_size=128Minnodb_log_file_size=32Minnodb_file_per_table[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidcharacter-set-server = utf8Templateを使おう生成された/etc/my.cnf
  • 20. Chef 匏ツール• Knife-soloknifeのplugin。ローカルのcookbookをリモート したり、Chefをリモートインストールする事が可能• Vagrantコマンドラインで簡単に新しいVMを作るツール。Cookbookのテスト環境を作るのに重宝します。• serverspec構築したサーバをテストするツール。Chefでちゃんと構築できたかテストするのに使えます。
  • 21. 最後に• もう少し深く勉強したい!という人は「入門ChefSolo」を買いましょう。Amazonで¥890です。• 他人のcookbookを るととても勉強になります。opscodeやgithubで公開されています。• 大抵のcookbookは既にopscodeなどで公開されていますが、少なくともそのcookbookの 動を 卆した で使いましょう。
  • 22. ご清聴ありがとうございました

×