学習の為に家でプログラミングをしようと思ったが、家でメインに使っているPCにエディタの一つもインストールされていないことに気づいた。
メインで使っているMacにYosemite previewを入れてしまい、その際クリーンインストールしてしまったが為だったりする。
Sublime Textを凌ぎで入れてみたものの、他に言語なりフレームワークを入れるというところまでは至ってない。
Macにがしがしインストールしていってもいいのだが、どうせなら以下2点を満たせないかと考えてみた。
- 持ち運びできる(PCが変わっても環境を再現できる)
- 構築を自動化し、改善しやすい
構想
あくまでも構想です。実現はこれから試すので、壁にぶち当たって路線変更になるかもしれません。
現在、借りてはいるものの全く使ってないVPS上に、環境を構築するための環境を作ります。
この構想がうまくいけば、環境を使いたいPCで、その環境のイメージ(絵でいうところの.box)をDLしてくれば、すぐに環境が利用できるようになります。
- ①でJenkinsからVagrantを叩き、①'でベースとなる環境を作成
- ②でJenkinsからAnsibleを叩き、②'で環境を構築(Emacs入れたりとか)
- ③でVagrantにExportを発行し、③'で.boxファイルを作成
といった動きを考えてます
いろいろなCIツールがあるなかで、なぜJenkinsを用いるのか
現在Jenkins以外にもいろいろなツールがあり、とりわけTravis CIをはじめとするクラウド型が人気を博している気がします。
しかし、そういったツールの情報を探してみても、「クラウド型である」くらいのメリットしか見つけられませんでした。例えば、「Jenkins デメリット」とかで検索しても有益な情報は出てきません。
スタートアップに多い気がしますが、自前の環境はできるだけ小さくするという考えを念頭に置くと、そういったクラウド型が選択肢に上がるのかもしれません。
というわけで、特段のメリットを感じなかったので、歴史があってこなれてるはずのJenkinsを選ぶことにしました。
なぜChefではなくAnsibleなのか
これは純粋な好みです。というか、Rubyツールは極力使いたくないというのが本音です。依存やバージョンでハマりまくった苦い記憶しかないので。あと、Rubyの文法が好きじゃないので。
VagrantもRubyですが、こちらは利用するRubyを内蔵しているので良しとしています。
どう構築していくか
以下の順序で作っていこうと思っています。
- VPSをリフレッシュ(現状を把握できてない為)
- VPS(多分CentOSにする)上にVirtualBoxの導入
- VPS上にVagrantの導入
- VPS上にJenkinsの導入
- VPS上にAnsibleの導入
- JenkinsからVagrantを叩き起動するまで
- JenkinsからAnsibleを叩き設定するまで
- 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の設定をする - 今日学んだこと