その他
    ホーム技術発信DoRubyvagrant で簡単に環境をつくる

    vagrant で簡単に環境をつくる

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    はじめまして、bibioです。中途入社のぴちぴちです。

    入社早々開発環境を作ったという流れで、ぎりぎりRubyつながりなvagrantの操作をおさらいします。

    そもそもvagrantって何ですか?

    VirtualBox(VMwareも使えますが確か有償)をコマンドラインから簡単に動作できるようにしたツールです。

    https://www.virtualbox.org/

    https://www.vagrantup.com/

    ホスト環境は Macですが、Windowsでも動きます。

    メリット

    • 設定ファイルは Ruby で記述されている
    • OSがインストールされた仮想イメージが簡単に利用・共有できる
    • chef の検証に便利

    デメリット

    • プラグインの使い方がわかりにくい
    • 初期値のメモリが少ない(512MB)のでコンパイル中にたまに固まる

    キーワード

    boxOSインストール済みの仮想化ファイルprovider仮想ソフトウエアの種類

    前提環境と準備

    今回は VirtualBox を使います。

    はじめに VirtualBox と Vagrant をダウンロードしてインストールします。

    https://www.virtualbox.org/

    https://www.vagrantup.com/

    流れ

    host $ mkdir vagrant; cd vagrant
    host $ vagrant init
    host $ vi Vagrantfile
    host $ vagrant up
    host $ vagrant ssh
    guest > 
    

    基本的にこれだけです。初回の vagrant up で chef/centos-6.5 の

    BOX がダウンロードされるので時間と帯域を消費します。

    また、ダウンロードしたBOXは保存されるので、次回以降 chef/centos-6.5 を

    使う場合は基本的にはダウンロードされません。

    upした段階で VirtualBox をたちあげると仮想マシンが生きていることが確認できます。

    なお、仮想マシンは up 時に BOX から複製されるので、元のBOXは変更されません。

    設定ファイルの編集

    Vagrantfile という設定ファイルを編集することでカスタマイズが可能です。

    最低限必要なオプションは config.vm.box だけ。

    VAGRANTFILE_API_VERSION = "2"
    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
      # CentOS 6.5 を入れる
      config.vm.box = "chef/centos-6.5"
    
      # プライベートネットワーク設定するとホストからアクセス
      config.vm.network "private_network", ip: "192.168.33.10"
    
       # 仮想マシンのカスタマイズ
       config.vm.provider "virtualbox" do |vb|
         vb.gui = false 
        # CPU2コア,メモリ1GBを割り当てる。 ioapic がないとうまく動かないみたい
         vb.customize ["modifyvm", :id, "--memory", "1024", "--cpus", "2", "--ioapic", "on"]
       end
    end
    

    ssh でログイン

    初期値のホストとポートは 127.0.0.1:2222 です。

    秘密鍵は $HOME/.vagrant.d/insecure_private_key です。

    パスワード未設定なので気になったら自分の秘密鍵に変更してください。

    ssh の設定は以下のコマンドで確認できます。

    $ vagrant ssh-config
    Host default
      HostName 127.0.0.1
      User vagrant
      Port 2222
      UserKnownHostsFile /dev/null
      StrictHostKeyChecking no
      PasswordAuthentication no
      IdentityFile /home/bibio/.vagrant.d/insecure_private_key
      IdentitiesOnly yes
      LogLevel FATAL
    

    おまけですが、秘密鍵から公開鍵を作る方法です。

    $ ssh-keygen -y -f .ssh/id_rsa
    

    仮想マシンを停止/サスペンド/削除

    操作もコマンドラインからできます。

    停止
    $ vagrant halt
    
    サスペンド
    $ vagrant suspend
    
    削除

    容量を圧迫するので使わなくなった仮想マシンは削除しましょう。

    $ vagrant destroy
    

    なお、BOX は削除されません。

    さらにBOXの複製や共有もできますが、今回はここまで。