こんにちは。

CoreOS大好きおじさん星野です。

社内勉強会で、また懲りずにCoreOSの話をしました。

( 前回はDockerfileの書き方を話しました)

今回は

  • 「こんなに簡単にJenkinsとか立てられるんですよ!」
  • 「しかもCoreOSならこんなにポータビリティが高い!」
  • 「そしてVPSはなんか安い!」

みたいな徒然を話しました。

だらだらと話してしまったので、以下、4点ポイントとしてまとめたいと思います

cloud-configの高いポータビリティ

CoreOSはクラスタ管理が得意なOSですが、私は個人的には cloud-configという仕組みが好きです。

これにより、yamlファイルひとつで「サーバーが起動するサービスや設定」を記述することができます。

今回、DigitalOceanとVultrでデモをしたのですが、どちらのVPSサービスでも同じyamlで同じテスト環境(Jenkinsが立つだけですが)を構築することが出来ました。

この「ポータビリティの高さ」と「Immutable感」が嬉しい限りです。

今回デモで使用したJenkinsサーバーを立てるyamlはここに貼っておきます。

https://gist.github.com/hoshinotsuyoshi/8d3dc38d50c61c1b6cd3

お安いVPSプラン

スライド内で紹介した、CoreOSをサポートするVPS(DigitalOcean, Vultr)には、どちらもお安いプランが有ります。 「プライベートなJenkinsサーバを、週末だけ、安く立てたい」とか、そういうニッチな用途には向いていると思います。

DigitalOcean

  • 一番安いプラン … $5/mon = $0.007/hour
  • CoreOS / cloud-config … 利用可能

Vultr

  • 一番安いプラン … $5/mon = $0.007/hour
  • CoreOS / cloud-config … 利用可能

docker hub で docker imageを自動ビルドできる

「貧者のための…」がテーマなので、公式のdocker hub(public、無料)を利用しています。

githubと連携できる「AUTOMATED BUILD REPOSITORY」を利用すると、githubへのプッシュをフックにビルドでき、便利です。

AUTOMATED BUILD REPOSITORY - docs.docker.com

個別の設定をdocker imageに注入する

publicなdocker hubを使っていると、個別の設定・パスワードなど、公開するdocker imageやgithubリポジトリに入れるべきでないデータをどうするべきか? ということがあると思います。

etcdとかを使うのも良いと思いますが、今回はサーバー1台だけなので、

個別の設定はcloud-configの"write-files"でファイルを生成し、docker buildで注入するのが良いと思います。

具体的には今回は、Jenkinsのが立ち上がった時点でカスタムジョブ(個別の設定)がセットされている状態になって欲しかったので

  1. cloud-configの"write-files:"で、Jenkinsのカスタムジョブを記述したconfig.xml を生成
  2. 子imageを docker build

ということをやっています。

これにより「サーバーを初めて起動した時にはすでに(config.xmlに書かれた)Jenkinsのジョブがセットされている」ということを実現できました。

参考・関連リンク

今回参考にしたDigitalOceanとVultrのドキュメントなどはこちらです。

  • このエントリーをはてなブックマークに追加
Feedforce Developer Blog

新しいブログへ移行しました!こちらもよろしくお願いします。