攻略 - 自建 Red Hat 企业级系统 Vagrant Box
前段时间做了一个大学的项目,因为对安全性要求比较高,该学校的服务器都是用的 Red Hat Enterprise Linux 系统。
Homestead 自带的是 Ubuntu 系统,虽然可以用来开发,不过为了使 本地和线上的环境差异最小化,就内部做了一个 Red Hat 的 Vagrant Box,下面分享下制作流程:
注册账户
Red Hat 的企业级系统是收费的,但是 developer 的版本是免费的,先去官网注册一个账户并下载开发者版本(DVD iso):https://developers.redhat.com/products/rhe..., 最新的版本是 7.5.0,我当时使用的是 7.3.0。
安装 RHEL
先检查下 virtual box,下载最新的版本和 Extension Pack。
接着就要根据官方文档安装系统了:https://developers.redhat.com/products/rhe... (没找到中文的),如果有在 virtual box 里安装过 Linux 系统的会比较容易上手,不过官方文档还是非常详细的,一步步根据步骤来即可(只需要完成步骤二),简单概括如下:
- 选择64位的系统,配置内存,创建虚拟硬盘。
- 允许主机和虚拟机之间的 copy-paste、drag-drop,配置 CPU,导入之前下载的 iso 文件,共享文件夹可以跳过。
- 正式安装系统:设置语言和键盘;
注意 Software Selection,请选择 minimal install,因为我们配置服务器,不需要 GUI 界面
;激活以太网;关闭 kdump 释放内存;设置 root 用户密码等。
仓库配置
系统创建后,SSH 登录为 root 用户,去注册 RHEL subscription-manager:
su -
subscription-manager register (会提示你输入第一步注册的 developer 帐户和密码)
subscription-manager attach
然后验证可以连接到 Red Hat 软件仓库:
subscription-manager repos --list-enabled
再激活额外的软件仓库,这样你就可以安装来自 RPMs 和 RHSCL 的软件:
subscription-manager repos --enable rhel-server-rhscl-7-rpms
subscription-manager repos --enable rhel-7-server-optional-rpms
yum -y update
接着安装一些 packages:
yum install -y openssh wget gcc vim
yum groupinstall 'Development Tools' (这一步是后面安装 Virtualbox Guest Addition 所必须的)
用户配置
接下来我们配置 vagrant 用户,因为密码一般也是设置成 vagrant,所以我们需要先修改密码的需求,Red Hat 默认的密码最小长度是 8,这里我们修改成 5:
打开 /etc/pam.d/system-auth 文件,添加 "minlen = 5" 到 password requisite 行的末端。
添加用户:
sudo useradd vagrant
sudo passwd vagrant (忽略警告:密码包含用户名)
sudo visudo -f /etc/sudoers.d/vagrant,添加 vagrant ALL=(ALL) NOPASSWD:ALL
reboot
这时我们重启了服务器,然后用 vagrant 用户重新 SSH 登录,并执行以下所有的操作
。
为了能让 vagrant 用户免密码登入,需要配置 insecure ssh keypair:
mkdir .ssh
chmod 0700 .ssh
cd .ssh/
wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O authorized_keys
chmod 0600 authorized_keys
接着允许 wheel 组的用户免密码运行 sudo 命令:
sudo visudo
修改 '%wheel ALL=(ALL) ALL' 成 '%wheel ALL=(ALL) NOPASSWD: ALL'
Virtualbox Guest Additions 配置
这个安装还是有必要的,有以下几点好处:
- 不再需要用 host key 在主机和虚拟机之间切换
- 可以在主机和虚拟机之间复制粘贴
- 帮助设置共享文件夹
- 任意修改 VM 的窗口大小
wget http://download.virtualbox.org/virtualbox/5.2.18/VBoxGuestAdditions_5.2.18.iso
sudo mkdir /media/VBoxGuestAdditions
sudo mount -o loop,ro VBoxGuestAdditions_5.2.18.iso /media/VBoxGuestAdditions/
sudo sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run
rm VBoxGuestAdditions_5.2.18.iso
sudo umount /media/VBoxGuestAdditions
sudo rmdir /media/VBoxGuestAdditions
配置基本到此结束,可以关闭服务器:sudo shutdown -r now。
导出 VM 成 Vagrant Box
以下的 RedHat7 是 virtualbox 里你起的 vm 的名字,该命令会最终导出 rhel.box:
vagrant rhel --base RedHat7
这样一个基本的 vagrant box 就创建完成了,把这个 box 分享给其他的团队成员,就不需要每个人都去配置开发环境了,他们都可以添加这个新的 box 到 vagrant:
vagrant box add --name rhel7 rhel.box
额外
当然,其实开发环境配置还没有结束,以上只是创建了 vagrant box,接着还需要配置 Vagrantfile 和 bash script 去安装常用的开发软件。
在 homestead 问世之前,我们也用 vagrant,基本都是自己配置的,java 的项目也用,不过有了 homestead 之后,大部分项目都用 homestead 做开发了(有时也用 docker)。
本作品采用《CC 协议》,转载必须注明作者和本文链接