前の記事では、Vagrant の BOXファイルをネットからダウンロードして仮想環境を作成したので、今回は BOXファイルを作成し、仮想環境を構築します。

目次

必要なOSのISOファイルのダウンロード

今回はCentOS7環境を作るのでCentOS7のISOファイルをダウンロードします。
https://www.centos.org/download/

VirtualBoxで仮想マシンを作成

VirtualBoxで新規に仮想マシンを作成します。
仮想マシン名:centos7_dev(判別できるような名前にする)
TypeはLinux
バージョンはRed Hat (64bit)
下記の値は、作りたいものによります
メモリは1024MB。
ファイルタイプはVDI、可変サイズにして、容量を20GBくらい。
開発用ならこのくらいの容量でいけると思うんだけど人それぞれかな

OSインストール

作成した仮想マシンの設定で、ストレージのCD/DVDの項目の対象ドライブにOSのisoを割り当てる。
VirtualBoxのマネージャーから作成した仮想マシンのアイコンをクリックし、上部の設定ボタンをクリックする。
ストレージの中にある光学ドライブにisoをマウントする。
仮想マシンを起動するとOSのインストールが始まる。
インストール完了後各種設定を行う。
とりあえずアップデート

# yum update

ホスト側からsshでログインする(必要ならば)

この設定はあとで元に戻す必要があります。
VirtualBox上でコマンド入力するのは操作性が悪くめんどいんでこの設定を行い、Tera Termなどでその後の設定を行っています。

  1. 仮想マシンの設定を開く。
  2. ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開。
  3. 下部に表示される「ポートフォワーディング」ボタンを押してメニューを表示。
  4. 項目を新規追加。ホストポートに2222、ゲストポートに22を入力。他はそのままにしてOKボタンを押す。
  5. 設定画面のOKボタンを押す。
  6. 設定が完了したら Tera Term などでインストール時に設定したrootアカウントなどでログインする。
    IPアドレスはローカルマシン上にあるものとなるんで「127.0.0.1:2222」

    Vagrantユーザの作成と設定

    SSH接続するためのvagrantユーザーの登録を行う。

    # useradd -m vagrant
    # passwd vagrant

    パスワードは本家のドキュメントに従い、「vagrant」にしています

    sshの設定

    仮想マシンにログインし、ssh接続に必要な公開鍵を登録する。

    # mkdir /home/vagrant/.ssh
    # chmod 700 /home/vagrant/.ssh
    # cd /home/vagrant/.ssh
    # curl -k -L -o authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
    # chmod 600 /home/vagrant/.ssh/authorized_keys
    # chown -R vagrant.vagrant /home/vagrant/.ssh

    sudoの設定

    vagrantユーザーがパスワードなしでsudoを実行できるようにし、TTYなしで実行できるようにrequirettyを無効にする。

    # visudo
    …
    # TTYなしで実行できるように下記の行をコメントアウト
    #Defaults    requiretty
    …
    # sudoコマンドをパスワードなしで実行できるように下記をrootについて書いてある下あたりに追加
    vagrant ALL=(ALL)       NOPASSWD: ALL

    vagrantユーザになって、確認する。

    # su - vagrant
    $ sudo ls /root

    各種無効化

    開発環境なのでselinuxは無効化。

    # vi /etc/sysconfig/selinux
    
    # disabledに変更
    SELINUX=disabled

    iptablesの無効化

    # service iptables stop
    # service ip6tables stop
    
    # chkconfig iptables off
    # chkconfig ip6tables off

    VirtualBox Guest Additionsのインストール

    仮想マシン(VirtualBox VM)のメニューのDevicesからInsert Guest Additions CD image …を選択する
    そして、それをマウントしてCD内のコマンドを実行する。

    # mkdir /media/cdrom
    # mount -r /dev/cdrom /media/cdrom
    # sh /media/cdrom/VBoxLinuxAdditions.run
    # umount /media/cdrom

    最後に、仮想マシン(VirtualBox VM)のメニューのDevicesからCD/DVD Devicesを選択し、Remove disk from virtual driveを選択してGuest Additions CD imageを取り出す。

    アップデート

    VirtualBoxが更新されて最新版をインストールすると仮想マシンの「VirtualBox Guest Additions」のアップデートも必要になります。
    そのときは、上記のインストール方法を行えばアップデートできます。

    アンインストール方法

    /opt/VBoxGuestAdditions-<バージョン番号>/uninstall.sh

    上記ファイルをroot権限で実行

    BOX作成のための最適化

    # yum clean all

    MACアドレスとのマッピングを無効化する

    自分だけで使う場合には配布することはないのでこの作業は不要ですが、やっておけば誰かにBOXファイルを配布して起動したときにエラーがでません。
    最初、このことがわからずに、開発チーム内で起動するとエラーがでてなんでやってことになりました・・・・

    # ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules

    OS シャットダウン

    # shutdown -h now

    NATのポートフォワーディング設定の削除

    NATのポートフォワーディング設定をしている場合は設定情報を削除する

    1. 仮想マシンの設定を開く
    2. ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開。
    3. 下部に表示される「ポートフォワーディング」ボタンを押してメニューを表示。
    4. 作成した項目を選択してDelキーを押して削除。その後下部のOKボタンを押す。
    5. 設定画面のOKボタンを押す。

    以上でBOXの作成準備が完了

    Vagrant BOXファイルの作成

    コマンドプロンプトから、VagrantコマンドでBOXを作成する。「centos7_dev」はバーチャルボックスで作成した仮想マシン名。
    実行パスにBOXファイルが作成されるので任意の場所にコマンドで移動しておいた方がよい

    > cd 任意のパス
    > vagrant package --base centos7_dev

    コマンドを実行すると、VirtualBoxからエクスポートされて、実行パス上に「package.box」ファイルが作成されます。

    Vagrant BOX に登録

    できあがった、「package.box」をVagrant BOXに追加します。

    > vagrant box add --name vg_centos7_dev package.box

    確認

    > vagrant box list
    vg_centos7_dev (virtulebox, 0)

    仮想マシンを起動

    新たに作成したBOXで仮想マシンを起動します。
    vagrantファイルの作成

    > vagrant init vg_centos7_dev

    vagrant init のあとにBOX名をいれることで、vagrantファイルの
    config.vm.box = “base”が
    config.vm.box = “vg_centos7_dev” となって作成されます。
    起動

    > vagrant up

    sshでログイン

    自分で作成したVagrant環境にsshでログインできるか確認してみます。
    「Git Bash」ショートカットからsshクライアントを起動する。
    vagrantfileのあるディレクトリに「cd」で移動。

    cd d:\vagrant
    移動後、SSHでログイン
    vagrant ssh
    パスワードは不要です。
    rootユーザーへ切り替える
    sudo su

    これで自前の Vagrant BOX 作成は完了です。
    自前でOSのインストールから行っているので Tera Term などですぐにログインもできます。
    vagrantファイルのネットワーク設定を変更していない場合は
    127.0.0.1:2222 へアクセスすればrootアカウントでログインできます。

    Vagrant Box の削除

    不要になったVagrant BOX を削除するには下記のコマンドで行います。

    vagrant box remove [Vagrant box名]

    Vagrant で作った仮想マシンから Box ファイルを作りなおす

    apacheをインストールするとか、yum updateしたあとに仮想マシンから新たにboxを作成するとかのときに
    vagrantファイルのあるパスから下記のコマンドを実行すると package.box ファイルができあがります。

    > vagrant package

    Vagrant Box の保存先を変更する

    Windows環境では、登録した Vagrant Boxファイルの保存先は、Cドライブの以下のパスに保存される。

    C:\Users\ユーザー名\.vagrant.d

    Vagrant Box の保存先を任意の場所に変更する。

    1. 「VAGRANT_HOME」を環境変数として登録する。環境変数の値を保存したいパスにする。
    2. コントロールパネル→プログラムと機能→Vagrantから右メニューで修復を行う。
    3. Windowsの再起動

    Windowsの場合は、OSの再起動をしないとパスの変更が反映されないので再起動を必ずすること。

カテゴリー: Vagrant