创建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デバイス
Usb.png
Audio.png

制作安装盘。

    • 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管理器,在设置中选择存储,然后从存储树中选择控制器,并添加硬盘。

iso.png

在安装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命令后可以正常启动并成功登录,这样就完成了。

广告
将在 10 秒后关闭
bannerAds