社内Chef勉強会@uchiunyo
本日の目標• Chefで何が 勵るのか 卆する• Chefを何となく動かせるようになる• Chefの動きがそれとなくわかる
よくある困りごと• 環境構築しなきゃ・・・⇒ 構築する時間が無い⇒ 手順書どおりに構築できない⇒ そもそも手順書が無い⇒ オペミスこわい
環境構築を自動化しよう!• シェル化して自動化がベターですが・・・• 最近自動化ツールたくさんあります必要Ruby構成Puppet必要Ruby構成Chef勘要PythonデプロイFabric勘要RubyデプロイCapistranoクライアントイ...
Chefの特徴• 構成 ツールである・このサーバはこういう構成であると定義する・冪等性を持つ• Rubyで記述する• 用語に特徴がある• 対象ホストへのインストールが必要• Communityやgithubで多数のcookbookが公開されている
Chef基本用語• chef-server⇒ Server/Client環境のChef。大規模環境向け• chef-solo⇒ 単 のChef。小規模ならこれで十分。• Knife⇒ chefを操作するためのCLIツール• Cookbook⇒ ...
早速動かしてみようhttps://github.com/uchiunyo/uchistudy/tree/master/201305chefstudy“Chefをインストールしてみよう” “ してみよう”までやってみましょう。
Chef-soloのChef-soloは以下のように します$ sudo chef-solo –c solo.rb –j chef.jsonsolo.rb ・・・ chef-soloの設定ファイルchef.json ・・・ するレシ や匂数を指...
chef.json対象ホストで するレシ や変数を設定します。JSON形式で書きます。{“helloworld":{“name”:”uchi”},"run_list":[“helloworld”]}変数の設定。node[“helloworld”...
Cookbook構成[cookbooks]└ [helloworld]├ [recipes] 卣の定義本├ [resources]├ [templates] 設定ファイルのテンプレート├ [files] に必要なファイル├ [attribute...
ChefでMySQLをインストールしようhttps://github.com/uchiunyo/uchistudy/tree/master/201305chefstudy“Chefでmysqlを入れてみよう“をやりましょう。
Recipeの書き方• Resourceを使いcookbookの 卣を定義する・ ResourceとはChefのDSL・ Resourceに対してAttributeを定義する・ Rubyのコードが匏用 勵る・ Recipeに書いた事が から順に...
Recipeの書き方template "my.cnf" dopath "/etc/my.cnf"source "my.cnf.erb"owner "root"group "root"mode 0644notifies :restart, ser...
Recipeの書き方• Resourceいろいろあります・ package パッケージをインストール・ Template テンプレートを配置する・ File ファイルを操作する・ Directory ディレクトリを操作する・ User ユーザー...
Attributes• Attributesは変数のデフォルト値を設定するファイルを格納するディレクトリです・ RecipeのAttributeとは“別モノ”・ 変数はRecipeやTemplateから匏用できる
Attributedefault[“mysql”][“pkg_name”] = “mysql-server”package node[“mysql”][“pkg_name”] doaction :installendcookbook/mysql...
Templateを使おう• Chefから配布する設定ファイルはTemplateを使用する事で動的に生成が可能です・ TemplateはeRubyで書く<%= … %>と囲う事で、設定ファイルにRubyのコードが埋め込める・ 作成したTempla...
[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlcharacter-set-server = utf8skip-character-set-clie...
[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysqlcharacter-set-server = utf8skip-character-set-clie...
Chef 匏ツール• Knife-soloknifeのplugin。ローカルのcookbookをリモート したり、Chefをリモートインストールする事が可能• Vagrantコマンドラインで簡単に新しいVMを作るツール。Cookbookのテスト...
最後に• もう少し深く勉強したい!という人は「入門ChefSolo」を買いましょう。Amazonで¥890です。• 他人のcookbookを るととても勉強になります。opscodeやgithubで公開されています。• 大抵のcookbookは...
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

社内Chef勉強会

1,883 views

Published on

社内Chef勉強会

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

×