4. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
agenda
Solaris でもインフラ CI し
たい
1.
Solaris Zone2.
Puppet3.
Serverspec4.
Solaris で CI5.
6. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
インフラ CI
Serverspec がリリースされて
からインフラの CI が話題
✓
Puppet や Chef などの構成管
理ソフトウェアでサーバを構築
し、Serverspec でテスト
✓
CI のための環境を用意する方
法として Vagrant や Docker
がよく使われている
✓
7. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Solaris で CI
Vagrant で Solaris の VM を
用意することはできるが、
Solaris だけで閉じたい
✓
Solaris では Docker が使えな
い
Solaris でも Docker に対応すると
いう話はある
https://www.oracle.com/corporate/
pressrelease/docker-gets-in-the-
zone-with-oracle-solaris-073015.html
✓
✓
✓
8. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Solaris で CI
Solaris には Zone があるんだ
し、Zone を使いたい
✓
Vagrant や Docker のような感
じで、Zone を扱う方法が必要
✓
9. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
とりあえずの方法
Docker や Vagrant 的なものを
使わない
✓
構築済みの Zone に対して、
Puppet などを実行し
Serverspec でテスト
新規の環境に対する実行をテストできない
手で巻き戻しが必要✓
✓
✓
10. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
まとめ
Zone を使いたい✓
CI のたびに、新規の環境を用
意したい
✓
Vagrant や Docker のような感
じで Zone を扱うしくみが欲し
い
✓
13. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Zone の概要
Solaris 10 以降(2005 年〜)✓
同じカーネルで複数のシステム
を動作
各種リソースの分離・制限✓
✓
詳しくは宮崎さんの OSC 2015 Tokyo/
Spring の資料を参照
http://www.slideshare.net/
satorumiyazaki/solaris-osc-
tokyo2015springzone
✓
✓
14. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Zone の種類(brand)
Solaris 11.2 における Zone の種類(brand)
solaris
標準的な Zone
solaris10
Solaris 10 を動かす Zone
solaris-kz
ホストとは異なるバージョンのカーネルを動か
す Zone
15. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Immutable Zone
file-mac-profile の設定で zone を read only
に
strict
読み取り専用✓
✓
fixed-configuration
/var 以下は書き込み可✓
✓
flexible-configuration
/etc と /var 以下は書き込み可✓
✓
none
読み書き可✓
✓
16. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Immutable Zone
$ touch hoge
touch: cannot create hoge: Read-only file system
zoneadm apply で反映不可✓
strict では書き込みできないの
で、起動時にログが書けること
を確認するサービスは起動でき
ない
✓
24. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Zone の構成を渡す
# zonecfg -z testzone1 export -f testzone1.zonecfg
# zonecfg -z testzone2 create -f testzone1.zonecfg
create 時に '-f' でファイルを渡すことができる✓
kernel zone の keysource リソースの export
には権限が必要
✓
25. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
AI マニフェストを指定する
AI マニフェスト
AI (Automated Installer) が参照するファイル✓
/usr/share/auto_install/manifest/
zone_default.xml
✓
zpool/zfs/be/facet/package などを設定可能✓
✓
Zone のインストール時に AI が実行されます✓
26. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
AI マニフェストを指定する
# zoneadm -z testzone install -m testzone_manifest.xml
zoneadm install 時に '-m' で AI マニフェスト
を渡すことができる
✓
30. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Zone 構築まとめ
Solaris 11.2 で使える Zone は 3 種類
solaris/solaris10/solaris-kz✓
✓
file-mac-profile で zone 内での読み書きを
制御
✓
Zone 構築時に渡せる設定は渡しておくと便利
Zone の構成✓
AI マニフェスト✓
SC プロファイル✓
✓
Zone の clone は便利✓
42. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Serverspec 概要
http://serverspec.org/✓
宮下剛輔さんによる、サーバ構
成のテストツール
✓
RSpec ベース✓
SSH / Docker API / WinRM な
どを経由してテストを実行
✓
43. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Serverspec の Solaris 11
対応
ほぼ、となかが書いています✓
となかが使う範囲においては問
題なく動いています
✓
Solaris 10 でもある程度は動
くはずです
✓
44. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Solaris っぽいテスト 1
describe service('apache22') do
it { should be_enabled }
it { should be_running }
its(:property) { should include('httpd/server_type' => 'worker') }
its(:property) { should include('httpd/enable_64bit' => 'true') }
end
45. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Solaris っぽいテスト 2
describe zfs('rpool') do
it { should exist }
its(:property) { should include('mounted' => 'yes') }
end
48. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Advanced Tips
http://serverspec.org/advanced_tips.html✓
実際に使っていくには、serverspec-init で生
成される Rakefile や spec_helpler のまま
ではつらい
How to use host specific properties✓
How to share Serverspec tests among
hosts
✓
How to use Serverspec tests as shared
behaviors
✓
✓
49. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
Serverspec まとめ
Serverspec サーバ構成のテス
トツール
✓
Solaris にも対応✓
Rakefile や spec_helper.rb
は書き換え推奨
✓
Advanced Tips に目を通す✓
53. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
問題1: Solaris環境の用意
Vagrant で Solaris の VM を用意する✓
Solaris 上で Zone を用意する✓
Solaris 上で Kernel Zone を用意する✓
SPARC 上で LDOM を用意する✓
54. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8
問題2: Zoneのあつかい
Zone の構築✓
Zone 内で Puppet の実行✓
Zone に対して Serverspec の
実行
✓
Zone の破棄✓