More Related Content
Similar to 明日から始める Chef 入門 #bpstudy
Similar to 明日から始める Chef 入門 #bpstudy (20)
More from Takeshi Komiya (20)
明日から始める Chef 入門 #bpstudy
- 2. 自己紹介:小宮 健
仕事
(株)タイムインターメディア所属
テクニカルオフィサ(技術責任者)として活動
参加コミュニティ
Sphinx-users.jp
Python mini hack-a-thon
Chef 歴 1年ぐらい
Twitter: @tk0miya
- 9. 定義ベース
システムのあるべき姿を定義する
nginx が入っている
nginx は /var/www/html を公開している
冪等性(べきとうせい)を持つ
何度実行しても同じ結果になる
例:
package "nginx" do
action :install
end
file "/etc/nginx/sites-available/default" do
source “nginx-default” # 用意しておいた設定をコピーす
る
end
- 10. 定義ベース vs 手順ベース
手順ベース
コマンドベースなのでわかりやすい
何度か実行することを想定していない(ものも
ある)
現在の状態を意識する必要がある
手作業とまぜやすい
定義ベース
定義の仕方を覚える必要がある
何度実行してもよい
状態は意識しなくてよい (大抵は)
定義に基づいて手作業の結果が消えたりする
- 13. 環境構築ツールの比較
名前 言語 種別 インストー
ル
共有
リソース
Puppet Ruby 定義ベー
ス
○ ○
Chef Ruby 定義ベー
ス
○ ○
Salt Python 定義ベー
ス
○ ×
Ansible Python 定義ベー
ス
× ×
Cinnamon Perl 手順ベー
ス
× ×
Capistrano Ruby 手順ベー × △
- 16. Chef の特徴
定義ベースの構成管理ツール
Cookbook という定義を持つ
冪等性を持っている
各ホストへ chef のインストールが必要
共有リソースをもっている
Opscode Community
皆で Cookbook を共有している
github でも公開されている
- 18. Chef の種類
Chef-Server / Chef-Client
大規模用
ホスト間の連携
設定の自動反映
Chef-solo
単体で稼働する (実行ホストの設定をする)
手動で実行する
Hosted Chef
ASP版 Chef-Server
- 19. どの Chef を使えばいいの?
Chef-solo
Chef の概念を把握したい人
管理対象のホストが20台以下の人
Chef-Server / Hosted Chef
大量のホストを管理してる人
今回は chef-solo をベースに説明します
- 21. Chef のインストール
Chef-Server
Opscode.com から rpm/deb をダウンロード
Chef-Client / Chef-solo
以下のコマンドを実行
curl -L https://www.opscode.com/chef/install.sh | sudo
bash
/opt/chef 以下にファイルがインストールされ
る
一部、/usr/bin, /etc/chef にファイルが入る
- 23. community site で cookbook を探す
http://community.opscode.com/ にアクセ
ス
検索ボックスにキーワードを指定してみる
例: ntp
ダウンロードした tarball を展開しておく
- 24. community cookbooks を使ってみる
chef-solo 実行用のファイルを作る
solo.rb
chef-solo の設定ファイル。ディレクトリ等を
設定
solo.json
run_list: 実行する cookbooks を列挙
attributes: 設定情報
設定できる値は cookbook の README 参照のこと
ntp の設定情報
- 25. community cookbooks を使ってみる
solo.rb
file_cache_path "/home/app/chef-solo/cache"
cookbook_path "/home/app/chef-solo/cookbooks”
solo.json
{
"ntp" : {
"servers" : ["ntp.nict.jp”]
},
"run_list" : ["recipe[ntp]”]
}
- 28. Cookbook の作り方 (簡易版)
knife コマンドでひな形を作る
$ knife cookbook create my_cookbook -o
cookbooks
my_cookbook/recipes/default.rb を書き換
える
この資料では代表的なものを紹介します
詳細はドキュメントや他人のコードを参考の
こと
- 29. Cookbook の作り方 (簡易版)
パッケージを入れたい場合
package "ntp”
サービスを自動起動にする
service "ntp" do
action [:enable, :start]
end
- 30. Cookbook の作り方 (簡易版)
ファイルを書き換える場合
cookbook_file "/etc/ntp.conf" do
# files/default/ntp.conf がコピーされる
source "ntp.conf"
# 書き換えたら再起動
notifies :restart, "service[ntp]"
end
- 31. Cookbook の作り方 (簡易版)
その他 (shell script 実行)
script "some special process" do
interpreter "bash"
code <<-EOH
curl -O http://.../ntp-4.2.6p5.tar.gz
tar xzf ntp-4.2.6p5.tar.gz
cd ntp-4.2.6p5
./configure; make; make install
EOH
# インストールされていたら実行しない
not_if { ::File.exists?('/usr/local/sbin/ntpd') }
end
- 33. 利用事例の紹介
Rails アプリ環境を作る
ネットワーク設定
iptables, SELinux 無効化, timezone, NTP
OS 設定
Yum の設定 (EPEL, repoforge)
logrotate, rsyslog
Nginx, postfix
開発言語/ツール
Python (Ruby は capistrano でインストール)
Vim, screen, git, mercurial
Jenkins + TeXLive
- 34. chef-solo 周辺ツール紹介
vagrant
仮想環境の CLI 操作ツール
VirtualBox, EC2, VMWare Fusion などに対応
ヴェイグラントと読むらしい
chef の試行錯誤に VM を使い捨てて実験する
librarian-chef / berkshelf
Community/githubからcookbooksをダウン
ロード
cookbooks 同士の依存関係も解決する
bundler, requirements.txt のような位置づけ
- 36. chef に関する情報源
公式ドキュメント (docs.opscode.com)
伊藤直也さんの電子書籍
用語などの基礎が押さえられます
#opschef, #opschef_ja
各種 chef 勉強会
(おまけ) id:tk0miya のブログ
- 37. 待ち構えている罠たち
community cookbooks の不備・不足
動かないものがある
似たようなものがたくさんある
users, generic-users, users_solo, user, accounts
長時間ハマる前に見切りをつけて、新しく書
く
できればパッチを投げましょう :-)
全員が chef を覚える必要がある
手作業でいじったものは失われてしまう