LoginSignup
6
10

More than 5 years have passed since last update.

S3を使ってVagrantのBoxを管理する

Posted at

背景

以前は3rd partyのVagrant Boxと一緒にAnsibleのplaybookを同梱して、開発環境を構築/配布していた。
しかし、プロビジョニングする物が増えてきたため、初回構築時のプロビジョニング時間が馬鹿にならなくなってきた。
時間節約のために、プロビジョニング済みのBoxをS3にUPして配布してしまうのが楽だろうと判断した。
※Ansibleのplaybookは変わらず同梱する。

問題

S3にアップロードしたBoxのURLをVagrantfileにそのまま記載しただけだと、Boxのバージョニングが行えない。
どうすっかなー。とりあえず公式ドキュメントを漁る。
https://www.vagrantup.com/docs/boxes/format.html

ここのBox Metadataが正にそれ。

どうやったか

Vagrantfile

Vagrantfileはこんな感じでS3にUPしたJSONファイルを指定しておく。

Vagrantfile
config.vm.box = "local-development"
config.vm.box_url = "https://s3-ap-northeast-1.amazonaws.com/local-development/box.json"
config.vm.box_check_update = true

この時、box_check_updateをtrueにしておくと、新しくBoxをS3にUPした際、勝手にアップデートが始まるのでおすすめ。

S3

Vagrantfileが参照する、JSONファイルはこんな感じ。
BoxもS3のバケットの中に入れておく。

box.json
{
  "description": "Centos7 x86_64",
  "short_description": "CentOS7",
  "name": "local-development",
  "versions": [{
    "version": "1.0.0",
    "status": "active",
    "description_html": "<p>CentOS7 x86_64</p>",
    "description_markdown": "CentOS7 x86_64",
    "providers": [{
      "name": "virtualbox",
      "url": "https:\/\/s3-ap-northeast-1.amazonaws.com\/local-development\/box-1.0.0.box"
    }]
  }]
}

BoxのバージョンをUPする際は、versionurlを変えてやれば良い。
これでくそ長いプロビジョニングに付き合わせることなく、Boxのバージョニングもよろしくやれて楽チンダネー。

6
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
10