Weitere ähnliche Inhalte Ähnlich wie Itamae-Serverspec入門 (20) Itamae-Serverspec入門2. Agenda
Serverspecの部
◦ serverspecとは
◦ serverspecの仕組み
serverspec-init
Rakefileと
spec_helper.rb
テストの実行
◦ テストコード
簡単なテストコード
リソースタイプ
describe
Itamaeの部
◦ Itamaeとは
◦ レシピ
簡単なレシピ
リソースタイプ
よく使うrubyの文法
◦ Itamaeの実行
デモ
11. レシピ
executeリソース
◦ 任意のコマンド実行
execute "touch /path/to/file" do
not_if "test -e /path/to/file"
end
※run_commandメソッド
◦ 任意のコマンドを実行。その結果をレシ
ピ内の分岐条件などに使える
result = run_command("test -e /path/to/file", error: false)
if result.exit_status != 0
execute "touch /path/to/file"
end
12. レシピ
よく使うrubyの文法
◦ if文
条件分岐に利用。
アップデートがあったときのみ、
「yum update -y」を叩いたりとか
cmd = "sudo yum update --assumeno | grep "No packages""
update_flag = run_command(cmd, error: false).exit_status
if update_flag != 0
execute "yum update -y"
end
13. レシピ
よく使うrubyの文法
◦ eachメソッド
繰り返しに利用
複数のパッケージをインストールするときに
packages = ["openstack-nova-api", "openstack-nova-conductor",
"openstack-nova-console", "openstack-nova-novncproxy",
"openstack-nova-scheduler"]
packages.each do |pkg|
package pkg do
action :install
end
end
14. レシピ
よく使うrubyの文法
◦ ヒアドキュメント
長い文字列を定義するときに便利
長いコマンドを見やすく定義できる
cmd = <<-"EOS"
cd /etc/swift &&
swift-ring-builder account.builder
add --region 1 --zone 1 --ip 192.168.0.10 --port 6002
--device sdb --weight 100
EOS
execute cmd
22. テストコード
簡単なテストコード
◦ 以下を確認
「httpd」パッケージがインストールされてい
ること
require 'spec_helper'
describe ("check httpd is installed") do
describe package("httpd") do
it { should be_installed }
end
end
27. テストコード
describe
◦ テストのグループを作るのに使う
◦ 実際のテストはdescribeブロックの中の
it、its文
describe ("check httpd service is enabled and running")
describe service("httpd") do
it { should be_running }
it { should be_enabled }
end
end
Hinweis der Redaktion 全体を通して伝えたいこと
・Itamaeの使い方の基本
・Serverspecの使い方の基本 Itamaeの部: 25分
Serverspecの部: 25分
デモ: 10分
質疑応答: 10分 (時間が許せば) 伝えたいこと
・Itamaeは構成管理ツール 伝えたいこと
・Itamaeのメリットは、エージェントレスかつ純粋なスクリプト言語であるrubyを使えること 伝えたいこと
・レシピの外観 伝えたいこと
・リソースタイプとは設定対象のこと 伝えたいこと
・packageリソースとは何か
・serviceリソースとは何か 伝えたいこと
・fileリソースとは何か 伝えたいこと
・executeリソースとは何か 伝えたいこと
・if文とは何か 伝えたいこと
・eachメソッドとはなにか 伝えたいこと
・ヒアドキュメントとは何か 伝えたいこと
・Itamaeをリモートホストに対して実行する方法 伝えたいこと
・Serverspecはインフラの自動テストツールである 伝えたいこと
・serverspec-initを使うと、serverspecの実行に必要なディレクトリ構造を作ってくれる。 伝えたいこと
・Serverspecの実行の実態はrakeのタスク実行 伝えたいこと
・spec_helper.rbはテストコードの実装を助けるモジュール
・Rakefileとspec_helperのカスタマイズでServerspecの挙動を変えることができる 伝えたいこと
・Serverspecによるテストの実行方法 伝えたいこと
・テストコードの外観 伝えたいこと
・リソースタイプとはテスト対象のこと 伝えたいこと
・packageリソースとは何か 伝えたいこと
・serviceリソースとは何か 伝えたいこと
・fileリソースとは何か 伝えたいこと
・describeはテストのグループ化に使う 伝えたいこと
・デモではHTTPSサイトの構築を行う 伝えたいこと
・デモで自動化する内容
・これ以外のOSのインストール、接続NICの設定は自動化されていないこと