はじまるよ!
主婦とChef
@sambaiz
自己紹介
@sambaiz
主婦ではない
最近Chef始めた
主婦とは
主婦は日々の家事に忙しいものです。特に
食事の準備は大変で、一日におよそ三回も
する必要があります。
主婦とChef
家族がたくさんいれば、それぞれ好き嫌い
やアレルギーがあったりします。そのため、
メニューは共通なのもあれば、微妙に異な
るものもあるのです。
主婦とChef
また、料理というのは毎日やっていると飽
きますし、時には失敗することもあります。
食洗機というのが家庭にも普及しています
が、料理も自動でやってくれればいいのに。
主婦とChef
そんあある日、テレビをつけると情報番組
でChefというのが紹介されていました。よ
くわからなかったのですが、どうやら自動
で料理をしてくれるようです。すぐに注文
しました。
ところで
具体的なChefの話をします
Chefとは
インフラストラクチャ自動化フレームワー
ク
Infrastructure as Code
冪等性(適当に書くとexecuteで結構崩れ
る)
OpsWorks(使ったことない)
Chef Server と Chef Solo
別にサーバを立てる必要があるChef Server
とそれぞれのサーバが実行するChef Soloが
ある
Chef Soloの場合は、Knife Soloを使って
Chef Soloを各サーバに...
実例
nginxが4321番でlistenするサーバを作ろう
インストール&初期設定
$ gem install chef
$ gem install knife-solo
$ knife configure
リポジトリの作成
$ knife solo init nds-rep
cookbookの作成
$ knife cookbook create nginx
–o site-cookbooks
recipeの編集
package "nginx" do
action :install
end
service "nginx" do
supports status: true, restart: true, reload: true
act...
templateの編集
user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_co...
nodeの編集
{
"nginx": {
"port”:4321
},
"run_list":[
"nginx”
]
}
nodeの編集
{
"nginx": {
"port”:4321
},
"run_list":[
"nginx”
]
}
user nginx;
worker_process 1;
error_log /var/log/nginx/error....
nodeの編集
{
"nginx": {
"port”:4321
},
"run_list":[
"nginx”
]
}
default以外の場合は、
“cookbook::recipe”
のように書く
外部のcookbookの利用
berkshelfを使う。Bundlerのような
もの。
$ gem install berkshelf
source 'https://api.berkshelf.com'
cookbook 'simple_ip...
外部のcookbookの利用
{
"nginx": {
"port”:4321
},
"run_list":[
"yum-epel",
"nginx"
]
}
外部のcookbookの利用
$ knife cookbook create iptables -o site-cookbooks
# Reject packets other than those explicitly allowed
sim...
外部のcookbookの利用
{
"nginx": {
"port":4321
},
"run_list":[
"simple_iptables",
"iptables",
"yum-epel",
"nginx"
]
}
テストの初期設定
$ vagrant init (boxの名前)
$ gem install serverspec
$ gem install rake
$ serverspec-init
Select OS type:
1) UN*X
2) ...
テスト
require 'spec_helper'
describe package('nginx') do
it { should be_installed }
end
describe service('nginx') do
it { sh...
テスト実行の流れ
$ vagrant up
$ vagrant ssh-config -–
host=test_server > vagrant-
ssh.conf
$ knife solo bootstrap test_server
-F v...
テスト実行の流れ
$ vagrant up
$ vagrant ssh-config -–
host=test_server > vagrant-
ssh.conf
$ knife solo bootstrap test_server
-F v...
閑話休題
主婦の話をします
主婦とChef
Chefを我が家に導入してから一回レシピを書けばあとはそ
れを使い回すことができてとても楽になりました。最近は
Chefを使うすら面倒になって執事を雇いました。動かす前
にチェックまでしてくれて大変助かっています。
よかったね!
終
Upcoming SlideShare
Loading in …5
×

主婦とChef

532 views
424 views

Published on

Chef入門
長岡IT開発者勉強会 出張版#1 (2014/7/13)

Published in: Technology, Self Improvement
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
532
On SlideShare
0
From Embeds
0
Number of Embeds
34
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

主婦とChef

  1. 1. はじまるよ!
  2. 2. 主婦とChef @sambaiz
  3. 3. 自己紹介 @sambaiz 主婦ではない 最近Chef始めた
  4. 4. 主婦とは 主婦は日々の家事に忙しいものです。特に 食事の準備は大変で、一日におよそ三回も する必要があります。
  5. 5. 主婦とChef 家族がたくさんいれば、それぞれ好き嫌い やアレルギーがあったりします。そのため、 メニューは共通なのもあれば、微妙に異な るものもあるのです。
  6. 6. 主婦とChef また、料理というのは毎日やっていると飽 きますし、時には失敗することもあります。 食洗機というのが家庭にも普及しています が、料理も自動でやってくれればいいのに。
  7. 7. 主婦とChef そんあある日、テレビをつけると情報番組 でChefというのが紹介されていました。よ くわからなかったのですが、どうやら自動 で料理をしてくれるようです。すぐに注文 しました。
  8. 8. ところで 具体的なChefの話をします
  9. 9. Chefとは インフラストラクチャ自動化フレームワー ク Infrastructure as Code 冪等性(適当に書くとexecuteで結構崩れ る)
  10. 10. OpsWorks(使ったことない)
  11. 11. Chef Server と Chef Solo 別にサーバを立てる必要があるChef Server とそれぞれのサーバが実行するChef Soloが ある Chef Soloの場合は、Knife Soloを使って Chef Soloを各サーバに送り込んで実行する のが普通 これから説明するのはChef Soloの話
  12. 12. 実例 nginxが4321番でlistenするサーバを作ろう
  13. 13. インストール&初期設定 $ gem install chef $ gem install knife-solo $ knife configure
  14. 14. リポジトリの作成 $ knife solo init nds-rep
  15. 15. cookbookの作成 $ knife cookbook create nginx –o site-cookbooks
  16. 16. recipeの編集 package "nginx" do action :install end service "nginx" do supports status: true, restart: true, reload: true action [:enable, :start] end template "/etc/nginx/nginx.conf" do source "nginx.conf.erb" owner "root" group "root" mode 0644 notifies :reload, "service[nginx]" end
  17. 17. templateの編集 user nginx; worker_processes 2; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { default_type application/octet-stream; server { listen <%= node["nginx"]["port"] %>; server_name _; location / { root /usr/share/nginx/html; index index.html index.htm; } } }
  18. 18. nodeの編集 { "nginx": { "port”:4321 }, "run_list":[ "nginx” ] }
  19. 19. nodeの編集 { "nginx": { "port”:4321 }, "run_list":[ "nginx” ] } user nginx; worker_process 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mim.types; default_type application/octet-stream; server { listen <%= node["nginx"]["port"] %> server_name centos-one; location / { root /usr/share/nginx/html; index index.html index.htm; } } }
  20. 20. nodeの編集 { "nginx": { "port”:4321 }, "run_list":[ "nginx” ] } default以外の場合は、 “cookbook::recipe” のように書く
  21. 21. 外部のcookbookの利用 berkshelfを使う。Bundlerのような もの。 $ gem install berkshelf source 'https://api.berkshelf.com' cookbook 'simple_iptables' cookbook 'yum-epel’ $ berks install
  22. 22. 外部のcookbookの利用 { "nginx": { "port”:4321 }, "run_list":[ "yum-epel", "nginx" ] }
  23. 23. 外部のcookbookの利用 $ knife cookbook create iptables -o site-cookbooks # Reject packets other than those explicitly allowed simple_iptables_policy "INPUT" do policy "DROP" end # The following rules define a "system" chain; chains # are used as a convenient way of grouping rules together, # for logical organization. # Allow all traffic on the loopback device simple_iptables_rule "loopback" do chain "system" rule "--in-interface lo" jump "ACCEPT" end # Allow any established connections to continue, even # if they would be in violation of other rules. simple_iptables_rule "established" do chain "system" rule "-m conntrack --ctstate ESTABLISHED,RELATED" jump "ACCEPT" end # Allow SSH simple_iptables_rule "ssh" do chain "system" rule "--proto tcp --dport 22" jump "ACCEPT" End simple_iptables_rule "nginx" do rule "--proto tcp --dport #{node["nginx"]["port"]}" jump "ACCEPT" end
  24. 24. 外部のcookbookの利用 { "nginx": { "port":4321 }, "run_list":[ "simple_iptables", "iptables", "yum-epel", "nginx" ] }
  25. 25. テストの初期設定 $ vagrant init (boxの名前) $ gem install serverspec $ gem install rake $ serverspec-init Select OS type: 1) UN*X 2) Windows Select number: 1 Select a backend type: 1) SSH 2) Exec (local) Select number: 1 Vagrant instance y/n: y Auto-configure Vagrant from Vagrantfile? y/n: y
  26. 26. テスト require 'spec_helper' describe package('nginx') do it { should be_installed } end describe service('nginx') do it { should be_enabled } it { should be_running } end describe port(4321) do it { should be_listening } end describe file('/etc/nginx/nginx.conf') do it { should be_file } its(:content) { should match /users+nginx;/ } end
  27. 27. テスト実行の流れ $ vagrant up $ vagrant ssh-config -– host=test_server > vagrant- ssh.conf $ knife solo bootstrap test_server -F vagrant-ssh.conf $ rspec spec $ rm -f vagrant-ssh.conf $ vagrant destroy -f
  28. 28. テスト実行の流れ $ vagrant up $ vagrant ssh-config -– host=test_server > vagrant- ssh.conf $ knife solo bootstrap test_server -F vagrant-ssh.conf $ rspec spec $ rm -f vagrant-ssh.conf $ vagrant destroy -f
  29. 29. 閑話休題 主婦の話をします
  30. 30. 主婦とChef Chefを我が家に導入してから一回レシピを書けばあとはそ れを使い回すことができてとても楽になりました。最近は Chefを使うすら面倒になって執事を雇いました。動かす前 にチェックまでしてくれて大変助かっています。
  31. 31. よかったね! 終

×