CLA assistant

Date
2016-03-19
Author

Akihiro Uchida

tags

license

category

memo

slug

cla-assiatant

lang

ja

OSS に contribution を投げていると CLA というやつを求められることがある。 CLA は Contributor License Agreement の略で contribution をプロジェクトが使う権利を明示的にもらうための同意書。

著作権の保有と譲渡 - オープンソースソフトウェアの育て方 あたりがわかりやすい。

重要な仕組みだと思う一方、個人で導入するのは大変そう。いっそサービスでもあれば、作るかと思い数ヶ月、ある日 CLA Assistant を見つけた。

SAP の github チーム が作ったとのこと、大きい企業に CLA 管理が必要というのは納得だが、サービスにする気風は素晴らしい。

このサービスは github の pull request から webhook に反応して CLA 署名の状況を表示したり、署名を求める bot として動く。 CLA は gist で管理されるので、どのバージョンに署名したのかもわかる。集めた CLA の管理は普通に考えると annoying だが、これは github アカウントで署名される、バランスがいい。 CLA の準備についての手間は残るが、そこは止むを得ないところ。そこさえ越えれば個人でもできそう。

ということで取らぬ狸の皮算用、導入して数ヶ月し、導入したのも忘れたところで pull request が来た。

また同じような仕組みで CLAHub というのもあるよう。

簡単 FreeBSD Docker イメージの作り方

Date
2016-03-05 20:29
Author

Akihiro Uchida

tags

freebsd docker

category

memo

slug

simple-freebsd-docker-image

lang

ja

FreeBSD が Docker の Experimental support をサポートしていることに気づいたので試してみました。 jail + ZFS + 64bit Linux compatibility layer を使って、既存の Linux イメージなどを動かせるようです。

2015年6月の 11-CURRENT ぐらいからサポートされてた模様。

FreeBSD 上で動かす方法は Docker on FreeBSD - FreeBSD WikiFreeBSDでDockerを試す - Keep It Simle, Stupid に譲るとして FreeBSD 上で FreeBSD の Docker イメージを作ってみました。

Docker といいつつ実態はもちろん jail なので FreeBSD のイメージを作って FreeBSD 上で FreeBSD を動かしてもいいわけです。実際 lexaguskov/freebsdkazuyoshi/freebsd-minimal といったイメージが Docker Hub 上に既に上がっています。ただ、これらのイメージ作成方法を探しても見つからなかったので、用意してみました。

基本的には jail なので kernel は不要で FreeBSD でのユーザランド相当、 base.txz や lib32.txz とかがあれば動きそうなので、これらを展開して (展開までに bsdinstall jail とか使う方法とかもあります) tar で固め直して docker import したら動くイメージが作れるようになりました。

$ mkdir docker-freebsd-10.2
$ fetch http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/10.2-RELEASE/base.txz
$ tar xf base.txz -C docker-freebsd-10.2
$ fetch http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/10.2-RELEASE/lib32.txz
$ tar xf lib32.txz -C docker-freebsd-10.2
$ tar -C docker-freebsd-10.2 -czpf docker-freebsd-10.2.tgz .
$ cat docker-freebsd-10.2.tgz | docker import - freebsd
$ docker run -it freebsd /bin/sh
% freebsd-version
10.2-RELEASE

ただ、この方法は展開したファイルに schg フラグがついていたりして削除が面倒だったり、 Automated build もできない。ということで公式イメージとかがよく使う手 (tar を ADD して展開させる方法) を使って Dockerfile 化。

$ fetch http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/10.2-RELEASE/base.txz
$ fetch http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/10.2-RELEASE/lib32.txz
$ cat Dockerfile
FROM scratch
ADD base.txz /
ADD lib32.txz /
CMD ["/bin/sh"]
$ docker build -t freebsd .
$ docker run -it freebsd /bin/sh
# freebsd-version
10.2-RELEASE

この方法で Dockerfile を github に公開して uchida/docker-freebsd Docker Hub にも auchida/freebsd で上げてみました。

ただ kazuyoshi/freebsd-minimal はサイズ 4MB 程度なので、もっと中身を削ってサイズは縮められそう。

FreeBSD 上で FreeBSD 動かすなら jail でいいのではという気がしたりしますが、 docker-compose や docker-swarm とかと組み合わせられる点は割とメリットがあると思います。

FreeBSD periodic(8) の出力を調整する

Date
2015-04-06
Author

Akihiro Uchida

tags

FreeBSD

category

memo

slug

configure-output-for-periodic-in-freebsd

lang

ja

FreeBSD では cron から periodic(8) で定期実行タスクが実行され、その結果が root 宛にメールされます。

各 jail 上でのメールを ssmtp でメールサーバに relay するよう設定していましたが、 jail の数が多くなるにつれ、煩わしくなり periodic の設定を調整しました。

man 8 periodicman 5 periodic.conf をみると、 /etc/periodic.conf で以下の変数を設定することで出力を調整できるようです。

<basedir> の部分は daily weekly monthly security のいずれかです。要は /etc/periodic 以下のディレクトリですね。

periodic から呼び出される {,/usr/local}/etc/periodic/{daily,weekly,monthly,security}/ 以下のスクリプトは notable infomation が無い場合は終了コード 0 となるはずです。

ということで /etc/periodic.conf で以下のように show_success を無効とする設定をいれるようにしました。

daily_show_success="NO"
weekly_show_success="NO"
monthly_show_success="NO"
security_show_success="NO"

periodic コマンドを直接実行し、その出力を見ることで設定結果を確認できます。