最近はDockerを使うことも多くなり、vagrantの出番もめっきり減りました。
それでも、まだまだVagrantを使っています。
利用者が減ったのでしょうか、vagrantbox.esに”CentOS7.2-1511”のboxが見当たらなかったので、久しぶりに自前で作りました。
忘備録を兼ねてメモしておきます。
CentOS 7.2-1511 boxの作成
作業環境
- macOS X El Capitan
- VitualBox 5.0.26
- Vagrant 1.8.5
CentOS 7(1511) DVDファイル
Download CentOS Linux ISO imagesより、CentOS-7-x86_64-Minimal-1511.isoをダウンロード。
Oracle VirtualBox 5.0.26 r108826
ステップ1)CentOS 仮想マシン作成
- 名前:CentOS7-1511
- タイプ:Linux
バージョン:Red Hat (64-bit)
2048MB(2GB)
VDIディスク作成
可変サイズ
オーディオ無効化
USBポート無効化
ポートフォワーディングルール
ステップ2)Vagrant 関連設定
2-1)ssh設定
# SSH ディレクトリの作成と設定
$ mkdir /home/vagrant/.ssh
$ chmod 700 /home/vagrant/.ssh
# vagrant で公開されている Insecure Keypair(安全でないキーペア) のダウンロード
# 今回は開発用のため、こちらのキーペアを利用します。
# -k:SSL証明書の警告を無視、-L:リダイレクト先に再接続、-o:ファイル名を指定して保存
$ cd /home/vagrant/.ssh
$ curl -k -L -o authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
# ダウンロードした公開鍵の権限設定
$ chmod 600 /home/vagrant/.ssh/authorized_keys
$ chown -R vagrant:wheel /home/vagrant/.ssh
2-2)sudo設定
$ visudo
# tty 接続設定
# Defaults requiretty
Defaults !requiretty
#
%wheel ALL=(ALL) NOPASSWD:ALL
2-3)selinux無効化
# 設定ファイル編集
$ sudo sed -i s/SELINUX=enforcing/SELINUX=disabled/ /etc/sysconfig/selinux
$ getenforce
Disabled
2-4)リポジトリ追加
# epel リポジトリを追加
$ sudo yum install epel-release
2-5)パッケージのアップデート
# パッケージアップデート
$ sudo yum update
2-6)開発パッケージインストール
# 開発パッケージインストール
$ sudo yum groupinstall "Development tools"
# wgetインストール
$ sudo yum -y install wget
2-7)Guest Additionsのインストール
# CD イメージをマウントするディレクトリを作成します。
$ mkdir /media/cdrom
# CD イメージをマウントします
$ mount -r /dev/cdrom /media/cdrom
# マウントしたイメージファイルを確認します。
$ ls -l /media/cdrom
# VirtualBox Guest Additionsをインストールします。
$ sh /media/cdrom/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
....
# CD イメージをアンマウントします。
$ umount /media/cdrom
# アンマウントを確認します()
$ ls -l /media/cdrom
2-8)ネットワーク個別設定の削除
個別指定のMACアドレスとUUIDを削除します。
# ネットワーク設定ファイル
/etc/sysconfig/network-scripts/ifcfg-enp0s3
#削除
HWADDR=********
UUID=********
2-9)ネットワーク・ポートフォワーディング削除
ステップ3)boxの作成
vagrant package --base /home/vagrant/VirtualBox\ VMs/CentOS7-1151/CentOS7-1151.vbox --output CentOS7-1511.box
==> /home/vagrant/VirtualBox VMs/CentOS7-1151/CentOS7-1151.vbox: Exporting VM...
==> /home/vagrant/VirtualBox VMs/CentOS7-1151/CentOS7-1151.vbox: Compressing package to: /home/vagrant/CentOS7-1511.box
動作確認
$ vagrant box add centos72-1511 CentOS7-1511.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos72-1511' (v0) for provider:
box: Unpacking necessary files from: file:///home/vagrant/vagrant/CentOS7-1511.box
==> box: Successfully added box 'centos72-1511' (v0) for 'virtualbox'!
$ vagrant box list
centos72-1511 (virtualbox, 0)
centos7min (virtualbox, 0)
$ vagrant init centos72-1511
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 up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos72-1511'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vagrant72-1511_default_1470549717182_52496
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> 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: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => /export/home/vagrant/vagrant72-1511
==> default: Running provisioner: shell...
default: Running: inline script
==> default: 読み込んだプラグイン:fastestmirror
==> default: Loading mirror speeds from cached hostfile
==> default: * base: ftp.iij.ad.jp
==> default: * epel: ftp.kddilabs.jp
==> default: * extras: ftp.iij.ad.jp
==> default: * updates: ftp.iij.ad.jp
==> default: No packages marked for update
うまくいくと、Vagrantfileの最後まで流れます。
default: Warning: Authentication failure.
SSH関係の設定を忘れると・・・こうなります。
忘れたのは:
- .ssh/authorized_keysを入れ忘れ
- .sshのファイルモード(0700)を忘れ
- /etc/sudoersのrequirettyを!requirettyに忘れ
結局SSH関係で4回boxを作り直しました。
$ vagrant ssh
Last login: Sun Aug 7 20:36:04 2016
[vagrant@localhost ~]$ hostname
localhost.localdomain
以上で、boxファイルを作成できました。