読者です 読者をやめる 読者になる 読者になる

Vagrantを使ってVagrant Boxを作成する

チームで共有する

  • Vagrant Box(Ubuntu Server 16.04 で Docker Engineやnodebrewなどインストール済み)
  • 作成したVagrant Boxを起動するVagrantfileのテンプレート

を作成した。

  • 新しくジョインした人が素早く開発に入れる(環境構築の時間短縮)
  • チームで開発環境を統一できる

などのメリットがある。

Packer で作ろうとして諦める

当初はPackerを使ってisoから作成しようと思ったのだが、

www.packer.io

blog.fusic.co.jp

github.com

Ubuntu 16.04用のスクリプトがないし、色々良くわからないのでやめた。

vagrant up, package で作る

Packerで作るのが難しかったので、 vagrant up, package で boxを作成し、共有することにした。

$ vagrant destroy  # 既存のVMを破棄
$ vagrant up
$ vagrant package  # カレントディレクトリに package.boxが生成される

共有方法

  1. Atlas上で公開
  2. ファイルサーバとかで共有

の2つがある。 Atlas上で公開するほうが利便性は当然高いが、privateなboxは有料プラン。 いくらするのかはいまいち分からない

Atlas | HashiCorp

publicなboxをAtlasに公開する場合

  • GitHubと連携
  • Web インターフェースから公開
  • vagrant push
  • atlas-upload-cli

など様々な方法があるようだ。

Creating a New Vagrant Box - Help | Atlas by HashiCorp

Atlas by HashiCorp

Uploading Applications to Atlas - Help | Atlas by HashiCorp

ただ、Webインターフェースから公開以外の方法はうまく行かなかった。

atlas-upload-cliGitHubリポジトリみてもあまり開発されている気がしなかったので試してない。

github.com

vagrant push

$ vagrant login
$ vagrant push --debug

error starting upload: upload: resource not found

エラーが起こってしまい、解消できなかった。

--debugオプションつけてログ見る感じ、 API叩いて404エラー起こっているんだけど、リクエスト先のURLが間違っている気がする。

というかローカルでソースコードをアップロードする以外のことを色々やっている気がするのは気のせいか?

GitHub 連携

github.com

Docker HubのAutomated Buildみたいな機能を期待しているのであって、デプロイまでしたいわけではないのだが、 Terraform使ってるしなんか期待しているのと違う気がする。

ファイルサーバとかで共有する場合

ファイルサーバとかで共有する場合、 boxをローカルにダウンロードした後に

$ vagrant box add hogehoge package.box

とすればhogehogeでboxが使えるようになる。

$ vagrant init hogehoge