ページ

2016年8月7日

CentOS7.2-1511のVagrant box作成

Vagrant

 最近は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ファイルを作成できました。