カラクリスタ

docker-deployというリモートのDockerサーバ専用のdeployツール作りました

概要: DevOps って自動化が超重要だよねー!


先日、

  • 個人用途の VPS の管理を Docker ベースにした /post/66636256465

という記事にも書いた通り、僕の個人的な Web Site or Service や、 あるいは IRC 関係のデーモンなんかは、

で管理しているのですが、このリモートの Docker サーバでの、 Docker container の build や、 Docker container を起動する upstart ファイルの配置なんかは、実は、

_人人人人人人_ > 全部手動 <  ̄ Y^Y^Y^Y^Y  ̄

でやっておりました。

で、僕自身としては DevOps という文脈において、 手動での Ops の管理は、 絶対に信頼すべきでなく 、 また 必ず自動化するべきである 、という考えを持っていて、 自動化必須だろボケカスとか自分に対して思ったので、 今回、

という、

  1. リモートでの Docker container のビルド
  2. 及び、Docker container 管理の自動化を行う設定ファイルの配置

を、全自動でやってくれるスクリプトを、

昨日まる一日かけて 書きました。

で、使い方としては、 README.md にも書いた通り、

$ curl -O https://raw.github.com/nyarla/docker-deploy/master/docker-deploy
$ chmod +x docker-deploy

した後、

# docker containerのビルド
$ docker-deploy --build --sudo \
--user core \
--host dev.sandbox.local \
--tagprefix nyarla \
/path/to/dockerfile/repository

# docker containerの自動起動化
$ docker-deploy --deploy --sudo \
--user core \
--host dev.sandbox.local \
--tagprefix nyarla \
--supervisor upstart \
/path/to/dockerfile/repository

という感じで使えるのですが、いかんせんコマンド名長いし、 コマンドオプションも長いので、僕はコマンド一発実行ができるように、

USER = core
HOST = dev.sandbox.local
TAG  = nyarla

OPTS = --user $(USER) --host $(HOST) --tagprefix $(TAG)

SUPERVISOR = upstart

all: build deploy

build:
docker-deploy --build --sudo $(OPTS)

deploy:
docker-deploy --deploy --sudo --supervisor $(SUPERVISOR) $(OPTS)

という感じのMakefileを書いて、

# Docker containerのビルド
$ make build

# Docker containerのデプロイ
$ make deploy

という感じで、make一発で build && deploy ができるようにしています。

で、ちなみにこのスクリプト、皆に広く使ってもらいたかったし、 また、こういう DevOps 界隈において、 これってかなり便利じゃね? みたいなスクリプトに、 ライセンスが云々するのもなんだか気乗りしなかったので、 とりあえずdocker-deployに関しては、

  • docker-deploy is under the public domain

としました。 僕としては、あとはもう本当に自由にいじり倒してください! という感じですね。

あとまあ細かいところのデキ加減とか微妙な感じな所もあるので、 もしここ直してーとか、あるいはここ直したよーとか有れば、

で Issue 立てるとか、あるいは Pull Request 送るとかでお願いします。

ということで、今日の朝っぱらから書いている記事は以上です。 何か分からん事があったら、IRC とか Lingr とか Twitter とかで、

  • @nyarla

まで話かけてもらえればと思います。

というわけで以上、終わります。

#FIXME