OPSCODE CHEF 基基基 Japan Chef User Group Naotaka Jay Hotta CloudStack Users Osaka 2012
OPSCODE CHEF基本編Japan Chef User Group
Naotaka Jay Hotta
CloudStack Users Osaka 2012
Japan Chef User Group (JCUG)
設立総会: 2012 年8月 1 日
本日の担当者: Naotaka Jay Hotta (@jhotta)
目 的: Opscode Chef の利用を通して
1) IT インフラの高度な管理とシステムの運用の実現を目指す。
2) CI, CD 等に実現のためのディプロイメントツールとして高度な知識の知識が、一般化するための土壌作りを手伝う。
方 法:
3) ML : chef-ja google group で検索してください。
4) HP : Japan chef user Group facebook で検索してください。
運営協力者募集中!
本日の時間配分15 分 Chef の基本( 対象者: Chef 未経験者 )
1 分 質疑応答
http://www.flickr.com/photos/32299138@N08/5795005774/
Infrastructure
as
a Code
世界中のコンピュートインスタンスの
0.1%を使った HPCで10時間で計算する
Business のAgilityを上げる
CloudStack
Loosely tied management tools enStatus, Scalr, Opscode chef, Sensu,
AWSIDCFKDDINTTNiftyetc..
Publiccloud servicePhysical Hardware
Hypervisor Software-Defined Network
ObjectStorage
File systems
Storage
自動化を含めた、Libや APPs等のパーツの、細かい要件( version)の定義で再現性の実現
Chef の基本
公式リリース :
Jan 15th, 2009
本拠地
“Chef is like a little system admin robot... you tell it how you want your system configured and it will do all the dirty work.”- Early Chef Adopterサーバ管理の小人
くん
DevOps業界では、必需品の第3世代Sever Configuration …
Puppet, cfengineとの違い?
Those Who are not Using!
• Ruby Internal DSL
• 便利な knife command
• Apache License 2.0 OSS
• Communityの活力
• 380+Cookbooks
• Plug-Ins 多数
• Source Code Documentation
• FAQ
• Training16,000 Active Users
• 600+ Individual and 120+ Corporate Contributors
• Global Partner Network
Opscode Chef community
http://community.opscode.com/
日本語ドキュメントが劇貧
全然知らな〜い
初期の頃から、 recipeを公開していた
http://dtosolutions.com/
http://dtosolutions.com/
Chef-Solo
OSS Chef-server
Private Chef-server
Hosted Chef-server
+ Chef Client
-c, --config CONFIG-j, --json-attributes JSON_ATTRIBS-r, --recipe-url RECIPE_URL
* run_listは、 json-attributesの中で設定する。
# chef-solo -c ~/solo.rb \
-j ~/node.json \
-r http://www.example.com/chef-solo.tar.gz
それぞれの NODEの Roleに合わせた、設定内容のリストが呼び出される。
name "webserver"description "The base role for systems that serve HTTP traffic"run_list "recipe[apache2]", "recipe[apache2::mod_ssl]", "role[monitor]”default_attributes "apache2" => { "listen_ports" => [ "80", "443" ] }override_attributes "apache2" => { "max_children" => "50" }
Repository Description Maintainer
https://github.com/opscode-cookbooks
Cookbooks created by Opscode Opscode
https://github.com/37signals/37s_cookbooks
37 Signals Repository 37 Signals
https://github.com/engineyard/ey-cloud-recipes
EY Cloud Recipes Engine Yard
https://github.com/cookbooks Community Curated Cookbooks “Cookbooks” Organization
コミュニティーレシピーのリポジトリー
knife cloudstack
Knife: 強力な CLI(コマンドラインインターフェース )
Subcommands built into Knife:• Bootstrap• Client• Cloud Plugins• Configure• Cookbook• Cookbook Site• Data Bag• Environment• Exec• Node• Recipe• Role• Search• SSH• Status• Tag
Knife Plugins
設置は簡単、ディレクトリの自由度が高い
• ~/.chef/plugins/knife/
• Cookbookの .chef/plugins/knife/
• Ruby Gem がある chef/knife
有益な Community Plugins
http://wiki.opscode.com/display/chef/Community+Plugins
knife.rb file:
knife[:cloudstack_url] = "http://yourcloudstackserver.com:8080/client/apiknife[:cloudstack_api_key] = "Your CloudStack API Key"knife[:cloudstack_secret_key] = "Your CloudStack Secret Key"
** CS COMMANDS **
knife cs hostsknife cs network list (options)knife cs server create [SERVER_NAME] (options)knife cs server delete SERVER_NAME [SERVER_NAME ...] (options)knife cs server list (options)knife cs server reboot SERVER_NAME [SERVER_NAME ...] (options)knife cs server start SERVER_NAME [SERVER_NAME ...] (options)knife cs server stop SERVER_NAME [SERVER_NAME ...] (options)knife cs service list (options)knife cs stack create JSON_FILE (options)knife cs stack delete JSON_FILE (options)knife cs template list (options)knife cs zone list (options)
knife.rbで、Hadoop cluster 構成を指定すると!
"name": "hadoop_cluster_a","description": "A small hadoop cluster with hbase","version": "1.0","environment": "production","servers": [ { "name": "zookeeper-a, zookeeper-b, zookeeper-c", "description": "Zookeeper nodes", "template": "rhel-5.6-base", "service": "small", "port_rules": "2181", "run_list": "role[cluster_a], role[zookeeper_server]", "actions": [ { "knife_ssh": ["role:zookeeper_server", "sudo chef-client"] } ] }, { "name": "hadoop-master", "description": "Hadoop master node", "template": "rhel-5.6-base", "service": "large", "networks": "app-net, storage-net", "port_rules": "50070, 50030, 60010", "run_list": "role[cluster_a], role[hadoop_master], role[hbase_master]" }, { "name": "hadoop-worker-a hadoop-worker-b hadoop-worker-c", "description": "Hadoop worker nodes", "template": "rhel-5.6-base", "service": "medium", "port_rules": "50075, 50060, 60030", "run_list": "role[cluster_a], role[hadoop_worker], role[hbase_regionserver]", "actions": [ { "knife_ssh": ["role:hadoop_master", "sudo chef-client"] }, { "http_request": "http://${hadoop-master}:50070/index.jsp" } ] }
Opscodeと旧 cloud.comより、CloudStack 3.0に対応していると、ニュースリリ -スされていますが、CloudStack User会の事務局長 A氏の個人検証環境の強制占拠によって未だ検証できず!