一応開発環境
- iMac OS X Yosemite 10.10.5
- VitualBox 5.0.12
- Vagrant 1.8.1
- Centos version 7.2.1511
マシン作成
- Centosのisoをダウンロード
今回は現在最新版の7.2.1511を使用します
リンク先 → Index of /Linux/centos/7/isos/x86_64
軽量化のためMinimalを使用し、最小構成をインストールする
VitualBoxで仮装マシンを作成
name:なんでもおk
type:Linux
version:Red Hat(64-bit)
memory:1024MB
HDD:10GB VDI 可変サイズ
マシンの詳細設定
- オーディオ設定のオーディを無効化
- ポート設定のUSBコントローラーの無効化
OSのインストール
- Install CentOS 7を選択
- 語源は何でもいいですが日本人なら日本語で(。◕ε ◕。)
- インストール先のパーティションをもう一回選択(自分だけ?)
- ネットワークとホスト名で、イーサネット(enpOs3)を起動しておく
- ホスト名も変更しておく(なんでもおk)
- インストール開始をする
- rootユーザのパスワードを決め、ユーザも作成しておく
- rootユーザのパスワード・ユーザのID・パスワードをvagrantで統一しておく
- インストールが終わり再起動を行い、正常起動を確認する
OSの設定
まずは、現在の状態です。
# systemctl --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
auditd.service loaded active running Security Auditing Service
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
getty@tty1.service loaded active running Getty on tty1
● kdump.service loaded failed failed Crash recovery kernel arming
kmod-static-nodes.service loaded active exited Create list of required static device nodes for the current kernel
lvm2-lvmetad.service loaded active running LVM2 metadata daemon
lvm2-monitor.service loaded active exited Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling
lvm2-pvscan@8:2.service loaded active exited LVM2 PV scan on device 8:2
network.service loaded active exited LSB: Bring up/down networking
NetworkManager.service loaded active running Network Manager
polkit.service loaded active running Authorization Manager
postfix.service loaded active running Postfix Mail Transport Agent
rhel-dmesg.service loaded active exited Dump dmesg to /var/log/dmesg
rhel-import-state.service loaded active exited Import network configuration from initramfs
rhel-readonly.service loaded active exited Configure read-only root support
rsyslog.service loaded active running System Logging Service
sshd.service loaded active running OpenSSH server daemon
(中略)
33 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
firewallが入ってないという最初びっくりしました(。◕ω ◕。)
なのにpostfixは入っている。。。謎だな
パッケージのupdate
# yum -y update
firewallのインストール・無効化とpostfixの無効化
入ってないのもアレなので一応を行います
・firewall
# yum -y install firewalld
# systemctl disable firewalld
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 木 2016-01-07 23:31:35 JST;
(以降省略
・postfix
# systemctl stop postfix
# systemctl disable postfix
これでいらないものがなくなりました。
VirtualBox Guest Additionsのインストール
まずは必要なパッケージをインストール
# yum -y groupinstall "Development Tools"
そして、メニューから"Devices"から"Insert Guest Additions CD Images..."を選択
(そういえば自分の英語?)
・CDマウント
# mkdir /media/cdrom
# mount -r /dev/cdrom /media/cdrom
# sh /media/cdrom/VBoxLinuxAdditions.run
・取り出し
# umount /media/cdrom
- 3行目時に失敗してしまった
- kernel-develが入ってなかったみたいです〜
- "Development Tools"で入ってた気がしたけどなかったのかな
SElinuxの無効化
次はFTPなどで使い可能性を考えSElinuxを止めていきます
# vi /etc/selinux/config
のenforcingをdisabledに変更します
SELINUX=enforcing
↓
SELINUX=disabled
SELinuxは再起動しないと設定が反映されません(一時的変更は可能
現在の状態の確認
# getenforce
Enforcing
- enforcing
- SElinux機能、アクセス制御は有効状態
- permissive
- SElinuxは警告をするが、アクセス制御は無効状態
- disabled
- SElinux機能、アクセス制御は無効状態
SELinuxを一時的に有効化するコマンド
# setenforce 0
これを1にすると一時的に無効化することができます
sudoの設定
vagrantユーザがsudoを実行するときにパスワードなしでできるようにします
# visudo
・56行目
Defaults requiretty
↓
# Defaults requiretty
・108行目
%vagrant ALL=(ALL) NOPASSWD: ALL
sshの設定
vagrantユーザがssh接続する際に使う鍵を登録しておく
# mkdir /home/vagrant/.ssh
# chmod 700 /home/vagrant/.ssh
# curl https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub >> /home/vagrant/.ssh/authorized_keys
chmod 600 /home/vagrant/.ssh/authorized_keys
# chown -R vagrant:vagrant /home/vagrant/.ssh
ポートフォワーディング設定の削除
接続用に用意していたポトートフォワーディングを消しておく
boxの最適化
- yumのキャッシュのクリア
# yum clean all
- フラグメンテーションの解消
# dd if=/dev/zero of=/EMPTY bs=1M
# rm -f /EMPTY
シャットダウンを行って下さい(`・ω・´)<もうちょい!
# shutdown -h now
Box作成
いよいよ最後です!!
ようやく箱作りの開始です
まずは仮装マシンからパッケージを作成します
$ vagrant package --base {仮装マシン名} --output {name}.box
$ vagrant package --base centos7 --output centos7.2.1511.box
作業中のディレクリ(カレント・ディレクトリ)にpackageが作成されます
--outputを記入しない場合は、package名は{package.box}になります。気にならない方は書かなくても大丈夫です
作ったパッケージをvagrantに追加します
$ vagrant box add --name {name} {box name}.box
$ vagrant box add --name centos7.2 centos7.2.1511.box
$ vagrant box list
centos7.2 (virtualbox, 0)
まとめ
長々とお付き合いいただきありがとうございました!
今までサーバ作るごとにインストールしてたのがバカみたいに思えてきました(。◕ε ◕。)
開発環境の出し入れが簡単ですし、Vagrantfileから色々できそうなので、
まだまだ興味がつきませんね(`・ω・´)