転載・引用について

ユーザ用ツール

サイト用ツール


サイドバー

Site Contents Index

転載・引用について

RSS

tweet:2016:0525_01

Vagrant

今更Vagrantを始めることになったので、メモ。 環境はOS-X

  1. HomeBrewを入れる
  2. HomeBrewにCaskも入れる
    • brew install caskroom/cask/brew-cask
  3. VirtualBoxを入れる
    • Caskから入れる場合は brew cask install virtualbox
    • OS-XのPackageとして入れる場合はhttps://www.virtualbox.orgから
  4. Vagrantを入れる
    • brew cask install vagrant
    • brew cask install vagrant-manager
  5. box fileを追加する
  6. Imageの準備
    • vagrant box list でリストを確認
    • vagrant init ubuntu/xenial64 (Ubuntuの場合)
  7. VMの制御
    • 基本は、Vagrant initしたDirで作業すると、VMを意識する必要がなくなる
    • vagrant up
    • vagrant ssh で起動したVMにsshでloginする
      • vagrant ssh-config で起動したVMに読み込まれている設定が見られる
    • vagrant haltでVMを止める
    • vagrant reloadでVMを再起動する
    • vagrant provisionでVMにProvisioningで記述した操作を適用する
      • provisioningに記載された内容は、VM作成後初めてVMを起動する時のみ実行される。

ハマリどころ

原因不明だが1.8.1で出た問題

手元のVagrantは1.8.1で、1.7系では出ていないという話を聞いたが、同一のBoxを元にVMを二つ起動しようつするとVMのVirtualBox上での識別子が被ってしまい、起動できないという症状が出た。

  • 回避には、以下を記載することでしのいだ。
    config.vm.provider "virtualbox" do |vb|
      vb.name = "nginx" # これがVB上の識別子になるので、重複しないよう機器をつけること。
    end

Ubuntu 16.04の問題

Ubuntu 16.04はNICの命名規則が変わっている(15.10以降かららしい) そのため、

  config.vm.define "nginx" do |loop|
    loop.vm.network "private_network", ip: "192.168.1.11", virtualbox__intnet: "intra"
    loop.vm.network "private_network", ip: "192.168.2.11"
    loop.vm.provider "virtualbox" do |vb|
      vb.name = "nginx1"
    end
  end

のような記述をすると、eth0が見つからないと言って大騒ぎする 回避するには、

  config.vm.define "nginx1" do |loop|
    loop.vm.network "forwarded_port", guest: 80, host: 2001
    loop.vm.network "private_network", ip: "192.168.1.11", virtualbox__intnet: "intra", auto_config: false
    loop.vm.network "private_network", ip: "192.168.2.11", auto_config: false
    loop.vm.provider "virtualbox" do |vb|
      vb.name = "nginx1"
    end
    loop.vm.provision 'shell', inline: "/sbin/ifconfig enp0s8 192.168.1.11/24"
    loop.vm.provision 'shell', inline: "/sbin/ifconfig enp0s9 192.168.2.11/24"
  end

のように、network設定でauto_configをfalseに設定し、provisioningで取り急ぎのアドレスを割り当てる。 当然、2回目の起動からはアドレスが設定されなくなるので、システムにアドレス設定を記述する必要がある。

無論、旧来のようにDevice nameをeth*にする方法もあるらしいのだが、試していない

その他

書きかけ

このウェブサイトはクッキーを使用しています。 Webサイトを使用することで、あなたはあなたのコンピュータにクッキーを保存することに同意します。 また、あなたはあなたが私たちのプライバシーポリシーを読んで理解したことを認めます。 同意しない場合はウェブサイトを離れてください。クッキーに関する詳細情報
tweet/2016/0525_01.txt · 最終更新: 2016/05/31 13:53 (外部編集)