SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Itamae – Serverspec入門
http://serverspec.org
http://itamae.kitchen
Agenda
 Serverspecの部
◦ serverspecとは
◦ serverspecの仕組み
 serverspec-init
 Rakefileと
spec_helper.rb
 テストの実行
◦ テストコード
 簡単なテストコード
 リソースタイプ
 describe
 Itamaeの部
◦ Itamaeとは
◦ レシピ
 簡単なレシピ
 リソースタイプ
 よく使うrubyの文法
◦ Itamaeの実行
 デモ
自己紹介
 名前
◦ bbrfkr(ビビリフクロウ)
 所属
◦ TIS株式会社 IT基盤技術推進部所属
 ミッション
◦ インフラの構築・運用保守の自動化推進
◦ Ansible、Serverspecを用いた、自動化フ
レームワークの開発
Itamaeの部
http://itamae.kitchen
Itamaeとは
 構成管理ツールの一つ
 サーバの「あるべき状態」を記述し、
その状態に収束させる
 競合製品にAnsible、Chefなど
 クックパッド社の荒井良太さんを中心
に開発
http://itamae.kitchen
Itamaeとは
 他の構成管理ツールとの比較
Itamae Ansible Chef
エージェントの
必要性
不要 不要 必要
レシピ/
プレイブックの
記述言語
Ruby
(DSL)
YAML Ruby
(DSL)
既存モジュール
/リソースの数
少ない
(15個)
非常に多い
(806個)
多い
(66個)
レシピ
 簡単なレシピ
◦ dockerパッケージをインストール
◦ dockerサービスの起動、自動起動設定
package "docker" do
action :install
end
service "docker" do
action [:enable, :start]
end
レシピ
 リソースタイプ
◦ Itamaeが用意している、設定対象および
その設定モジュール群
package "docker" do
action :install
end
「package」がリソースタイプ
レシピ
 packageリソース
◦ パッケージのインストール、アンインス
トール
package "docker" do
action :install
end
 serviceリソース
◦ サービスの起動/停止、自動起動設定
service "docker" do
action [:enable, :start]
end
レシピ
 fileリソース
◦ ファイルの配置/削除、権限/所有者設定
◦ ファイルの内容変更
file "/foo" do
action :edit
block do |content|
content.gsub!("world", "Itamae")
end
end
レシピ
 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
レシピ
 よく使う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
レシピ
 よく使う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
レシピ
 よく使う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
Itamaeの実行
 「itamae ssh」コマンドで実行
◦ -h:対象ホストを指定
◦ -u:接続ユーザを指定
◦ -p:接続ポートを指定
$ itamae ssh -h 192.168.0.10 -u root -p 22 cookbook.rb
Serverspecの部
http://serverspec.org
Serverspecとは
 インフラの自動テストツール
 対象サーバにSSHで接続し、テスト用
コマンドを叩く
 サーバの内部状態を確認できる
◦ ホワイトボックステスト
 エージェントレス
 開発者は「宮下 剛輔」さん
http://serverspec.org
Serverspecの仕組み
 serverspec-init
