2015-03 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2015-03-24 Tue

[別の年の同じ日: 2003 2006 2007 2008 2010 2011 2012 2013 2016

illumos-sockstat はてぶ

- bahamas10/illumos-sockstat
  https://github.com/bahamas10/illumos-sockstat

Solaris 11.2 で CC=/usr/bin/gcc make でビルドできることを確認。

IPv4 tcp で LISTEN しているものは以下のように表示される。

bash-4.1$ ./sockstat -4 -l -P tcp
USER      COMMAND         PID    PROTO  LOCAL ADDRESS          REMOTE ADDRESS
root      in.mpathd       87     tcp4   127.0.0.1:5999         *.*
daemon    rpcbind         700    tcp4   0.0.0.0:111            *.*
daemon    rpcbind         700    tcp4   0.0.0.0:111            *.*
root      sshd            779    tcp4   0.0.0.0:22             *.*
root      pkg.depotd      901    tcp4   0.0.0.0:10000          *.*
daemon    nfs4cbd         23048  tcp4   0.0.0.0:58433          *.*
daemon    statd           23047  tcp4   0.0.0.0:45760          *.*
daemon    nfs4cbd         23048  tcp4   0.0.0.0:60215          *.*
daemon    statd           23047  tcp4   0.0.0.0:53190          *.*
daemon    lockd           23260  tcp4   0.0.0.0:4045           *.*
daemon    lockd           23260  tcp4   0.0.0.0:4045           *.*
root      sched           0      tcp4   0.0.0.0:1016           *.*

「この port 何が使ってるんだっけ?」ということがよくあるので、非常に便利。

Serverspec で service の property のテストに its(:property) が使えるようになった はてぶ

[2015-03-23-1] の Serverspec で zfs の property に its(:property) が使えるようになったのに続き、
Serverspec 2.12.0 から service の property のテストに its(:property) が使えるようになった。

describe service('apache22') do
  its(:property) { should include( 'httpd/enable_64bit' => 'true', 'httpd/server_type' => 'worker' ) }
end

zfs の方と同じように

- have_property のように property の数だけ svcprop command を叩かなくてよい
  - svcprop -a apache22 のように全ての property を取得して hash に詰めてる
- rspec の hash 用 matcher が使える

といったあたりがメリット。

2015-03-23 Mon

[別の年の同じ日: 2006 2007 2008 2010 2011 2013

Serverspec で zfs allow のテストをしたい はてぶ

ということで、いろいろと考えている。

まずは、どうテストを書けるといいのかが決まらない。

すでにある Serverspec の resource type を参考にすると、
こんな感じに書けるのがよさそう。

describe zfs('rpool/export/home/foo') do
  it { should be_allowed('create,mount,snapshot').to_user('foo') }
  it { should be_allowed('create,mount,snapshot').to_group('staff') }
  it { should be_allowed_at_create_time('destroy') }
end

または its 形式にして、こんな感じ。

its(:user_permission) { should include('foo' => 'create,mount,snapshot' ) }
its(:group_permission) { should include('staff' => 'create,mount,snapshot' ) }
its(:create_time_permission) { should eq 'destroy' }

'create,mount,snapshot' などの permission 部分を文字列にしてしまうと、

describe zfs('rpool/export/home/foo') do
  it { should_not be_allowed('rollback,hold').to_user('foo') }
end

のようなテストができないし、permission の順番も問題になるので、
配列にした方がいいかもしれない。
完全一致のテストでよければ文字列でよい。

次に、zfs allow の出力の問題。

手元で適当に zfs allow で permission を設定してみた後の zfs allow の出力は以下。

tonaka@x230% zfs allow tank/test20150321/test_01/a
---- Permissions on tank/test20150321/test_01/a ----------------------
Local permissions:
        user tonaka destroy,rollback,snapshot
---- Permissions on tank/test20150321/test_01 ------------------------
Create time permissions:
        rollback
Local permissions:
        user tonaka destroy
Local+Descendent permissions:
        user tonaka snapshot
---- Permissions on tank/test20150321 --------------------------------
Create time permissions:
        destroy,snapshot
Local+Descendent permissions:
        user tonaka create,mount
        group staff create,mount

各 zfs の path に対して何が allow されたかが出力されて、
上からの継承分を含めて何が allow されているかは出力されない。

そのため、ある zfs の path の上からの継承分を含めた allow をテストしたい場合は
parse してごにょごにょして求める必要がある。

ある zfs の path の上からの継承分を含めた allow をテストするのではなく、
ある zfs の path に対して zfs allow が実行されているかをテストするなら、
その path の 'Create time permissions' と 'Local+Descendent permissions' を
確認すればよい。

どっちにするか?って話になると、両方できた方がよいということになってしまうが、
『ある zfs の path に対して zfs allow が実行されているかをテストする』の方が、
テストに失敗した時に何をすればいいのかわかりやすい分よい気がする。

別にまとめた方がいいけど、zfs allow で表示される permission の種類は以下。

- Create time permissions:
  zfs allow -c で許可された permission。
  その zfs の下位の zfs を create すると、この permission がつく。
- Local+Descendent permissions:
  zfs allow で許可された permission。
- Local permissions:
  zfs が create された際に Create time permissions でついた permission

Serverspec で zfs の property のテストに its(:property) が使えるようになった はてぶ

pull request が merge されて Serverspec 2.11.0 から
zfs の property のテストが以下のように書けるようになった。

describe zfs('rpool') do
  its(:property) { should include( 'mountpoint' => '/rpool', 'atime' => 'on' ) }
end

この場合、テスト対象の zfs である rpool に対して

zfs get -Hp -o property,value all rpool

を実行して、その結果を { 'property' => 'value' } な hash に詰めるので、

- have_property のように property の数だけ zfs command を叩かなくてよい
- rspec の hash 用 matcher が使える

といったあたりがメリット。

Referrer (Inside):
[2015-03-24-1] Serverspec で service の property のテストに its(:property) が使えるようになった

2015-03-19 Thu

[別の年の同じ日: 2003 2005 2006 2007 2008 2009 2010 2011

Docker for Solaris 11.2 はてぶ


- Docker for Solaris 11.2 | Maduma's Blog
  http://blog.maduma.com/post/113359176943/docker-for-solaris-11-2
- maduma/docker4solaris
  https://github.com/maduma/docker4solaris

ざっとスクリプトを読んだところ、
unified archive でイメージを管理し、
適当に zone を作ってくれるものっぽい。

Puppet の CI 用に zoneadm clone して Puppet を実行する謎スクリプトを書いてあるので、
Docker for Solaris 11.2 からいろいろパクって拡張する方が自分の用途にはよさげ。

Puppet で htpasswd を扱うために leinadm/htpasswd を入れてみた はてぶ

- leinaddm/htpasswd · Puppet Forge
  https://forge.puppetlabs.com/leinaddm/htpasswd
- leinaddm/puppet-htpasswd
  https://github.com/leinaddm/puppet-htpasswd

使い方は README.md に書かれている通りで、
特にはまることもなく、使い勝手は悪くない。

2015-03-15 Sun

[別の年の同じ日: 2003 2004 2005 2006 2007 2008 2009 2010 2011

zoneadm install/clone するときは '-c sc_profile.xml' を付けよう はてぶ

静岡東部のおっさんが次のような記事を書いていた。

karky7のブログ: Solaris11.2のUnified Archivesでチョット遊んでみた
http://blog.karky7.com/2015/03/solaris112unified-archives.html

で、

うまくいけばattachされる、そしてzoneを起動する、初回は-Cでzloginするよ

とあるけど、'zlogin -C' するのは面倒なので、
'-c sc_profile.xml' を付けよう というのが今回の話。

'-c sc_profile.xml' を付ければ、
'zlogin -C' して zone のセットアップをする必要がなくなるというだけの話だけど。

で、'-c' で指定する xml は
/usr/share/auto_install/sc_profiles/sc_sample.xml
あたりにサンプルがあるので、これをいじってもいいし、

$ sudo sysconfig create-profile -o /tmp/myprofile

で、'zlogin -C' での初回セットアップと同様のことを行なうことで、
/tmp/myprofile に xml が生成される。

また、おっさんは unified archive を使っていたけど、
普通に zoneadm install する場合は、' -m manifest.xml' で
インストールするパッケージなどを指定できる。

詳しくは man 5 solaris か /usr/share/auto_install/manifest/*.xml あたりを参照。

2015-03-07 Sat

[別の年の同じ日: 2004 2005 2006 2007 2008 2009 2011 2013

ポリドッグに Serverspec を教えてきた はてぶ

ポリドックにserverspecを教えよう! - connpass
http://connpass.com/event/11587/

で、ポリドッグ(@polidog)に Serverspec を教えてきた。

手を動かしてテストを書いてもらうようにしたので、
資料に細かいことは書いていない。


- Serverspec と Specinfra の関係はわかってもらえたはず
- mysql の '-e' へのくいつきが妙によかった
- Rake や Rspec 自体の説明をいれた方がよかった