vagrantでubuntuの起動が異常に遅い2

vagrantでubuntuの起動が異常に遅い
に引き続き、違う環境でまた起きたのでメモ

今度は、IP固定せず使っていたのですが、GUIモードで起動すると

cloud-init-nonet waiting 120 seconds for a network device

と同じ現象が発生

$ vagrant ssh
$ vi /etc/network/interfaces

#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
#auto eth1
#iface eth1 inet static
#      address 192.168.33.10
#      netmask 255.255.255.0
#VAGRANT-END

と、IP固定にしてないのでeth1のところをコメントアウトすると直りました
(編集するな、って書いてありますが)

vagrant内のrails serverにアクセスできない

vagrantでubuntuを起動、ruby on railsをインストールして

$ rails s

=> Booting WEBrick
=> Rails 4.2.0 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-02-07 05:49:04] INFO  WEBrick 1.3.1
[2015-02-07 05:49:04] INFO  ruby 2.2.0 (2014-12-25) [x86_64-linux]
[2015-02-07 05:49:04] INFO  WEBrick::HTTPServer#start: pid=2359 port=3000

としてサーバー起動

vagrantで固定IP 192.168.33.10 をふって、port 3000でつながるようにしておいたので
http://192.168.33.10:3000/
で、ブラウザにアクセス..がアクセスできない

rails s のコンソールにも反応が無いです
ping 192.168.33.10は通る

rails 2.2からは localhost しかつながらないらしい

$ rails s -b 0.0.0.0
とするとどのアドレスからもつながるようです

これで解決しました

vagrantでubuntuの起動が異常に遅い

vagrant upのときにsshが成功するのがやたら遅いので直してみました
遅くなったのはVagrantfileで固定IPを振ってからだと思います

vagrant は 1.6.5
ubuntu/trusty64のBoxを使っています

まずVagrantFileを修正してGUIモードで確認してみます

$ vim Vagrantfile

 config.vm.provider "virtualbox" do |vb|
    vb.gui = true
end

$ vagrant reload

cloud-init-nonet waiting 120 seconds for a network device

と出て2分もまって、エラーになってる
起動したら

$ vagrant ssh
$ vi /etc/network/interfaces

auto lo
iface lo inet loopback

+ auto eth0
+ iface eth0 inet dhcp

- source /etc/network/interfaces.d/*.cfg
+ # source /etc/network/interfaces.d/*.cfg

( + : 追加行、 – : 削除行)

/etc/network/interfaces.d/eth0.cfg
にdhcpが指定してあるんですが、うまくひけないっぽい

cloud-initのバグらしいです
結構、はまりました

phpで配列の先頭を取得する

phpで配列の先頭を取得できる関数に

array_shift

がありますが、これは配列から要素を抜いてしまいます(破壊的な関数)

$arr = ['first' => 1, 'second' => 2];

$top = array_shift($arr);
var_dump($top);
// int(1)
var_dump($arr);
/*
配列が小さくなった!
array(1) {
  'second' =>
  int(2)
}
*/

破壊せずに取りたかったら

reset

を使いましょう

$arr = ['first' => 1, 'second' => 2];

$top = reset($arr);
var_dump($top);
int(1)
array(2) {
  'first' =>
  int(1)
  'second' =>
  int(2)
}