今日学んだこと

読書感想文とか、勉強した内容とか

システム開発環境構築の自動化についての構想

学習の為に家でプログラミングをしようと思ったが、家でメインに使っているPCにエディタの一つもインストールされていないことに気づいた。

メインで使っているMacYosemite previewを入れてしまい、その際クリーンインストールしてしまったが為だったりする。

Sublime Textを凌ぎで入れてみたものの、他に言語なりフレームワークを入れるというところまでは至ってない。

Macにがしがしインストールしていってもいいのだが、どうせなら以下2点を満たせないかと考えてみた。

  • 持ち運びできる(PCが変わっても環境を再現できる)
  • 構築を自動化し、改善しやすい

構想

あくまでも構想です。実現はこれから試すので、壁にぶち当たって路線変更になるかもしれません。

f:id:nakazye:20140831023305j:plain

お絵描きツールもなかったので手書きですが・・・

現在、借りてはいるものの全く使ってないVPS上に、環境を構築するための環境を作ります。

この構想がうまくいけば、環境を使いたいPCで、その環境のイメージ(絵でいうところの.box)をDLしてくれば、すぐに環境が利用できるようになります。

  • ①でJenkinsからVagrantを叩き、①'でベースとなる環境を作成
  • ②でJenkinsからAnsibleを叩き、②'で環境を構築(Emacs入れたりとか)
  • ③でVagrantにExportを発行し、③'で.boxファイルを作成

といった動きを考えてます

いろいろなCIツールがあるなかで、なぜJenkinsを用いるのか

現在Jenkins以外にもいろいろなツールがあり、とりわけTravis CIをはじめとするクラウド型が人気を博している気がします。

しかし、そういったツールの情報を探してみても、「クラウド型である」くらいのメリットしか見つけられませんでした。例えば、「Jenkins デメリット」とかで検索しても有益な情報は出てきません。

スタートアップに多い気がしますが、自前の環境はできるだけ小さくするという考えを念頭に置くと、そういったクラウド型が選択肢に上がるのかもしれません。

というわけで、特段のメリットを感じなかったので、歴史があってこなれてるはずのJenkinsを選ぶことにしました。

なぜChefではなくAnsibleなのか

これは純粋な好みです。というか、Rubyツールは極力使いたくないというのが本音です。依存やバージョンでハマりまくった苦い記憶しかないので。あと、Rubyの文法が好きじゃないので。

VagrantRubyですが、こちらは利用するRubyを内蔵しているので良しとしています。

どう構築していくか

以下の順序で作っていこうと思っています。

  1. VPSをリフレッシュ(現状を把握できてない為)
  2. VPS(多分CentOSにする)上にVirtualBoxの導入
  3. VPS上にVagrantの導入
  4. VPS上にJenkinsの導入
  5. VPS上にAnsibleの導入
  6. JenkinsからVagrantを叩き起動するまで
  7. JenkinsからAnsibleを叩き設定するまで
  8. JenkinsからVagrantにExportを発行し、.boxファイルを作成するまで

といった手順で考えています。

やってみた

お名前.comのVPS(CentOS6.5)にVirtualBoxを入れる - 今日学んだこと

お名前.comのVPS(CentOS6.5)にVagrantを入れる - 今日学んだこと

お名前.comのVPS(CentOS6.5)にJenkinsを入れる - 今日学んだこと

お名前.comのVPS(CentOS6.5)にAnsibleを入れる - 今日学んだこと

JenkinsからVagrantを起動する - 今日学んだこと

JenkinsからAnsibleを叩いて、Vagrantの設定をする - 今日学んだこと