Edited at

VagrantのBaseBox(VirtualBox)を自作する

More than 5 years have passed since last update.


VagrantのBaseBox(VirtualBox)の自作


ホストOSの設定


  • BIOS設定でIntel VT-xを有効化しておく。


VirtualBoxのインストール


  • VirtualBoxおよびVirtualBox Extension Packをダウンロードしてインストールする



  • VirtualBox Extension Packは[ファイル]->[環境設定]->[機能拡張]にインストールする


Vagrantのインストール


BaseBoxスペック

項目
設定値

OS
CentOS 6.5 x86_64

CPU
1CPU

Memory
640MB

HDD
14GB

NIC1
HostOnly


VirtualBox設定


  • 一般


    • 基本


      • centos65x64-base






  • システム


    • マザーボード


      • ■ I/O APICを有効化

      • □ ハードウェアクロックをUTCにする



    • アクセラレーション


      • ■ VT-x/AMD-Vを有効化





  • オーディオ


    • □ オーディオを有効化



  • アダプター1


    • ■ ネットワークアダプターを有効化


      • ホストオンリーアダプター






OSインストール

項目
設定値

言語設定
Japanase(日本語)

キーボード設定
日本語

ホスト名
centos65x64.base.example.com

ネットワーク設定
■自動接続する

地域設定
□システムクロックでUTCを使用

rootパスワード
vagrant

ソフトウェアセット

Basic Server → 今すぐカスタマイズ


今すぐカスタマイズ

変更点のみ(□:除外/■:追加)


  • ベースシステム


    • □ ディレクトリ接続クライアント

    • □ 大規模システムのパフォーマンス



  • サーバー


    • ■ システム管理ツール



  • デスクトップ


    • ■ X Window System

    • ■ グラフィカル管理ツール

    • ■ デスクトップ

    • ■ フォント

    • ■ 汎用デスクトップ(GNOMEデスクトップ)



  • アプリケーション


    • ■ インターネットブラウザ




