LoginSignup
6
6

More than 5 years have passed since last update.

Vagrant box 作成

Last updated at Posted at 2016-01-07

一応開発環境

  • 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のインストール

  1. Install CentOS 7を選択
  2. 語源は何でもいいですが日本人なら日本語で(。◕ε ◕。)
  3. インストール先のパーティションをもう一回選択(自分だけ?)
  4. ネットワークとホスト名で、イーサネット(enpOs3)を起動しておく
  5. ホスト名も変更しておく(なんでもおk)
  6. インストール開始をする
  7. rootユーザのパスワードを決め、ユーザも作成しておく
    • rootユーザのパスワード・ユーザのID・パスワードをvagrantで統一しておく
  8. インストールが終わり再起動を行い、正常起動を確認する

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に変更します

7行目
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作成

いよいよ最後です!!
ようやく箱作りの開始です

まずは仮装マシンからパッケージを作成します

package化
$ 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
boxリスト
$ vagrant box list
centos7.2 (virtualbox, 0)

まとめ

長々とお付き合いいただきありがとうございました!

今までサーバ作るごとにインストールしてたのがバカみたいに思えてきました(。◕ε ◕。)

開発環境の出し入れが簡単ですし、Vagrantfileから色々できそうなので、
まだまだ興味がつきませんね(`・ω・´)

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6