Mais conteúdo relacionado
Semelhante a テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ- (20)
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
- 2. TIS株式会社 戦略技術センター所属
自己紹介
秋穂 賢(あきほ すぐる)名前
Zabbix, OTRS, JobScheduler, Chefなど仕事
http://www.atmarkit.co.jp/ait/articles/1310/17/news006.html http://codezine.jp/article/detail/7767
- 13. What is Chef ?
● インフラ環境の構築や構成管理の自動化ツール
○ OS環境の設定・パッケージインストール・ミドルウェア設定
● Rubyの拡張なので、Rubyがそのまま使える
● 何度実行しても同じ状態に収束する(冪等性)
● インフラの定義がコード化(形式知化)される
Infrastructure as Code
step 1
構築自動化
昨日(7/14)Chefが1000万ダウンロード
を達成したようです!
- 14. Chef 3分クッキング ~Apache編~
CentOS6にApache2をインストール
# curl -L https://www.opscode.com/chef/install.sh | bash
# knife cookbook create apache -o /var/chef/cookbooks
# vim /var/chef/cookbooks/apache/recipes/default.rb
package 'httpd'
# chef-solo -o apache
〜 chefのログ 〜
# rpm -qa | grep httpd
httpd-tools-2.2.15-30.el6.centos.x86_64
httpd-2.2.15-30.el6.centos.x86_64
step 1
構築自動化
- 18. 構築は自動化したけど...
# curl -L https://www.opscode.com/chef/install.sh | bash
# knife cookbook create apache -o /var/chef/cookbooks
# vim /var/chef/cookbooks/apache/recipes/default.rb
package 'httpd'
# chef-solo -o apache
〜 chefのログ 〜
# rpm -qa | grep httpd
httpd-tools-2.2.15-30.el6.centos.x86_64
httpd-2.2.15-30.el6.centos.x86_64
テストは手動...
step 2
テスト自動化
- 20. What is serverspec ?
● 2013年3月末にリリース
● RSpecでサーバの状態をテスト
● 本質はサーバの状態を記述したコードをテスト
○ PuppetマニフェストやChefレシピなど
● インフラコードの開発やリファクタリングを効率よ
く行うためのツール
step 2
テスト自動化
https://speakerdeck.com/mizzy/serverspec-at-jtf2014 より抜粋
- 21. serverspecの例
Apacheがインストールされてて、80番でリッスンしてるか
describe package('httpd') do
it { should be_installed }
end
describe port(80) do
it { should be_listening }
end
起動はserverspec-init と rake spec
内部的には、sshで対象サーバにログインして
rpm -q httpd
を打ってパッケージがインストールされているか
内部的には、sshで対象サーバにログインして
netstat -tunl | grep -- :80
を打って80ポートがリッスンしているか
step 2
テスト自動化
http://tech-sketch.jp/2014/04/serverspec.html
- 22. What is serverspec ?
● 2013年3月末にリリース
● RSpecでサーバの状態をテスト
● 本質はサーバの状態を記述したコードをテスト
○ PuppetマニフェストやChefレシピなど
● インフラコードの開発やリファクタリングを効率よ
く行うためのツール
step 2
テスト自動化
https://speakerdeck.com/mizzy/serverspec-at-jtf2014 より抜粋
- 28. Test-Kitchenの使い方
● gem install test-kitchen (※事前にRubyをインストール)
● kitchen init で初期化(※chef-repo内で実行)
○ .kitchen.ymlとtestディレクトリが生成される
● .kitchen.ymlの中身
○ driver: dockerやvagrant, ec2など
○ provisioner: chef-solo, chef-zeroなど
○ platforms: centos, ubuntuなど
○ suites: chef実行時のパラメータ(run_listやattributeなど)を設
定
● test/integration/serverspec/にテストコードを記述
step 3
インフラTDD
- 29. Test-Kitchenの使い方
● kitchen create name でdriverで指定した先にインス
タンスを生成
● kitchen converge name でchef-soloなどを実行
● kitchen verify name でserverspecを実行
● kitchen destroy name でインスタンスを破棄
● kitchen test name でインスタンスの生成〜プロビ
ジョニング・テスト実行、インスタンスの破棄までひと
通り実行
● kitchen login name で困った時にはログイン可能
step 3
インフラTDD