◦ serverspecの実行に必要な一式のディレ
クトリ構造を作ってくれるコマンド
◦ 実行すると以下のような構造ができる
.
|-- Rakefile
`-- spec
|-- 192.168.0.1
| `-- sample_spec.rb
`-- spec_helper.rb
(rake)タスクを定義するファイル
テストコードの実装を助けるモ
ジュール
httpdのインストール状況を試験す
るサンプルコード
Serverspecの仕組み
 Rakefile
◦ rakeタスクを定義するファイル
◦ serverspecによるテスト実行の実態は、
rakeタスクの実行
◦ デフォルトでは、「spec/<ホスト名>」
ディレクトリ内のテストコードを<ホスト
名>に対して実行するようにrakeタスクが
定義されている
Serverspecの仕組み
 spec_helper.rb
◦ テストコードの実装を助けるモジュール
◦ テストコードが奇麗になるように、必要
なモジュールを先にロードする
◦ 対象サーバへの接続方法もこのファイル
で定義
◆Check!!◆
Rakefileとspec_helper.rbのカスタマイズで
Serverspecの挙動は如何様にも変えられる
Serverspecの仕組み
 テストの実行
◦ テストの実行はRakefileがある場所で以下
のコマンドを実行するだけ
$ rake spec
テストコード
 簡単なテストコード
◦ 以下を確認
 「httpd」パッケージがインストールされてい
ること
require 'spec_helper'
describe ("check httpd is installed") do
describe package("httpd") do
it { should be_installed }
end
end
テストコード
 リソースタイプ
◦ Serverspecが用意した、テスト対象、
およびテストモジュール群
describe package("httpd") do
it { should be_installed }
end
「package」がリソースタイプ
テストコード
 packageリソース
◦ パッケージに対するテストモジュールを
持っている
 インストール確認
 インストールバージョン確認
describe package("httpd") do
it { should be_installed }
end
テストコード
 serviceリソース
◦ サービスに対するテストモジュールを
持っている
 起動確認
 自動起動設定確認
describe service("httpd") do
it { should be_enabled }
end
テストコード
 fileリソース
◦ ファイルやディレクトリに対するテスト
モジュールを持っている
 存在確認
 ファイルの内容確認
 権限確認
 所有者確認
describe file("/var/www/html/index.html") do
it { should exist }
end
テストコード
 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
デモ
http://serverspec.org
http://itamae.kitchen
コントロールマシン Webサーバ
デモ内容
テーマ:HTTPSサイトの構築
• 環境
設定
・
テスト
http://serverspec.org
http://itamae.kitchen
Apache
mod_ssl
デモ内容
テーマ:HTTPSサイトの構築
[Itamae]
•パッケージのインストール
•httpd
•mod_ssl
•秘密鍵の作成
•自己署名証明書の作成
•設定ファイルの修正
•index.htmlの配置
•サービスの起動
•サービスの自動起動設定
[Serverspec]
•インストールチェック
•httpd
•mod_ssl
•秘密鍵の存在確認
•自己署名証明書の存在確認
•設定ファイルの内容確認
•index.htmlの存在確認
•サービスの起動確認
•サービスの自動起動設定確認
Itamae/Serverspecで自動化するところ
Itamae-Serverspec入門

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Goss入門
Goss入門Goss入門
Goss入門
 
Molecule入門
Molecule入門Molecule入門
Molecule入門
 
20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager20200212 AWS Black Belt Online Seminar AWS Systems Manager
20200212 AWS Black Belt Online Seminar AWS Systems Manager
 
動的コンテンツをオリジンとしたCloudFrontを構築してみた
動的コンテンツをオリジンとしたCloudFrontを構築してみた動的コンテンツをオリジンとしたCloudFrontを構築してみた
動的コンテンツをオリジンとしたCloudFrontを構築してみた
 
サーバーワークスのAWS構築自動化の仕組み
サーバーワークスのAWS構築自動化の仕組みサーバーワークスのAWS構築自動化の仕組み
サーバーワークスのAWS構築自動化の仕組み
 
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
 
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
 
AWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon KinesisAWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon Kinesis
 
AWS初心者向けWebinar AWS上でのDDoS対策
AWS初心者向けWebinar AWS上でのDDoS対策AWS初心者向けWebinar AWS上でのDDoS対策
AWS初心者向けWebinar AWS上でのDDoS対策
 
ストリーミングのTLS(SSL)化
ストリーミングのTLS(SSL)化ストリーミングのTLS(SSL)化
ストリーミングのTLS(SSL)化
 
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/FallZabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
 
nginx入門
nginx入門nginx入門
nginx入門
 
AWS エンジニア育成における効果的なトレーニング活用のすすめ
AWS エンジニア育成における効果的なトレーニング活用のすすめAWS エンジニア育成における効果的なトレーニング活用のすすめ
AWS エンジニア育成における効果的なトレーニング活用のすすめ
 
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
 
VPC Reachability Analyzer 使って人生が変わった話
VPC Reachability Analyzer 使って人生が変わった話VPC Reachability Analyzer 使って人生が変わった話
VPC Reachability Analyzer 使って人生が変わった話
 
Behind the Scenes: Exploring the AWS Global Network (NET305) - AWS re:Invent ...
Behind the Scenes: Exploring the AWS Global Network (NET305) - AWS re:Invent ...Behind the Scenes: Exploring the AWS Global Network (NET305) - AWS re:Invent ...
Behind the Scenes: Exploring the AWS Global Network (NET305) - AWS re:Invent ...
 
AWSの共有責任モデル(shared responsibility model)
AWSの共有責任モデル(shared responsibility model)AWSの共有責任モデル(shared responsibility model)
AWSの共有責任モデル(shared responsibility model)
 
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container ServiceAWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
 
EthernetやCPUなどの話
EthernetやCPUなどの話EthernetやCPUなどの話
EthernetやCPUなどの話
 
HTTP/2, QUIC入門
HTTP/2, QUIC入門HTTP/2, QUIC入門
HTTP/2, QUIC入門
 

Ähnlich wie Itamae-Serverspec入門

Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
Naotaka Jay HOTTA
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0
NIFTY Cloud
 

Ähnlich wie Itamae-Serverspec入門 (20)

テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
 
serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例serverspecを使用したサーバ設定テストの実例
serverspecを使用したサーバ設定テストの実例
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
AWS運用自動化への第一歩 
AWS運用自動化への第一歩 AWS運用自動化への第一歩 
AWS運用自動化への第一歩 
 
Apache Module
Apache ModuleApache Module
Apache Module
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk
 
S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成S16 Microsoft Azure 上での Chef 環境の構成
S16 Microsoft Azure 上での Chef 環境の構成
 
ポリドックにServerspecを教えよう!
ポリドックにServerspecを教えよう!ポリドックにServerspecを教えよう!
ポリドックにServerspecを教えよう!
 
Openstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verificationOpenstack SPICE console (icehouse) verification
Openstack SPICE console (icehouse) verification
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 
Serverspec at Testing Framework Meeting
Serverspec at Testing Framework MeetingServerspec at Testing Framework Meeting
Serverspec at Testing Framework Meeting
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
 
130412 kayac-cinnamon
130412 kayac-cinnamon130412 kayac-cinnamon
130412 kayac-cinnamon
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0
 
Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)
 
Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+Chef SoloからItamaeに完全移行した話+
Chef SoloからItamaeに完全移行した話+
 

Itamae-Serverspec入門

Hinweis der Redaktion

  1. 全体を通して伝えたいこと ・Itamaeの使い方の基本 ・Serverspecの使い方の基本
  2. Itamaeの部: 25分 Serverspecの部: 25分 デモ: 10分 質疑応答: 10分 (時間が許せば)
  3. 伝えたいこと ・Itamaeは構成管理ツール
  4. 伝えたいこと ・Itamaeのメリットは、エージェントレスかつ純粋なスクリプト言語であるrubyを使えること
  5. 伝えたいこと ・レシピの外観
  6. 伝えたいこと ・リソースタイプとは設定対象のこと
  7. 伝えたいこと ・packageリソースとは何か ・serviceリソースとは何か
  8. 伝えたいこと ・fileリソースとは何か
  9. 伝えたいこと ・executeリソースとは何か
  10. 伝えたいこと ・if文とは何か
  11. 伝えたいこと ・eachメソッドとはなにか
  12. 伝えたいこと ・ヒアドキュメントとは何か
  13. 伝えたいこと ・Itamaeをリモートホストに対して実行する方法
  14. 伝えたいこと ・Serverspecはインフラの自動テストツールである
  15. 伝えたいこと ・serverspec-initを使うと、serverspecの実行に必要なディレクトリ構造を作ってくれる。
  16. 伝えたいこと ・Serverspecの実行の実態はrakeのタスク実行
  17. 伝えたいこと ・spec_helper.rbはテストコードの実装を助けるモジュール ・Rakefileとspec_helperのカスタマイズでServerspecの挙動を変えることができる
  18. 伝えたいこと ・Serverspecによるテストの実行方法
  19. 伝えたいこと ・テストコードの外観
  20. 伝えたいこと ・リソースタイプとはテスト対象のこと
  21. 伝えたいこと ・packageリソースとは何か
  22. 伝えたいこと ・serviceリソースとは何か
  23. 伝えたいこと ・fileリソースとは何か
  24. 伝えたいこと ・describeはテストのグループ化に使う
  25. 伝えたいこと ・デモではHTTPSサイトの構築を行う
  26. 伝えたいこと ・デモで自動化する内容 ・これ以外のOSのインストール、接続NICの設定は自動化されていないこと