DevOpsリハビリ中の @udzura です。皆さんは、アジャイルとデブオプスを実現していますか?
今日は、「IFTTT for Ops」を標榜するイベントドリブンでルールベースな自動化ツール、StackStormをいじってみたので手順を残しておく。
続きを読む某Docker CTOの記事を見てから、ちゃんと見とかないとねという気持ちになり、まずはざっくり読んだ。
なにせ不勉強は承知、メモ程度ということで間違い等のご指摘をお待ちしています。
ソースは2016/08/02 14:30 時点のHEAD(95a6ecffd04732bdf7db0518fdfd59bcabdad442
) です。
Code of Conduct はまあ省略で。
"classID": 1048577 instead of "classID": "0x100001"
とか、redundant prefixesをキープしてね(KILLじゃなくてCAP_KILLなど)という話が書かれていて、読むだけa set of files organized in a certain way, and containing all the necessary data and metadata
config.json
を含むこと。see below (Container Configuration file)A directory representing the root filesystem of the container
。rootfs/
みたいな規約があるといい。config.json
で参照されていてほしい/proc
をマウントしたら、例えば /proc/self/fd -> /dev/fd
のようなsymbolic linkを貼ってほしいとのことociVersion
the version of the OpenContainer specificationpath(e.g. "rootfs")
, readonly
destination,sourse,type,options
/proc, /sys, /dev/pts, /dev/shm
がほしいpid, network, mount, ipc, uts, user, cgroup
)と、もしnamespaceファイルを指定したければpath(/proc/1234/ns/pid
だの、あるいは/var/run/netns/netfoo
)を指定できるmount --make-private /
とか/proc/kcore
は見せない、ということ?(省略...)
次は image-spec を読む。
packagecloud を使っております。
便利です。一応 CentOS >= 7 / Ubuntu Trusty / Ubuntu Xenial / Debian jessie で利用できると思います。
パッケージをインストールすると3つのバイナリが入ってきます。
haconiwa
haconiwa コマンド本体です。READMEにあるようなhacoファイルを解釈してコンテナを立ち上げたりできます。まあ 例 の通りです。debootstrapなどでルートファイルシステムを作っておためしください。
hacorb
haconiwa コマンドと大体同じmgemが入った、mrubyのバイナリそのものです。個々のmgemの機能を直接組み合わせて、Rubyでプログラムを書いたりできます。
$ hacorb -e 'p Process::Sys.getuid' 1000
これはこれで少し面白いと思うので、興味があって何かしたい場合は、個別のmgemのREADMEをご参照ください。ちなみに haconiwa revisions
でコア以外の依存mgem(ついでに組み込まれたmrubyのリビジョンも)がわかったりします。
$ haconiwa revisions mgem and mruby revisions: -------- MRUBY_CORE_REVISION 97283faa16d2e69a27de891e5a6695bf370cb4c3 mruby-argtable 6c281979b82941a17936347abcbb5c76d368257f mruby-capability fa1e553258362547a6393830ae55d2310700a6f3 mruby-cgroup 5d5573bae88f8f742b90f9464b7534be55ad8a3e mruby-dir 0c3c538855dd15208d34fee96b13675e564bb4b6 mruby-exec 16451d728533584b55233f4ef3fab0da892e31e2 mruby-io 93d481d4b49829e37b1f501c7307663c6327dfab mruby-mount dabaa7c487e09a878893d06573500e851cb20364 mruby-namespace f5dbc47b3174a117e26d5ff6e21c1322a650e45f mruby-process e532ff8837ebed35bdc03f26aed6a9105bbd7c44 mruby-process-sys 925f227d36edebc5accde2ff9a2497a91cc7d954 mruby-procutil 14b3a7bc66bc290af1f2fec339e73eb5cd5ace0c mruby-resource ed74671bd4c653434367ec8fb05e094d2b2cff20 mruby-signal 2aff41b5dffb1ab233141472fa8a0a456b703ef0
hacoirb
上で紹介した hacorb
の対話環境です。rubyに対するirbですね。入っているmgemは同じなので、コンテナ要素を気軽に(?)試せるかと。
以下はUTSの隔離のサンプルです。
p = Process.fork { Namespace.unshare(Namespace::CLONE_NEWUTS); Procutil.sethostname 'udzura.example.com'; system 'hostname' }; Process.waitpid p # udzura.example.com # => 13903 system 'hostname' # localhost # => true
実用というか、勉強に便利かもしれない。
ということで、パッケージになってアンインストールも気軽にできるようになって、haconiwaをより気軽に試せますね!!知人は仕事で使っているベアメタルのDebian(sid)にhaconiwaを早速突っ込んでいました。
何卒ご贔屓ください。
Enjoy jailing~