Embed presentation
Download as PDF, PPTX
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris Zoneと Puppet、 Serverspecで インフラCI OSC 2015 Tokyo/Fall となか
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 自己紹介 名前: となかふみひさ✓ ID: @ftnk✓ インフラエンジニア 主に Solaris (151a 頃から) この PC も Solaris✓ ✓ ✓ 所属 静岡の Solaris メインの会社✓ 日本 OpenSolaris ユーザグループ✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 日本OpenSolaris ユーザーグループ http://www.opensolaris.gr.jp/✓ #osoljp✓ 活動 勉強会(読書会+α) http://connpass.com/series/322/✓ ✓ パッケージ作成 https://osdn.jp/projects/jposug/✓ ✓ ✓
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.
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris でも インフラCI したい
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 インフラ CI Serverspec がリリースされて からインフラの CI が話題 ✓ Puppet や Chef などの構成管 理ソフトウェアでサーバを構築 し、Serverspec でテスト ✓ CI のための環境を用意する方 法として Vagrant や Docker がよく使われている ✓
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 ✓ ✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris で CI Solaris には Zone があるんだ し、Zone を使いたい ✓ Vagrant や Docker のような感 じで、Zone を扱う方法が必要 ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 とりあえずの方法 Docker や Vagrant 的なものを 使わない ✓ 構築済みの Zone に対して、 Puppet などを実行し Serverspec でテスト 新規の環境に対する実行をテストできない 手で巻き戻しが必要✓ ✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 まとめ Zone を使いたい✓ CI のたびに、新規の環境を用 意したい ✓ Vagrant や Docker のような感 じで Zone を扱うしくみが欲し い ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris Zone
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris Zone Zone の概要✓ Zone の種類✓ Zone の構築✓ Zone とパッケージ✓
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 ✓ ✓
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
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 読み書き可✓ ✓
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 では書き込みできないの で、起動時にログが書けること を確認するサービスは起動でき ない ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone の 構築
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone の構築 (solaris) # zonecfg -z testzone create # zoneadm -z testzone install Zone の構成には /etc/zones/SYSdefault.xml のテンプレートが使われる。 テンプレートを使わない場合は 'create -b'✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone の構築 (solaris10) # zonecfg -z testzone create -t SYSsolaris10 # zoneadm -z testzone install -a sol10.flar -u パッケージ system/zones/brand/brand- solaris10 が必要 ✓ インストールにはいずれかのアーカイブが必要 flash archive / pax / cpio (+gzip/ bzip2) / ufsdump (level 0) ✓ ✓ '-t' で指定しているテンプレートの実体は /etc/ zones/SYSsolaris10.xml ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone の構築 (solaris-kz) # zonecfg -z testzone create -t SYSsolaris-kz # zoneadm -z testzone install パッケージ system/zones/brand/brand- solaris-kz が必要 ✓ '-t' で指定しているテンプレートの実体は /etc/ zones/SYSsolaris-kz.xml ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone の構築 ここまでの方法はシンプルすぎ✓ 実際にはネットワーク設定とか したいことがある ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone 構築時にできること Zone の構成を渡す cpu / memory / disk / network etc.✓ ✓ AI マニフェストを指定する package / publisher / pool / zfs etc.✓ ✓ SC プロファイルを指定する hostname / root / user / nsswitch.conf / resolv.conf / keymap etc. ✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone の構成を渡す Zone の構成 cpu✓ memory✓ disk✓ network✓ など zonecfg で設定するもの
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 には権限が必要 ✓
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 が実行されます✓
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 マニフェスト を渡すことができる ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 SC プロファイルを指定する SC (System Configuration) プロファイル hostname/nsswitch.conf/resolv.conf/keymap/ tiemzone/root/user account などを設定可能 Zone 初回ブート時の Wizard で設定する項目✓ SC プロファイルで設定することで Wizard が出な くなる ✓ ✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 SC プロファイルを指定する # zoneadm -z testzone install -c testzone_profile.xml zoneadm install/clone 時に '-c' で SC プロ ファイルを渡すことができる ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone の clone # zoneadm -z testzone2 clone testzone1 # zoneadm -z testzone2 clone testzone1 -c profile.xml 同一の zpool 上であれば、ZFS の clone 異なる zpool 上であれば、データのコピー✓ Publisher からのインストールより早い✓ ✓ unconfig されるので、 SC プロファイルを渡す✓ 初回ブート時に Wizard で設定✓ などが必要 ✓
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 は便利✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Puppet
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Puppet 概要 Puppetlabs による構成管理ツール ZFS や Zone の操作にも対応✓ master/agent 構成、単体、どちらも可能✓ ✓ Solaris 11.2 からパッケージが存在 Solaris 用 module が含まれている✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Puppet マニフェスト サーバの設定を書いたファイル をマニフェストと呼ぶ node 'default' { Package['pkg:/web/server/apache-22'] -> Service['svc:/network/http:apache22'] package { 'pkg:/web/server/apache-22': ensure => installed, } service { 'svc:/network/http:apache22': ensure => running, enable => true, } } ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 リソースタイプ マニフェストに書く 'package' や 'service' などを リソースタイプという ✓ リソースタイプ Puppet 標準で提供 http://docs.puppetlabs.com/references/ latest/type.html ✓ ✓ モジュールによって提供 https://forge.puppetlabs.com/✓ ✓ ユーザによる定義✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris module ネットワーク関連✓ サービス関連✓ その他(BE、パッケージ)✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris module: network dladm etherstub / ip tunnel / link aggregation / link properties / vlan / vnic ✓ ✓ ipadm address object / address properties / interface properties / ip interface / ipmp interface / protocol properties / vni interface ✓ ✓ nsswitch✓ resolver✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris module: service svccfg✓ nis✓ ldap✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris module: others BE✓ package facet / variant / mediator / publisher ✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Puppet の単純なデモ Apache の設定 パッケージのインストール✓ 64bit バイナリを利用✓ mpm は worker✓ サービスを enable にする✓ サービスを起動✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Puppet まとめ Puppet は構成管理ソフトウェ ア ✓ 標準で zone や zfs に対応✓ Oracle による Solaris モジ ュール ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Serverspec
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Serverspec 概要 http://serverspec.org/✓ 宮下剛輔さんによる、サーバ構 成のテストツール ✓ RSpec ベース✓ SSH / Docker API / WinRM な どを経由してテストを実行 ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Serverspec の Solaris 11 対応 ほぼ、となかが書いています✓ となかが使う範囲においては問 題なく動いています ✓ Solaris 10 でもある程度は動 くはずです ✓
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
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
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 リソースタイプ bond / bridge / cgroup / command / cron / default_gateway / docker_container / docker_image / file / group / host / iis_app_pool / iis_website / interface / ipfilter / ipnat / iptables / kernel_module / linux_audit_system / linux_kernel_parameter / lxc / mail_alias / mysql_config / package / php_config / port / ppa / process / routing_table / selinux / selinux_module / service / user / x509_certificate / x509_private_key / windows_feature / windows_registry_key / yumrepo / zfs ✓ http://serverspec.org/ resource_types.html ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Serverspec のデモ
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 ✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Serverspec まとめ Serverspec サーバ構成のテス トツール ✓ Solaris にも対応✓ Rakefile や spec_helper.rb は書き換え推奨 ✓ Advanced Tips に目を通す✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 インフラ CI
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 インフラCI Puppet などの構成管理ソフト ウェアで意図通りに構成される ことをServerspec でテスト し、継続的に Puppet などのコ ードを改善していくこと。 ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris に対する インフラCIの流れ Solaris 環境の用意✓ Puppet 実行✓ Serverspec 実行✓
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 を用意する✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 問題2: Zoneのあつかい Zone の構築✓ Zone 内で Puppet の実行✓ Zone に対して Serverspec の 実行 ✓ Zone の破棄✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone のあつかい docker4solaris を使う✓ 自作スクリプトを使う✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 docker4solaris https://github.com/maduma/ docker4solaris ✓ Zone を Docker っぽく扱う Bash script 約 250 行✓ 環境は決め打ち etherstub / ipnat / dhcp✓ ✓ ✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Tutorial を動かしてみる docker version docker search tutorial docker pull learn/tutorial docker run learn/tutorial echo "Hello World" docker run learn/tutorial ping www.google.com docker run learn/tutorial pkg install apache-22 docker ps -l docker commit CONTAINER learn/apache-22 docker images docker run learn/apache-22 /usr/apache2/2.2/bin/apachectl -M docker inspect CONTAINER docker push learn/apache-22
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 自作スクリプト 開発中✓ Zone を作って、Zone 内でコマ ンドを実行するところまではで きている ✓ オプションを Vagrant や Docker に似せるか考え中 ✓ ご意見募集中✓
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 デモ
Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 まとめ Solaris には道具が揃っている ので、それらをうまくつなげる ものを書ければ、なんとかなる ✓ docker4solaris のような割り 切り重要 ✓