Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Solaris Zone と Puppet、Serverspec でインフラ CI

OSC 2015 Tokyo/Fall で行なった『Solaris Zone と Puppet、Serverspec でインフラ CI 』の資料

  • Login to see the comments

Solaris Zone と Puppet、Serverspec でインフラ CI

  1. 1. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris Zoneと Puppet、 Serverspecで インフラCI OSC 2015 Tokyo/Fall となか
  2. 2. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 自己紹介 名前: となかふみひさ✓ ID: @ftnk✓ インフラエンジニア 主に Solaris (151a 頃から) この PC も Solaris✓ ✓ ✓ 所属 静岡の Solaris メインの会社✓ 日本 OpenSolaris ユーザグループ✓ ✓
  3. 3. 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/✓ ✓ ✓
  4. 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.
  5. 5. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris でも インフラCI したい
  6. 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. 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. 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. 9. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 とりあえずの方法 Docker や Vagrant 的なものを 使わない ✓ 構築済みの Zone に対して、 Puppet などを実行し Serverspec でテスト 新規の環境に対する実行をテストできない 手で巻き戻しが必要✓ ✓ ✓
  10. 10. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 まとめ Zone を使いたい✓ CI のたびに、新規の環境を用 意したい ✓ Vagrant や Docker のような感 じで Zone を扱うしくみが欲し い ✓
  11. 11. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris Zone
  12. 12. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris Zone Zone の概要✓ Zone の種類✓ Zone の構築✓ Zone とパッケージ✓
  13. 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. 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. 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. 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 では書き込みできないの で、起動時にログが書けること を確認するサービスは起動でき ない ✓
  17. 17. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone の 構築
  18. 18. 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'✓ ✓
  19. 19. 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 ✓
  20. 20. 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 ✓
  21. 21. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone の構築 ここまでの方法はシンプルすぎ✓ 実際にはネットワーク設定とか したいことがある ✓
  22. 22. 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. ✓ ✓
  23. 23. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone の構成を渡す Zone の構成 cpu✓ memory✓ disk✓ network✓ など zonecfg で設定するもの
  24. 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. 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. 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 マニフェスト を渡すことができる ✓
  27. 27. 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 が出な くなる ✓ ✓ ✓
  28. 28. 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 プロ ファイルを渡すことができる ✓
  29. 29. 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 で設定✓ などが必要 ✓
  30. 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 は便利✓
  31. 31. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Puppet
  32. 32. 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 が含まれている✓ ✓
  33. 33. 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, } } ✓
  34. 34. 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/✓ ✓ ユーザによる定義✓ ✓
  35. 35. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris module ネットワーク関連✓ サービス関連✓ その他(BE、パッケージ)✓
  36. 36. 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✓
  37. 37. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris module: service svccfg✓ nis✓ ldap✓
  38. 38. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris module: others BE✓ package facet / variant / mediator / publisher ✓ ✓
  39. 39. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Puppet の単純なデモ Apache の設定 パッケージのインストール✓ 64bit バイナリを利用✓ mpm は worker✓ サービスを enable にする✓ サービスを起動✓ ✓
  40. 40. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Puppet まとめ Puppet は構成管理ソフトウェ ア ✓ 標準で zone や zfs に対応✓ Oracle による Solaris モジ ュール ✓
  41. 41. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Serverspec
  42. 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. 43. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Serverspec の Solaris 11 対応 ほぼ、となかが書いています✓ となかが使う範囲においては問 題なく動いています ✓ Solaris 10 でもある程度は動 くはずです ✓
  44. 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. 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
  46. 46. 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 ✓
  47. 47. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Serverspec のデモ
  48. 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. 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 に目を通す✓
  50. 50. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 インフラ CI
  51. 51. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 インフラCI Puppet などの構成管理ソフト ウェアで意図通りに構成される ことをServerspec でテスト し、継続的に Puppet などのコ ードを改善していくこと。 ✓
  52. 52. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Solaris に対する インフラCIの流れ Solaris 環境の用意✓ Puppet 実行✓ Serverspec 実行✓
  53. 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. 54. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 問題2: Zoneのあつかい Zone の構築✓ Zone 内で Puppet の実行✓ Zone に対して Serverspec の 実行 ✓ Zone の破棄✓
  55. 55. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 Zone のあつかい docker4solaris を使う✓ 自作スクリプトを使う✓
  56. 56. 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✓ ✓ ✓
  57. 57. 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
  58. 58. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 自作スクリプト 開発中✓ Zone を作って、Zone 内でコマ ンドを実行するところまではで きている ✓ オプションを Vagrant や Docker に似せるか考え中 ✓ ご意見募集中✓
  59. 59. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 デモ
  60. 60. Solaris ZoneとPuppet、ServerspecでインフラCI - OSC 2015 Tokyo/Fall Powered by Rabbit 2.1.8 まとめ Solaris には道具が揃っている ので、それらをうまくつなげる ものを書ければ、なんとかなる ✓ docker4solaris のような割り 切り重要 ✓

×