Vagrant box作り方とVagrantfileの和訳

概要

  • 久々に使用したのでメモ
  • 環境
    • mac osx sierra

ubuntu18.04のvagrant box 追加

  • このセクションではネットから既存の vagrant box をインストールします
  • bento/ubuntu-18.04 Vagrant box
  • 1
    vagrant box add bento/ubuntu-18.04 https://app.vagrantup.com/bento/boxes/ubuntu-18.04
    • 複数のプロバイダでうごくよ、みたいなことを言われる
      • virtualboxいがいにもParallels DesktopというMAC用仮想化ソフトがあるらしい(今度触ってみる)
    • 1
      2
      3
      4
      5
      6
      This box can work with multiple providers! The providers that it
      can work with are listed below. Please review the list and choose
      the provider you will be working with.

      1) parallels
      2) virtualbox
    • VirtualBoxを使っている場合は「2」を入力してエンター、これでboxが追加される

ubuntu18.04のvagrant boxを作成

  • このセクションでは自前にダウンロードしてVirtualBoxで作っていたVMをvagrantbox化して見ます
  • Vagrant box 作成手順(CentOS 6.7) ←この記事の最後の方を参考にしました。特にここでやっているようなOSの最適化みたいなことはせずに取り敢えず書き出しました。
  • virtualboxで作成したvmの名前を指定すれば作成できるっぽい
  • 1
    vagrant package --base ubuntu18.04 --output ubuntu18.0
  • エラーになる(vargantのプラグインをアップデートしろ的な意味?)

    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      The plugins failed to initialize correctly. This may be due to manual
      modifications made within the Vagrant home directory. Vagrant can
      attempt to automatically correct this issue by running:

      vagrant plugin repair

      If Vagrant was recently updated, this error may be due to incompatible
      versions of dependencies. To fix this problem please remove and re-install
      all plugins. Vagrant can attempt to do this automatically by running:

      vagrant plugin expunge --reinstall

      Or you may want to try updating the installed plugins to their latest
      versions:

      vagrant plugin update

      Error message given during initialization: Unable to resolve dependency: user requested 'facter (> 0)'
  • 指示通りコマンド入力

    • 1
      2
      3
      4
      5
      6
      7
      8
      1.
      $ vagrant plugin repair
      /* ↓成功 */
      Installed plugins successfully repaired!
      2.
      $ vagrant plugin expunge --reinstall
      3.
      $ vagrant plugin update
  • vagrantbox 書き出し

    • 1
      $ vagrant package --base ubuntu18.04 --output ubuntu18.0
  • 10分くらいまつ…

  • コマンド実行したディレクトリに指定した名前「ubuntu18.04」で作成されている
  • 自分で作成した vagrant box を追加

    • 1
      $ vagrant box add -name ubuntu18.04 ./ubuntu18.04
  • 追加は30秒ぐらいで終わる

    • 1
      box: Successfully added box 'ubuntu18.04' (v0) for 'virtualbox'!

追加したboxからvagrantfile作成

  • 追加されているboxをリスト表示して確認する

    • 1
      2
      3
      4
      5
      $ vagrant box list

      bento/ubuntu-18.04 (virtualbox, 201806.08.0)/*←bentoから落としてきたbox*/
      ubuntu16.04 (virtualbox, 0)/*←昔についかしてた16.04のbox*/
      ubuntu18.04 (virtualbox, 0)/*←自作box*/
  • bentoのboxからvagrantfileを作成

    • 1
      vagrant init bento/ubuntu-18.04
  • Vagrantifileが作成される

    • 以下コメントを和訳したVagrantfile
    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      # -*- mode: ruby -*-
      # vi: set ft=ruby :

      # すべてのVagrant設定は以下で行う. Vagrant.configureの "2"
      # コンフィグレーションのバージョンを設定する(w古いスタイルは後方互換性)
      # やり方がわからない場合触らないこと
      Vagrant.configure("2") do |config|
      # 一般的な設定オプションについては、以下で説明しています
      # 完全なリファレンスについては、以下のオンラインドキュメントを参照してください
      # https://docs.vagrantup.com.

      # 全てのvagrantの開発環境には vagrant box が必要です
      # boxes at https://vagrantcloud.com/search.
      config.vm.box = "bento/ubuntu-18.04"

      # vagrant boxの更新を無効にしています。 If you disable this, then
      # ユーザが vagrant box outdated 実行時のみ更新がチェックされます
      # これはお勧めしません(trueにしとけということ?vagrant box outdatedをやめろということ?)
      # config.vm.box_check_update = false

      # ホストの8080ポートにゲストの80(ローカルホスト)をポートフォワーディングしてる設定
      # config.vm.network "forwarded_port", guest: 80, host: 8080

      # 127.0.0.1からのアクセスは無効にしている設定
      # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

      # ホストからのみアクセスできるポートを設定
      # config.vm.network "private_network", ip: "192.168.33.10"

      # ブリッジネットワークする設定
      # ゲストは物理的に存在するデバイスとして表示される
      # config.vm.network "public_network"

      # 一つ目の引数のホストのフォルダを二つ目の引数のゲストのフォルダと共有する
      # config.vm.synced_folder "../data", "/vagrant_data"

      # プロバイダの固有のオプション(?)あとで調べます
      # Example for VirtualBox:
      #
      # config.vm.provider "virtualbox" do |vb|
      # # Display the VirtualBox GUI when booting the machine
      # vb.gui = true
      #
      # # Customize the amount of memory on the VM:
      # vb.memory = "1024"
      # end
      #
      # View the documentation for the provider you are using for more
      # information on available options.

      # シェルを実行できる
      # Puppet, Chef, Ansible, Salt, Docker も可能(?)
      # 詳細はドキュメントをみること
      # Dockerファイルの記述とかもできるということでしょうか
      # config.vm.provision "shell", inline: <<-SHELL
      # apt-get update
      # apt-get install -y apache2
      # SHELL
      end

追記

  • Docker Provisioner
  • 公式サイト見たらconfig.vm.provisionでDocker imageをbuildできるみたいです。docker
  • The Vagrant Docker provisioner can automatically install Docker, pull Docker containers, and configure certain containers to run on boot
    「自動的にDockerをインストールし、Dockerコンテナをプルし、起動時に実行する特定のコンテナを設定できます」
  • Dockerfileをかけるんじゃなくて、VMに自動でDocker環境を作って実行してくれるみたいです

VagrantでVMを起動、VMにアクセス

  • Vagrantfileのあるフォルダで以下のコマンド

    • 1
      $ vagrant up
  • その後ssh接続

    • 1
      2
      3
      4
      $ vagrant ssh

      /*アクセス成功*/
      vagrant@vagrant:~$

参考