Posted at

CentOS 7をインストールしてVagrant boxを作る その2

More than 3 years have passed since last update.


前回

CentOS 7をインストールしてVagrant boxを作る その1

CentOS 7をインストールしたところまでやりました。

今回はvagrantユーザの作成、SSHの設定、SELinuxの無効化、boxの作成までをやります。


vagrantユーザの作成

インストール時に作成したrootユーザでログインします。

$ adduser vagrant

$ passwd vagrant # なんでもかまいませんが、無難にvagrantにしました
$ id vagrant
uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant)

続いてvagrantユーザをsudoerにします。

$ visudo

ttyでないsudoコマンドも通せるようにします。

56行目あたりにある次の行をコメントアウトします。

ttyで検索すると良いかと。

# Defaults      requiretty  # コメントアウト

99行目あたりにvagrantの行を付け足します。

97 ## Allow root to run any commands anywhere

98 root ALL=(ALL) ALL
99 vagrant ALL=(ALL) NOPASSWD: ALL # 付け足し

これでvagrantユーザはパスワードを入れることなくsudoを実行できるようになりました。


SSHの設定

SSHの設定にはOpenSSHが必要です。

入っているとは思いますが、一応調べておきます。

$ systemctl status sshd

activeの文字が出れば大丈夫です。

Vagrantの良い点の一つは特に公開鍵とかを考えなくとも

vagrant sshと打つだけでVMに接続できることですが、

その仕組みは、VagrantはVMにSSH接続を試みるときに、

まずあらかじめ生成されたInsecureなKeypairを用いて

SSHを試みるからです。

そのInsecure KeypairはVagrantのGitHubリポジトリで公開されています。

$ mkdir /home/vagrant/.ssh

$ chmod 700 /home/vagrant/.ssh
$ curl -kLo authorized_keys 'https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub'
$ chmod 700 /home/vagrant/.ssh
$ chmod 600 /home/vagrant/.ssh/authorized_keys
$ chown -R vagrant.vagrant /home/vagrant/.ssh


SELinuxの無効化

SELinuxは取り扱いが非常に難しいらしいので無効化します。

$ vi /etc/sysconfig/selinux

# enforcing -> disabled
SELINUX=disabled


VirtualBox Guest Additionsのインストール

ドキュメントはUbuntuを想定してるのでちょっとパスが違ってます。

$ curl -kLo VBoxGuestAdditions_5.0.10.iso 'http://download.virtualbox.org/virtualbox/5.0.10/VBoxGuestAdditions_5.0.10.iso'

$ mkdir -p /mnt/VBoxGuestAdditions
$ mount -r VBoxGuestAdditions_5.0.10.iso /media/VBoxGuestAdditions
$ yum install -y bzip2 gcc gcc-c++ kernel-devel kernel-headers
$ sh /mnt/VBoxGuestAdditions/VBoxLinuxAdditions.run
$ umount /mnt/VBoxGuestAdditions
$ rmdir /mnt/VBoxGuestAdditions


yum updateyum clean

$ yum update

$ yum clean


udevのルールの削除

参考にしたサイトではudevのルールを削除していたりするのですが、

削除対象のファイルを見てみたらコメントしかなかったので削除しません。

その1の方でVirtualBoxの設定でUSBやオーディオを無効化していたのに相当するのかもしれません(わかってない)


フラグメンテーションの解消

フラグメンテーションを解消するために /EMPTY という空のファイルを作って削除しているみたいです。

どうしてこれでフラグメンテーションが解消されるのかはよく分かってません。

$ dd if=/dev/zero of=/EMPTY bs=1M

$ rm -f /EMPTY


boxの作成

ゲスト(CentOS)をシャットダウンし、ホスト(Mac)でboxを作ります。

$ shutdown -h now

# Host (Mac)
$ vagrant package --base <VM_Name> # VirtualBoxのVMの名前を入れます
$ vagrant box add centos71-minimal package.box # centos71-minimalは任意の名前です


できたもの

できたものをAtlasに公開してみました。

この設定で使いたいという方がいたらどうぞ。

(動作保証はできません)

使い方は、

$ vagrant init marmot1123/centos71-minimal

$ vagrant up

です。


参考サイト

公式ドキュメント

以下のサイトに大変お世話になりました。