前回
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 update
とyum 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
です。
参考サイト
以下のサイトに大変お世話になりました。