文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

vagrantのprivate_networkのIP指定でエラーが出る人は今すぐアップデートしましょう

今すぐアップデートを!


f:id:treeapps:20180424102046p:plain

今更ですが、vagrant・chef solo・ansibleあたりを本格的に勉強するため、自前のmacでまずは仮想環境を作るべくvagrantを触っていました。

しかしブリッジ接続でprivate_networkで固定IPを振りたいのですがエラーがでます。

vagrantのバージョン

treemacpro-2:vagrant tree$ vagrant version
Installed Version: 1.6.0

Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.vm.define :node1 do |node|
        node.vm.box = "chef/centos-6.5"
        node.vm.network :forwarded_port, guest: 22, host: 2001, id: "ssh"
        node.vm.network :private_network, ip: "192.168.33.10", error_check: false
    end

    config.vm.define :node2 do |node|
        node.vm.box = "chef/centos-6.5"
        node.vm.network :forwarded_port, guest: 22, host: 2002, id: "ssh"
        node.vm.network :private_network, ip: "192.168.33.11", error_check: false
    end
end

vagrant upのログ

treemacpro-2:vagrant tree$ vagrant up
Bringing machine 'node1' up with 'virtualbox' provider...
Bringing machine 'node2' up with 'virtualbox' provider...
==> node1: Importing base box 'chef/centos-6.5'...
==> node1: Matching MAC address for NAT networking...
==> node1: Checking if box 'chef/centos-6.5' is up to date...
==> node1: Setting the name of the VM: vagrant_node1_1401799926238_18549
==> node1: Clearing any previously set network interfaces...
==> node1: Preparing network interfaces based on configuration...
    node1: Adapter 1: nat
    node1: Adapter 2: hostonly
==> node1: Forwarding ports...
    node1: 22 => 2001 (adapter 1)
==> node1: Booting VM...
==> node1: Waiting for machine to boot. This may take a few minutes...
    node1: SSH address: 127.0.0.1:2001
    node1: SSH username: vagrant
    node1: SSH auth method: private key
    node1: Warning: Connection timeout. Retrying...
    node1: Warning: Connection timeout. Retrying...
==> node1: Machine booted and ready!
==> node1: Checking for guest additions in VM...
==> node1: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

/sbin/ifdown

Stdout from the command:



Stderr from the command:

usage: ifdown <device name>

私はインフラエンジニアでないのでよく解ってませんが、この辺でバグチケットが起票され、パッチが配布されてたりするようですね。

結局・・・

vagrantのバージョンを1.6.0から1.6.3にアップデートしたら嘘のようにエラーがでなくなり、全てが上手く動きました。。


こんな重要なバグはもっと優先度上げて直さんかーい!!

ローカルからsshしてみる

vagrant sshではなく、普通にsshしてみます。

treemacpro-2:cap tree$ ssh vagrant@192.168.33.10
vagrant@192.168.33.10's password:
Last login: Tue Jun  3 15:44:42 2014 from 10.0.2.2
[vagrant@localhost ~]$

普通にsshできました。vagrantへのsshはユーザ名:vagrant、パスワード:vagrant、で接続できます。

ifconfigしてstatic ipが振られた事を確認

[vagrant@localhost ~]$ ifconfig
eth1      Link encap:Ethernet  HWaddr 略
          inet addr:192.168.33.10  Bcast:192.168.33.255  Mask:255.255.255.0
・・・略・・・

ちゃんと割り振られてますね。

現在のvagrantから別のvagrantにsshしてみる

冒頭のVagrantfileでノード1・2と2つの仮想環境を定義しました。
では1から2にsshできるか試してみます。

[vagrant@localhost ~]$ ssh vagrant@192.168.33.11
vagrant@192.168.33.11's password:
Last login: Tue Jun  3 15:52:02 2014 from 192.168.33.10
[vagrant@localhost ~]$

よし、sshできます。

node1にapacheを入れてローカルから参照してみる

apacheのインストールは単純に、

sudo yum install httpd

でインストールします。
では早速httpdを起動し、ローカルのブラウザから起動したapacheが見えるか確認してみます。
f:id:treeapps:20140604010804p:plain

見えましたね!!

雑感

Qiitaにvagrantの記事が沢山あり、嬉々として試してみて私と同じエラーが発生し、ああ面倒臭い・・・もういいや、と諦めていたあなた!!バージョン1.6.3でようやくスッキリ修正されたようなので、これを機にもう一度vagrantを試してみませんか!?


これで勝ちゲー確定じゃん!!


調子にのって会社で色々やって社内ネットワークに干渉してネットワーク部に怒られるんだよなあ・・・良い子の皆はちゃんとネットワーク部に相談してからローカルで仮想環境を構築しましょうね