仮想マシン設定


  • UTCを無効化(/etc/sysconfig/clock


/etc/sysconfig/clock

 ZONE="Asia/Tokyo"

+UTC="false"


SELinuxの無効化(/etc/selinux/config


/etc/selinux/config

 #     enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
-SELINUX=enforcing
+SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.


不要サービスの自動起動停止



  • NetworkManagerkdumpiptablesip6tablesを停止して後はお好みで


自動起動停止サービス

NetworkManager

acpid
auditd
bluetooth
cpuspeed
cups
firstboot
httpd
ip6tables
iptables
irqbalance
kdump
mdmonitor
netconsole
netfs
nfs
nfslock
ntpd
ntpdate
postfix
psacct
quota_nld
rdisc
rngd
rpcbind
rpcgssd
saslauthd
smartd
spice-vdagentd
sysstat
wdaemon

-NetworkManager         0:off   1:off   2:on    3:on    4:on    5:on    6:off

+NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off
abrt-ccpp 0:off 1:off 2:off 3:on 4:off 5:on 6:off
abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
-acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
+acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
-auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
+auditd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
autofs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off
-bluetooth 0:off 1:off 2:off 3:on 4:on 5:on 6:off
-cpuspeed 0:off 1:on 2:on 3:on 4:on 5:on 6:off
+bluetooth 0:off 1:off 2:off 3:off 4:off 5:off 6:off
+cpuspeed 0:off 1:off 2:off 3:off 4:off 5:off 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-cups 0:off 1:off 2:on 3:on 4:on 5:on 6:off
+cups 0:off 1:off 2:off 3:off 4:off 5:off 6:off
dnsmasq 0:off 1:off 2:off 3:off 4:off 5:off 6:off
firstboot 0:off 1:off 2:off 3:off 4:off 5:off 6:off
haldaemon 0:off 1:off 2:off 3:on 4:on 5:on 6:off
htcacheclean 0:off 1:off 2:off 3:off 4:off 5:off 6:off
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
-ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-irqbalance 0:off 1:off 2:off 3:on 4:on 5:on 6:off
+ip6tables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
+iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
+irqbalance 0:off 1:off 2:off 3:off 4:off 5:off 6:off
kdump 0:off 1:off 2:off 3:off 4:off 5:off 6:off
lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off
mcelogd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
-mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off
+mdmonitor 0:off 1:off 2:off 3:off 4:off 5:off 6:off
messagebus 0:off 1:off 2:on 3:on 4:on 5:on 6:off
netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off
-netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off
+netfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off
nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off
-nfslock 0:off 1:off 2:off 3:on 4:on 5:on 6:off
+nfslock 0:off 1:off 2:off 3:off 4:off 5:off 6:off
ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off
portreserve 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
+postfix 0:off 1:off 2:off 3:off 4:off 5:off 6:off
psacct 0:off 1:off 2:off 3:off 4:off 5:off 6:off
quota_nld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off
restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rngd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
-rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-rpcgssd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
+rpcbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off
+rpcgssd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rpcsvcgssd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
smartd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
-spice-vdagentd 0:off 1:off 2:off 3:off 4:off 5:on 6:off
+spice-vdagentd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
-sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
+sysstat 0:off 1:off 2:off 3:off 4:off 5:off 6:off
udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
wdaemon 0:off 1:off 2:off 3:off 4:off 5:off 6:off
winbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off


リモートホスト名を確認しないようにする(/etc/ssh/sshd_config


/etc/ssh/sshd_config

-#UseDNS yes

+UseDNS no


IPv6の無効化(/etc/sysctl.conf/etc/hosts


/etc/sysctl.conf

@@ -23,9 +23,9 @@

net.ipv4.tcp_syncookies = 1

# Disable netfilter on bridges.
-net.bridge.bridge-nf-call-ip6tables = 0
-net.bridge.bridge-nf-call-iptables = 0
-net.bridge.bridge-nf-call-arptables = 0
+#net.bridge.bridge-nf-call-ip6tables = 0
+#net.bridge.bridge-nf-call-iptables = 0
+#net.bridge.bridge-nf-call-arptables = 0

# Controls the default maxmimum size of a mesage queue
kernel.msgmnb = 65536
@@ -38,3 +38,6 @@

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
+
+net.ipv6.conf.all.disable_ipv6 = 1
+net.ipv6.conf.default.disable_ipv6 = 1



/etc/hosts

 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

-::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
+#::1 localhost localhost.localdomain localhost6 localhost6.localdomain6


MACアドレスとNICの対応付けの無効化


  • MACアドレス情報が保存されないようにする

# ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules

# ll /etc/udev/rules.d/70-persistent-net.rules
lrwxrwxrwx 1 root root 9 8月 20 23:21 2014 /etc/udev/rules.d/70-persistent-net.rules -> /dev/null
#


  • NICをMACアドレスの代わりにPCIアドレスで管理する

# ethtool -i eth0

driver: e1000
version: 7.3.21-k8-NAPI
firmware-version:
bus-info: 0000:00:03.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no



  • /etc/udev/rules.d/65-eth.rulesを新規作成してbus-infoethXを対応付ける


/etc/udev/rules.d/65-eth.rules

ACTION=="add", KERNEL=="eth*", ID=="0000:00:03.0", DRIVERS=="?*", ATTR{type}=="1", NAME="eth0", OPTIONS="last_rule"




  • HWADDRUUIDNM_CONTROLLEDを無効化する


/etc/sysconfig/network-scripts/ifcfg-eth0

@@ -1,10 +1,10 @@

DEVICE=eth0
TYPE=Ethernet
-UUID=204122e2-2b9b-4d79-9606-1e8402fd612a
+#UUID=204122e2-2b9b-4d79-9606-1e8402fd612a
ONBOOT=yes
-NM_CONTROLLED=yes
+NM_CONTROLLED=no
BOOTPROTO=dhcp
-HWADDR=08:00:27:5B:73:10
+#HWADDR=08:00:27:69:F5:0C
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes


DVD用リポジトリを作成する

# mkdir -p /mnt/cdrom


/etc/yum.repos.d/CentOS-dvd.repo

# To use this repo, put in your DVD and use it with the other repos too:

# yum --enablerepo=c6-media [command]
#
# or for ONLY the media repo, do this:
#
# yum --disablerepo=\* --enablerepo=c6-media [command]

[CentOS-dvd]
name=CentOS-6.5 - x86_64 - DVD
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-6



VirtualBox Guest Additionsをインストールする


  • 前提パッケージをインストールする


    • OSディスク(DVD)をマウント



# mount /dev/cdrom /mnt/cdrom/

mount: ブロックデバイス /dev/sr0 は書き込み禁止です、読込み専用でマウントします
#
# yum --disablerepo=\* --enablerepo=CentOS-dvd install gcc kernel-devel
Loaded plugins: fastestmirror, priorities, refresh-packagekit, security
Loading mirror speeds from cached hostfile
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package gcc.x86_64 0:4.4.7-4.el6 will be installed
--> Processing Dependency: cpp = 4.4.7-4.el6 for package: gcc-4.4.7-4.el6.x86_64
--> Processing Dependency: cloog-ppl >= 0.15 for package: gcc-4.4.7-4.el6.x86_64
---> Package kernel-devel.x86_64 0:2.6.32-431.el6 will be installed
--> Running transaction check
---> Package cloog-ppl.x86_64 0:0.15.7-1.2.el6 will be installed
--> Processing Dependency: libppl_c.so.2()(64bit) for package: cloog-ppl-0.15.7-1.2.el6.x86_64
--> Processing Dependency: libppl.so.7()(64bit) for package: cloog-ppl-0.15.7-1.2.el6.x86_64
---> Package cpp.x86_64 0:4.4.7-4.el6 will be installed
--> Processing Dependency: libmpfr.so.1()(64bit) for package: cpp-4.4.7-4.el6.x86_64
--> Running transaction check
---> Package mpfr.x86_64 0:2.4.1-6.el6 will be installed
---> Package ppl.x86_64 0:0.10.2-11.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================
Package Arch Version Repository Size
====================================================================================
Installing:
gcc x86_64 4.4.7-4.el6 centos-dvd 10 M
kernel-devel x86_64 2.6.32-431.el6 centos-dvd 8.7 M
Installing for dependencies:
cloog-ppl x86_64 0.15.7-1.2.el6 centos-dvd 93 k
cpp x86_64 4.4.7-4.el6 centos-dvd 3.7 M
mpfr x86_64 2.4.1-6.el6 centos-dvd 157 k
ppl x86_64 0.10.2-11.el6 centos-dvd 1.3 M

Transaction Summary
====================================================================================
Install 6 Package(s)

Total download size: 24 M
Installed size: 57 M
Is this ok [y/N]: y
Downloading Packages:
------------------------------------------------------------------------------------
Total 113 MB/s | 24 MB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : ppl-0.10.2-11.el6.x86_64 1/6
Installing : cloog-ppl-0.15.7-1.2.el6.x86_64 2/6
Installing : mpfr-2.4.1-6.el6.x86_64 3/6
Installing : cpp-4.4.7-4.el6.x86_64 4/6
Installing : gcc-4.4.7-4.el6.x86_64 5/6
Installing : kernel-devel-2.6.32-431.el6.x86_64 6/6
Verifying : cpp-4.4.7-4.el6.x86_64 1/6
Verifying : mpfr-2.4.1-6.el6.x86_64 2/6
Verifying : kernel-devel-2.6.32-431.el6.x86_64 3/6
Verifying : gcc-4.4.7-4.el6.x86_64 4/6
Verifying : ppl-0.10.2-11.el6.x86_64 5/6
Verifying : cloog-ppl-0.15.7-1.2.el6.x86_64 6/6

Installed:
gcc.x86_64 0:4.4.7-4.el6 kernel-devel.x86_64 0:2.6.32-431.el6

Dependency Installed:
cloog-ppl.x86_64 0:0.15.7-1.2.el6 cpp.x86_64 0:4.4.7-4.el6
mpfr.x86_64 0:2.4.1-6.el6 ppl.x86_64 0:0.10.2-11.el6

Complete!


  • VirtualBox Guest Additionsをインストールする


    • 環境変数KERN_DIRにカーネルのパスを設定

    • Guest AdditionsのCDをマウント



# export KERN_DIR=/usr/src/kernels/`uname -r`

# mount /dev/cdrom /mnt/cdrom
# cd /mnt/cdrom/
# ./VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.12 Guest Additions for Linux............
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules [ OK ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module [ OK ]
Building the shared folder support module [ OK ]
Building the OpenGL support module [ OK ]
Doing non-kernel setup of the Guest Additions [ OK ]
Starting the VirtualBox Guest Additions [ OK ]
Installing the Window System drivers
Installing X.Org Server 1.13 modules [ OK ]
Setting up the Window System to use the Guest Additions [ OK ]
You may need to restart the hal service and the Window System (or just restart
the guest system) to enable the Guest Additions.

Installing graphics libraries and desktop services componen[ OK ]


  • バージョン確認

# VBoxControl --version

4.3.12r93733
# VBoxService --version
4.3.12r93733


vagrantユーザの作成


  • パスワードはvagrant

# groupadd -g 5000 vagrant

# groupadd -g 5001 admin
# useradd -g vagrant -G admin -u 5000 vagrant
# passwd vagrant
ユーザー vagrant のパスワードを変更。
新しいパスワード:
よくないパスワード: 辞書の単語に基づいています
よくないパスワード: 簡単すぎます
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
# id vagrant
uid=5000(vagrant) gid=5000(vagrant) 所属グループ=5000(vagrant),5001(admin)


パスワードなしでsudoできるようにする


/etc/sudoers

@@ -53,7 +53,7 @@

# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
# You have to run "ssh -t hostname sudo <cmd>".
#
-Defaults requiretty
+#Defaults requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
@@ -116,3 +116,7 @@

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
+
+vagrant ALL=(ALL) ALL
+%admin ALL=(ALL) NOPASSWD:ALL
+Defaults env_keep += "SSH_AUTH_SOCK"



公開鍵を設置する

# mkdir /home/vagrant/.ssh

# chmod 0700 /home/vagrant/.ssh
# curl -L -o authorized_keys https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub
# chmod 0600 /home/vagrant/.ssh/authorized_keys
# chown -R vagrant:vagrant /home/vagrant/.ssh


カスタマイズ(お好みで)


vimのカラースキーマをSolarizedに


~/.bashrc


  • LS_COLORSにSolarized

  • lessカラー化

  • grepカラー化

  • デバッグプロンプト


~/.bashrc

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Customize - Add alias

alias vi='vim'
vim_version=$(vim --version | head -1 | sed 's/^.*\ \([0-9]\)\.\([0-9]\)\ .*$/\1\2/')
alias lessc="/usr/share/vim/vim${vim_version}/macros/less.sh"

# Customize - Debug Prompt

export PS4='+ (${BASH_SOURCE}:${LINENO}): ${FUNCNAME:+$FUNCNAME(): }'

# Customize - Environment Variable

export EDITOR="vim"
export GREP_OPTIONS="--binary-files=without-match --color=auto"

# Customize - Add LS_COLORS

LS_COLORS='no=00;38;5;244:rs=0:di=00;38;5;33:ln=00;38;5;37:mh=00:pi=48;5;230;38;5;136;01:so=48;5;230;38;5;136;01:do=48;5;230;38;5;136;01:bd=48;5;230;38;5;244;01:cd=48;5;230;38;5;244;01:or=48;5;235;38;5;160:su=48;5;160;38;5;230:sg=48;5;136;38;5;230:ca=30;41:tw=48;5;64;38;5;230:ow=48;5;235;38;5;33:st=48;5;33;38;5;230:ex=00;38;5;64:*.tar=00;38;5;61:*.tgz=00;38;5;61:*.arj=00;38;5;61:*.taz=00;38;5;61:*.lzh=00;38;5;61:*.lzma=00;38;5;61:*.tlz=00;38;5;61:*.txz=00;38;5;61:*.zip=00;38;5;61:*.z=00;38;5;61:*.Z=00;38;5;61:*.dz=00;38;5;61:*.gz=00;38;5;61:*.lz=00;38;5;61:*.xz=00;38;5;61:*.bz2=00;38;5;61:*.bz=00;38;5;61:*.tbz=00;38;5;61:*.tbz2=00;38;5;61:*.tz=00;38;5;61:*.deb=00;38;5;61:*.rpm=00;38;5;61:*.jar=00;38;5;61:*.rar=00;38;5;61:*.ace=00;38;5;61:*.zoo=00;38;5;61:*.cpio=00;38;5;61:*.7z=00;38;5;61:*.rz=00;38;5;61:*.apk=00;38;5;61:*.gem=00;38;5;61:*.jpg=00;38;5;136:*.JPG=00;38;5;136:*.jpeg=00;38;5;136:*.gif=00;38;5;136:*.bmp=00;38;5;136:*.pbm=00;38;5;136:*.pgm=00;38;5;136:*.ppm=00;38;5;136:*.tga=00;38;5;136:*.xbm=00;38;5;136:*.xpm=00;38;5;136:*.tif=00;38;5;136:*.tiff=00;38;5;136:*.png=00;38;5;136:*.svg=00;38;5;136:*.svgz=00;38;5;136:*.mng=00;38;5;136:*.pcx=00;38;5;136:*.dl=00;38;5;136:*.xcf=00;38;5;136:*.xwd=00;38;5;136:*.yuv=00;38;5;136:*.cgm=00;38;5;136:*.emf=00;38;5;136:*.eps=00;38;5;136:*.CR2=00;38;5;136:*.ico=00;38;5;136:*.tex=00;38;5;245:*.rdf=00;38;5;245:*.owl=00;38;5;245:*.n3=00;38;5;245:*.ttl=00;38;5;245:*.nt=00;38;5;245:*.torrent=00;38;5;245:*.xml=00;38;5;245:*Makefile=00;38;5;245:*Rakefile=00;38;5;245:*build.xml=00;38;5;245:*rc=00;38;5;245:*1=00;38;5;245:*.nfo=00;38;5;245:*README=00;38;5;245:*README.txt=00;38;5;245:*readme.txt=00;38;5;245:*.md=00;38;5;245:*README.markdown=00;38;5;245:*.ini=00;38;5;245:*.yml=00;38;5;245:*.cfg=00;38;5;245:*.conf=00;38;5;245:*.c=00;38;5;245:*.cpp=00;38;5;245:*.cc=00;38;5;245:*.log=00;38;5;240:*.bak=00;38;5;240:*.aux=00;38;5;240:*.lof=00;38;5;240:*.lol=00;38;5;240:*.lot=00;38;5;240:*.out=00;38;5;240:*.toc=00;38;5;240:*.bbl=00;38;5;240:*.blg=00;38;5;240:*~=00;38;5;240:*#=00;38;5;240:*.part=00;38;5;240:*.incomplete=00;38;5;240:*.swp=00;38;5;240:*.tmp=00;38;5;240:*.temp=00;38;5;240:*.o=00;38;5;240:*.pyc=00;38;5;240:*.class=00;38;5;240:*.cache=00;38;5;240:*.aac=00;38;5;166:*.au=00;38;5;166:*.flac=00;38;5;166:*.mid=00;38;5;166:*.midi=00;38;5;166:*.mka=00;38;5;166:*.mp3=00;38;5;166:*.mpc=00;38;5;166:*.ogg=00;38;5;166:*.ra=00;38;5;166:*.wav=00;38;5;166:*.m4a=00;38;5;166:*.axa=00;38;5;166:*.oga=00;38;5;166:*.spx=00;38;5;166:*.xspf=00;38;5;166:*.mov=00;38;5;166:*.mpg=00;38;5;166:*.mpeg=00;38;5;166:*.m2v=00;38;5;166:*.mkv=00;38;5;166:*.ogm=00;38;5;166:*.mp4=00;38;5;166:*.m4v=00;38;5;166:*.mp4v=00;38;5;166:*.vob=00;38;5;166:*.qt=00;38;5;166:*.nuv=00;38;5;166:*.wmv=00;38;5;166:*.asf=00;38;5;166:*.rm=00;38;5;166:*.rmvb=00;38;5;166:*.flc=00;38;5;166:*.avi=00;38;5;166:*.fli=00;38;5;166:*.flv=00;38;5;166:*.gl=00;38;5;166:*.m2ts=00;38;5;166:*.divx=00;38;5;166:*.webm=00;38;5;166:*.axv=00;38;5;166:*.anx=00;38;5;166:*.ogv=00;38;5;166:*.ogx=00;38;5;166:'
export LS_COLORS

if [ -f ~/.dircolors ]; then
if
type dircolors > /dev/null 2>&1; then
eval $(dircolors ~/.dircolors)
elif type gdircolors > /dev/null 2>&1; then
eval $(gdircolors ~/.dircolors)
fi
fi

# Source global definitions

if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi



不要データの削除


  • /var/tmpの配下削除

# rm -r /var/tmp/*


  • DHCPリソース情報を削除する

# rm -rf /var/lib/dhcp/*


  • yumキャッシュのクリア

# yum clean all

Loaded plugins: fastestmirror, refresh-packagekit, security
Cleaning repos: CentOS-dvd base extras updates
Cleaning up Everything
Cleaning up list of fastest mirrors


  • 未使用領域のゼロフィル

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

# rm -f /EMPTY


  • コマンド履歴の削除

# sudo -u vagrant cat /dev/null >~/.bash_history

# cat /dev/null >~/.bash_history


BaseBoxの作成


  • 仮想マシンをシャットダウンして、BaseBoxを作成する

  • ホストOS上で以降のコマンドを実行する


    • コマンドを実行したディレクトリ直下に作成されるので、事前にcdしておく




構文

vagrant package --base <vboxファイル>



コマンドプロンプト

> cd /d "N:\development\binary\Vagrant\BaseBox\CentOS65x64"

> vagrant package --output "centos65x64-base.box" --base "E:\VirtualBox-VMs\centos65x64
-base\centos65x64-base.vbox"
==> E:\VirtualBox-VMs\centos65x64-base\centos65x64-base.vbox: Exporting VM...
==> E:\VirtualBox-VMs\centos65x64-base\centos65x64-base.vbox: Compressing package to: N:/development/binary/Vagrant/BaseBox/CentOS65x64/centos65x64-base.box


BaseBoxをVagrantに登録


構文

vagrant box add <BaseBox登録名> <BaseBoxファイル>



コマンドプロンプト

> vagrant box add my-centos-6.5-x86_64-base "N:\development\binary\Vagrant\BaseBox\Cent

OS65x64\centos65x64-base.box"
==> box: Adding box 'my-centos-6.5-x86_64-base' (v0) for provider:
box: Downloading: file://N:/development/binary/Vagrant/BaseBox/CentOS65x64/centos65x64-base.box
box: Progress: 100% (Rate: 791M/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'my-centos-6.5-x86_64-base' (v0) for 'virtualbox'!


  • 登録されていることを確認


コマンドプロンプト

> vagrant box list

my-centos-6.5-x86_64-base (virtualbox, 0)


Vagrantの初期化


  • カレントフォルダに設定ファイル(Vagrantfile)を作成する


構文

vagrant init <box名>



コマンドプロンプト

> cd /d E:\Vagrant-Machines

> mkdir myCentOS65x64-test01
> cd myCentOS65x64-test01
> vagrant init my-centos-6.5-x86_64-base
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.


Vagrantによる仮想マシンの起動



  • Vagrantfileがあるディレクトリ上でvagrant upコマンドを実行することで仮想マシンが起動する


構文

vagrant up



コマンドプロンプト

> vagrant up

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'my-centos-6.5-x86_64-base'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: myCentOS65x64-test01
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Checking for host entries
==> default: Setting hostname...
==> default: Mounting shared folders...
default: /vagrant => E:/Vagrant-Machines/myCentOS65x64-test01


Vagrantfile

# -*- mode: ruby -*-

# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# All Vagrant configuration is done here. The most common configuration
# options are documented and commented below. For a complete reference,
# please see the online documentation at vagrantup.com.

# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "my-centos-6.5-x86_64-base"

# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080

# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"

# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"

config.vm.hostname = "test01.centos65x64.example.com"

# If true, then any SSH connections made will enable agent forwarding.
# Default value: false
# config.ssh.forward_agent = true

# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"

# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Don't boot with headless mode
# vb.gui = true
#
# # Use VBoxManage to customize the VM. For example to change memory:
# vb.customize ["modifyvm", :id, "--memory", "1024"]
# end
#
# View the documentation for the provider you're using for more
# information on available options.

config.vm.provider "virtualbox" do |vb|
vb.name = "myCentOS65x64-test01"
vb.customize ["modifyvm", :id, "--rtcuseutc", "off"]
vb.customize ["modifyvm", :id, "--memory", "512"]
end

# Enable provisioning with CFEngine. CFEngine Community packages are
# automatically installed. For example, configure the host as a
# policy server and optionally a policy file to run:
#
# config.vm.provision "cfengine" do |cf|
# cf.am_policy_hub = true
# # cf.run_file = "motd.cf"
# end
#
# You can also configure and bootstrap a client to an existing
# policy server:
#
# config.vm.provision "cfengine" do |cf|
# cf.policy_server_address = "10.0.2.15"
# end

# Enable provisioning with Puppet stand alone. Puppet manifests
# are contained in a directory path relative to this Vagrantfile.
# You will need to create the manifests directory and a manifest in
# the file default.pp in the manifests_path directory.
#
# config.vm.provision "puppet" do |puppet|
# puppet.manifests_path = "manifests"
# puppet.manifest_file = "site.pp"
# end

# Enable provisioning with chef solo, specifying a cookbooks path, roles
# path, and data_bags path (all relative to this Vagrantfile), and adding
# some recipes and/or roles.
#
# config.vm.provision "chef_solo" do |chef|
# chef.cookbooks_path = "../my-recipes/cookbooks"
# chef.roles_path = "../my-recipes/roles"
# chef.data_bags_path = "../my-recipes/data_bags"
# chef.add_recipe "mysql"
# chef.add_role "web"
#
# # You may also specify custom JSON attributes:
# chef.json = { mysql_password: "foo" }
# end

# Enable provisioning with chef server, specifying the chef server URL,
# and the path to the validation key (relative to this Vagrantfile).
#
# The Opscode Platform uses HTTPS. Substitute your organization for
# ORGNAME in the URL and validation key.
#
# If you have your own Chef Server, use the appropriate URL, which may be
# HTTP instead of HTTPS depending on your configuration. Also change the
# validation key to validation.pem.
#
# config.vm.provision "chef_client" do |chef|
# chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
# chef.validation_key_path = "ORGNAME-validator.pem"
# end
#
# If you're using the Opscode platform, your validator client is
# ORGNAME-validator, replacing ORGNAME with your organization name.
#
# If you have your own Chef Server, the default validation client name is
# chef-validator, unless you changed the configuration.
#
# chef.validation_client_name = "ORGNAME-validator"
end



Vagrantによる仮想マシンの停止



  • Vagrantfileがあるディレクトリ上でvagrant haltコマンドを実行することで仮想マシンが停止する


構文

vagrant halt



コマンドプロンプト

> vagrant halt

==> default: Attempting graceful shutdown of VM...
==> default: Removing hosts


Vagrant基本コマンド



  • Vagrantfileがあるディレクトリ上でコマンド実行する

仮想マシンへの操作
コマンド

状態確認
vagrant status

起動
vagrant up

再起動
vagrant reload

停止
vagrant halt

スリープ
vagrant suspend

復帰
vagrant resume

削除
vagrant destroy


仮想マシンへの接続


  • コマンドプロンプトにはsshクライアントがないので、直接接続できない。


コマンドプロンプト

>vagrant ssh

`ssh` executable not found in any directories in the %PATH% variable. Is an
SSH client installed? Try installing Cygwin, MinGW or Git, all of which
contain an SSH client. Or use your favorite SSH client with the following
authentication information shown below:

Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: C:/Users/<ユーザ名>/.vagrant.d/insecure_private_key



  • sshクライアントが入っている場合は、すぐアクセスできる


sshクライアントありターミナル

> vagrant ssh

Last login: Tue Aug 26 22:54:21 2014 from 10.0.2.2
[vagrant@test01 ~]$


  • TeraTermなどのターミナルソフトを用いてアクセスすることができる


    • ホストOSの127.0.0.1:2222にアクセスすることで仮想マシンの:22にポートフォワードされる