VagrantのBoxを作成する

実践Vagrantを読んだので,実際にUbuntu16.04のvagrant boxを作ってみる

環境

VirtualBoxのマシン作成

設定

  1. 仮想マシンの作成

    • メモリはあとで変えられるので少なめに
    • 仮想ハードディスクを作成するにチェック f:id:MitI_7:20170917131848p:plain
  2. 仮想ハードディスクの作成

    • ファイルサイズ変えるのはめんどうなので多めに f:id:MitI_7:20170917131900p:plain
  3. ストレージ
    • isoをセットする f:id:MitI_7:20170917131909p:plain
  4. オーディオを有効化のチェックをはずす f:id:MitI_7:20170304084223p:plain

  5. あとは仮想マシンを起動し普通に進めていく

  6. ユーザ名,パスワードはvagrantにしておく f:id:MitI_7:20170917131932p:plain

Ubuntuの設定

  1. 仮想マシンを起動し,tarminalを起動
  2. sshができるようにopenssh-serverをインストール

    $ sudo apt-get update
    $ sudo apt-get install openssh-server
    
  3. sudoをパスワードなしで実行できるように以下のように設定する

    $sudo visudo
    
    • 変更前

      # Allow members of group sudo to execute any command
      %sudo   ALL=(ALL:ALL) ALL
      
    • 変更後

      # Allow members of group sudo to execute any command
      %sudo   ALL=(ALL:ALL) NOPASSWD: ALL
      
  4. ディレクトリを英語化

    $ LANG=C xdg-user-dirs-gtk-update
    
  5. VirtualBox Guest Additionsのインストール

    • Virtual BoxのデバイスからGuest AdditionsCDイメージの挿入を選択し実行
  6. LocalへのSSH接続するときにパスワード不要にする

     $ ssh-keygen -t rsa
     $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
     $ chmod og-wx ~/.ssh/authorized_keys 
    
  7. 最終的なボックスのサイズの最小化

    • 仮想ハードディスクをゼロで埋め,ゼロで埋まったファイルを削除する
    • 下位のディスクのフラグメンテーションの問題が解決され,後で行う圧縮の効率が上がる

      $ sudo dd if=/dev/zero of=/EMPTY bs=1M 
      $ sudo rm -f /EMPTY
      
  8. その他メモ

    • insecure private keyの設定は必要ないっぽい

vagrant boxの作成

  • ここからはWindows上で行う
  • パッケージ化
    • baseにはVirtual Boxで指定した名前をいれる

      vagrant package --base ubuntu1604_base --output ubuntu1604_base.box
      

マシンの作成

  1. boxを追加する

    vagrant box add --name ubuntu1604 ubuntu1604_base.box
    
  2. Vagrantfileの作成

    vagrant init ubuntu1604
    
  3. Vagrantfileの編集

    • private_keyを使ったssh接続ができないので,パスワードで接続できるようにする
    • 1度接続できれば鍵が自動で生成されるっぽい

      config.ssh.username = 'vagrant'
      config.ssh.password = 'vagrant'
      
  4. 起動

    vagrant up
    

参考