Vagrant 笔记
文章目录
简介
Create and configure lightweight, reproducible, and portable development environments.
来自官网首页描述
Vagrant 是一个虚拟机管理工具。可以实现快速的虚拟机镜像分发和使用。适用于快速分发、同步开发环境。
图灵社区 : 阅读 : 使用Vagrant(零)——为什么要使用Vagrant
版本
使用的版本是日期 2017-01-01 各官方网站上的正式版本:
- macOS 10.12.2
- Vagrant 1.9.1
- VirtualBox 5.1.12
- CentOS 7.3 1611
安装
Vagrant
Vagrant 本体需要首先安装,访问 Download - Vagrant by HashiCorp 根据平台下载对应的安装包安装即可。
VirtualBox
VirtualBox 是免费、跨平台且 Vagrant 内置支持的虚拟机软件,所以建议使用。
访问 Downloads – Oracle VM VirtualBox 根据平台下载对应版本。
注意:因为 Vagrant 与 VirtualBox 可能会有兼容性问题,建议使用 Vagrant 推荐的可靠工作的版本 VirtualBox 5.0.10。
使用以下命令安装:
|
|
VirtualBox 5.0.10 创建的 CentOS 7.3 虚拟机安装 VirtualBox Guest Additions
后无法使用 共享文件夹
功能,是因为内核升级导致。
如果使用 CentOS 7.3 等有新版本 Linux 内核的,则需要安装新版本的 VirtualBox,如 5.1.12 版本 Downloads – Oracle VM VirtualBox。
创建镜像 Box
网上的很多教程都是介绍如何从官网下载镜像使用,但实际上存在一些问题:
- 下载速度太慢:由于官方镜像库网站在美国,连接下载速度较慢,而镜像文件又太大,即便是精简版本也是 300M+。
- 完整性问题:我们并不知道下载的镜像里有没有包含需要的包,如果没有下载后还需要再次安装。
- 安全性问题:因为无法验证发布者的身份,无法知道镜像中有没有“加料”。
- 没有需要的镜像:有可能我们使用的是特定版本的系统,有可能使用的系统太过小众,总之,镜像市场中没有。
所以大多数时候我们需要从零开始自定义镜像,因为可以自行选择原始镜像的版本,可以完全控制镜像内容。
下载操作系统镜像
在本文中演示使用的是 CentOS,你可以根据自己的需要选用其他系统。
CentOS 7.3 1611 Download CentOS
创建虚拟机
按照 VirtualBox 正常流程创建虚拟机即可,这里只说需要设置的关键参数:
- 虚拟硬盘容量设置为最大的
2TB
、存储方式为动态分配
,占用空间较小,且方便未来升级;虚拟硬盘文件类型为VDI
以保证最佳的兼容性。 - 关闭用不到的设备,如声卡、USB。
- 开启网卡2,同时设置为桥接模式。这样网卡1用于本机 NAT 端口映射直接连接,网卡2用于获得局域网的 DHCP 地址,方便其他人访问。
其他参数如内存大小、CPU 数量可以在 Vagrant 中设置。
安装操作系统
挂载下载的操作系统镜像,开启虚拟机安装。
安装步骤:
- 启动后选择安装,语言默认。
SYSTEM
>INSTALLATION DESTINATION
>DONE
。SYSTEM
>NETWORK & HOST NAME
>Ethernet
> 启用 此处需要两个网卡都启用 >DONE
。Begin Installation
Root Password
> 密码:vagrant
User Creation
> 用户:vagrant
密码:vagrant
配置
登录到虚拟机上配置
- 选择虚拟机的网络配置,在默认的 NAT 网卡1上添加端口映射
2222
=>22
- 在宿主机中使用 SSH 登录到虚拟机里:
ssh -p 2222 root@127.0.0.1
密码:vagrant
时间
设置时区:timedatectl set-timezone Asia/Shanghai
How To Change Timezone on a CentOS 6 and 7
sudo 时无需密码
命令行运行 visudo
,往文件的最末尾加上
|
|
或者也可以编辑 /etc/sudoers
|
|
安装 VirtualBox Guest Additions
共享文件夹
功能依赖此软件。
在 VirtualBox 菜单中选择 Devices
> Insert VirtualBox Guest Additions
然后在虚拟机中执行:
|
|
Install Virtual Box Guest Additions CentOS | Zwiegnet Blog
注意:如果使用 yum install kernel-devel
安装内核开发包的话,执行 /mnt/VBoxLinuxAdditions.run
会提示
|
|
是因为安装的版本不同:
yum install kernel-devel
安装的是3.10.0-514.2.2.el7
版本。yum install -y kernel-devel-3.10.0-514.el7.x86_64
安装的是3.10.0-514.el7
版本。
提示:dotless-de/vagrant-vbguest: A Vagrant plugin to keep your VirtualBox Guest Additions up to date 这个 Vagrant 插件用于保证 VirtualBox Guest Additions 一直是最新的。该插件会在虚拟机内核升级之后重新安装 VirtualBox Guest Additions。
开启 SSH 服务
配置 Vagrant 默认 SSH 公钥
|
|
注意:使用 curl -o
命令无法下载 Vagrant 公钥,无错误提示,但文件未下载成功,可能是 curl 对 HTTPS 支持不太好。
安装 SSH Server
CentOS 7.3 已自带此包,可以跳过安装:
|
|
使用 vi /etc/ssh/sshd_config
修改配置文件:
#PubkeyAuthentication yes
>PubkeyAuthentication yes
#UseDNS yes
>UseDNS no
或者使用命令替换
|
|
重启 SSH 服务:
|
|
安装软件
普通的软件可以直接通过 yum
安装,如 vim
、tmux
等等:
|
|
Git 编译安装可以参考:How To Install Git on CentOS 7 | DigitalOcean
打包 Box
到宿主机下使用以下命令打包:
|
|
VirtualMatchineName
是创建虚拟机时指定的名字,PackageName.box
是最终打出的包的名字。
使用
添加虚拟机模板镜像
|
|
初始化
|
|
配置
此时可以根据需要修改 Vagrantfile
文件来修改配置。可以修改的内容包括显示在 VirtualBox 中的名字、CPU 数量、内存大小等等。
Configuration - VirtualBox Provider - Vagrant by HashiCorp
Vagrantfile
示例:
|
|
启动
使用以下命令启动并连接:
|
|
重新打包
可以在 Vagrant 启动的虚拟机中安装软件、更新软件版本等等。 如果要分发给其他人,可以再次打包,此时不需要镜像的原始版本,Vagrant 可以将当前使用的虚拟机再次打包。
|
|