Help us understand the problem. What is going on with this article?

vagrant + CentOS7で開発環境を作る

More than 5 years have passed since last update.

まえがき

CentOS7のvagrant boxはネットワークがおかしい

vagrant環境でローカルに開発環境を立ち上げることも珍しくない昨今。ホスティング各社のVPSにもCentOS7が出揃ってきているので開発環境もCentOS7にしようとvagrant boxを検索。

ググってトップに出てくるのはVagrantbox.es。しかも上から2番めにCentOS7のboxが載っている(2015-06-30現在)。

CentOS6の時には何も気にせずboxから起動していて特に問題なかったのだが、CentOS7のboxを設定して起動すると、networkが起動失敗している。

さらにググってvagrantにパッチを当てなければいけないという記事が多いので、vStone/vagrant-centos7_fixのパッチを当ててみた。

パッチだめじゃん

ググった時から、記事のvagrantのバージョンが古いことはわかっていた。

1.6.4では問題があり、1.6.5では解消されていることも、自分のMacにインストールされているvagrantが1.7.2であることも、実はわかっていたのです。もちろん自分の問題にしているネットワーク関連の問題も解消しないことも。

でも、なんか、淡い期待で入れたパッチも効果はなし。ま、「解消された」と書いてあるんだからそうでしょう。

いっそCentOS7のvagrant boxを作ってみる

vagrantで立ち上げているCentOS7のネットワーク周りをそれなりにいじくってみたのだが、CentOS7に慣れていないのと、vagrantをそんなにしっかり勉強していないのが相まって全くわからない。
特にCentOS7は6からネットワーク周りが見た目けっこう変わっている。

VirtualBoxで普通にCentOS7立ち上げて作業すればいいじゃん、と思った。しかし、vagrantでの作業はみんなが勧めるんだから、きっとスゴいはずだ。スゴさが全くわかっていないけど、でも、きっとスゴいんだ。と自分を騙してvagrant boxを作成してみることにした。

VirtualBoxにCemtOS7を構築する

まずは、VirtualBoxにCentOS7を構築する。Web開発環境なので、とりあえず最小構成で問題ない。CentOS-7-x86_64-Minimal-1503-01.isoをダウンロード。場所は本家のcentos.orgが良いと思う。

VirtualBox4.3.26では、いきなり新規作成。centos7とか、それらしい名前を付けると勝手にタイプとバージョンを選んでくれる。くれぐれも名前を先に入力する。あとは適当に進んで一気に仮想領域を作ってしまう。

すると、電源オフの仮想環境(まだ領域だけしかない)ができるので、左のペインで選択し設定を押す。立ち上がった設定のストレージでコントローラ:IDEにディスク追加。ディスクに+マークが付いているのをクリック。ディスクを選択のボタンを押し、先ほどのCentOS-7-x86_64-Minimal-1503-01.isoを選択して起動!

ま、vagrant扱う人であれば、CentOS7のインストールくらいできすはず、少なくともググればできるはず。ということで、インストール自体は割愛。
インストールはGUIなので非常に簡単。だと思う、個人的には。インストールに日本語も選べる。英語キーボードを使っている人は少し注意が必要だけど最悪、USBで日本語キーボードつなげばいいでしょう。

まず最初に確認すべきは、vagrant boxで立ち上げた際におかしかったnetwork。

# systemctl status network

ちゃんと起動していることを確認。
本当は

# systemctl status network.service

とか打たないといけないのかもしれない。

余談だが、CentOS7はサービスの確認、起動停止のコマンドが変わっているので要注意。とはいえ、serviceと打ってもコマンドを変換してくれる親切ぶり。きっと最初だけだと思うけど。その他、ifconfigがなかったりするが、これはまぁ、随分前から非推奨のコマンドだった気がする。

vagrant boxを作るための準備。

yum update

# yum update
# yum install gcc kernel-devel perl bzip2
# reboot

そういえば、shutdown -r nowとかってまだあるのか確認したら、ちゃんと再起動しました。。

ユーザ作成

hao's work log: CentOS7.0をvagrant用にbox化するメモあたりが参考になる。

vagrantでは起動時に、いろいろな設定を行うことができるのだがその際にゲストOSにログインするユーザが必要なので作成する。アカウントはvagrantでパスワードもvagrant。いわゆるJoe Account。

パスワードなしでsudoができるようにvisudoでsudoersを編集。

# visudo
sudoers
...
vagrant ALL=(ALL)       NOPASSWD:ALL
...

さらに、vagrantでVirtualBOX起動後に鍵認証できるように鍵を設定する。

# su - vagrant
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ curl -L -o ~/.ssh/authorized_keys  https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub
$ chmod 600 ~/.ssh/authorized_keys

grubの設定変更

yumでカーネルがアップデートされると、grubでどのカーネルから起動するか確認される。CentOS6の時には聞かれたっけ?記憶に無い。多分なかったような…。で、多少でも起動が遅くなってしまうので待ち時間を0に修正する。
なお、旧カーネルで起動しないよう注意する。

/ets/default/grub
GRUB_DEFAULT=1
GRUB_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT=0
...

GRUB_DEFAULTは、起動したいOSにが何番目にあるかの数字で、0から始まっている。
ほかに、起動したいOSのラベルを書いてもいいらしいがこちらは未検証。

変更した設定を反映。

$sudo grub-mkconfig -o /boot/grub/grub.cfg

起動時にメニューが表示されなくなればとりあえずOK。

ネットワーク周りの設定を消しておく

とりあえず、VirtualBox上でパブリックネットワークとプライベートネットワークの構築を試してみて、networkが無事起動していることを確認。

そして、この確認の時に設定された動作済みのネットワーク設定があると、vagrant box化した時にnetworkがこけてしまう。vagrantは自力でネットワーク設定をする(らしい)ので、設定がコンフリクトする。
少なくともifcfg-enp0s3とかifcfg-enp0s8とかは削除する。退避でもいい。

さらに、udevルールも削除しておく。

# rm /etc/udev/rules.d/70-persistent-ipoib.rules

VirtualBox Guest Additionsのインストール

hao's work log: CentOS7.0をvagrant用にbox化するメモ
やはりこちらの記事が参考になる。
作業はVirtualBOX側での作業と仮想環境での作業が必要。

VuetualBOXで、メニューからDevicesをクリックし、Insert Guest Additions CD imageを選択。
あとは、仮想環境側でインストールを行うのだが、この時にyum updateした時にカーネルがアップデートされていてかつ、GRUB2の設定でデフォルトの起動OSバージョンがupdateされたものに書き換わっていない場合にはエラーが出る。エラーメッセージが親切に出るのでその他のエラーでもメッセージを確認しながら行えば問題ないはず。

vagrant boxの作成

こんどはホスト側での作業で新規に作成した仮想環境をvagrant用に保存するようなイメージ。

$ vagrant package --base CentOS7.0 --output vagrant.box
==> CentOS7.0: Exporting VM...
==> CentOS7.0: Compressing package to: /Path/to/VirtualBox VMs/CentOS7.0/vagrant.box

--baseの後は仮想環境の名前によって異なります。

vagrantで起動してみる

あとは、普通にネット上に公開されているboxを登録して起動するのとほぼ同じでvagrant init後にvagrant upでCentOS7が起動できるはず。

あとがき

なんか、足りない気がするので後で追検証してみる。

AkyndKnight
Web application creator.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした