创建VirtualBox的CentOS和VagrantBox
我們將從CentOS的iso檔案中創建Vagrant的Basebox,這是我們日常感謝並且經常使用的工具。
在創建Vagrant的Basebox時,我們會參考Vagrant官方的「創建基礎框架」文件。
前提条件 tí
作業環境是Mac OS X,在事前已經安裝了Vagrant和Virtual Box,並使用homebrew來進行安裝。
-
- Mac OS 10.10.5
-
- VirtualBox 5.0.8
- Vagrant 1.7.4
在VirtualBox中安装CentOS6.7并创建虚拟服务器。
下载ISO文件。
从CentOS官方网站下载操作系统的ISO文件(CentOS-6.7-x86_64-minimal.iso)。
VirtualBox的设备设置
参考公式文件,关闭以下每个设备。
-
- USBデバイス
- Audioデバイス
制作安装盘。
-
- VirtuaBox起動 -> Oracle VM VirtualBoxマネージャー -> 新規
-
- 名前とオペレーティングシステム
名前: centos67_minimal_ja
タイプ: Linux
バージョン: Linux2.6 / 3.x / 4.x (64-bit)
メモリーサイズ 512MB
仮想ハードディスク 8GB、可変のVMDK形式
安装CentOS6.7
在VirtualBox中添加已下载的CentOS 6.7 ISO文件,方法如下:打开Oracle VM VirtualBox管理器,在设置中选择存储,然后从存储树中选择控制器,并添加硬盘。
在安装CentOS时,需要进行以下设置。
-
- 言語設定 Japanese、キーボードjaを選択。
-
- 時刻 Asia/Tokyoを選択。
- rootパスワードは公式ドキュメントにしたがって vagrantを設定。
开机时网络自动启动
将/etc/sysconfig/network-scripts/ifcfg-eth0文件的设定更改为ONBOOG=yes。
- Selinuxをオフにする
[root@localhost sysconfig]# cp -p /etc/sysconfig/selinux /etc/sysconfig/selinux.org
[root@localhost sysconfig]# diff /etc/sysconfig/selinux /etc/sysconfig/selinux.org
7c7
< SELINUX=disabled
---
> SELINUX=enforcing
- Iptablesをオフにする
[root@localhost sysconfig]# /sbin/chkconfig iptables off
[root@localhost sysconfig]# /sbin/chkconfig ip6tables off
公开密钥认证设置
设置公开密钥认证和Vagrant推荐设置。
[root@localhost ~]#打开/etc/ssh/sshd_config
纠正的地方
# diff sshd_config sshd_config.org
48,49c48,49
< PubkeyAuthentication yes
< AuthorizedKeysFile .ssh/authorized_keys
---
> #PubkeyAuthentication yes
> #AuthorizedKeysFile .ssh/authorized_keys
66c66
< PasswordAuthentication no
---
> PasswordAuthentication yes
122c122
< UseDNS no
---
> #UseDNS yes
重新启动sshd
[root@localhost ssh]# /etc/init.d/sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]
创建和配置vagrant用户
- vagrantユーザーを作成する
[root@localhost ~]# useradd vagrant
- vagrantユーザーのsudo設定をする
[root@localhost ~]#运行visudo命令
将Defaults requiretty注释掉,并添加以下内容:
vagrant ALL=(ALL) NOPASSWD: ALL
添加vagrant用户的公钥
使用在公式文档中指定的密钥对。
[root@localhost ~]# su - vagrant
[vagrant@localhost ~]$ mkdir .ssh
[vagrant@localhost ~]$ chmod 700 .ssh
[vagrant@localhost .ssh]$ curl https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub > authorized_keys
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 83013 0 83013 0 0 65489 0 --:--:-- 0:00:01 --:--:-- 129k
[vagrant@localhost .ssh]$ cat vagrant.pub > authorized_keys
[vagrant@localhost .ssh]$ chmod 600 authorized_keys
创建一个盒子
先停止正在运行的虚拟服务器,然后进行封装。
停止虚拟服务器。
[root@localhost ~]#现在关机
将虚拟服务器进行容器化。
$ vagrant package --base centos67_minimal_ja
==> centos67_minimal_ja: Clearing any previously set forwarded ports...
==> centos67_minimal_ja: Exporting VM...
==> centos67_minimal_ja: Compressing package to: /Users/xxxxxx/VirtualBox VMs/package.box
因为 box 已经创建好了,所以需要执行 vagrant box add。
$ vagrant box add package.box --name centos67_minimal_ja
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos67_minimal_ja' (v0) for provider:
box: Unpacking necessary files from: file:///Users/xxxxxxxx/VirtualBox%20VMs/package.box
==> box: Successfully added box 'centos67_minimal_ja' (v0) for 'virtualbox'!
- vagrant boxが追加されていることを確認する
$ vagrant box list
centos67_minimal_ja (virtualbox, 0)
确认添加的Vagrant Box在运行vagrant init / vagrant up命令后可以正常启动并成功登录,这样就完成了。