攻略 - 自建 Red Hat 企業級系統 Vagrant Box

jltxwesley發表於2018-10-03

file
前段時間做了一個大學的專案,因為對安全性要求比較高,該學校的伺服器都是用的 Red Hat Enterprise Linux 系統。

Homestead 自帶的是 Ubuntu 系統,雖然可以用來開發,不過為了使 本地和線上的環境差異最小化,就內部做了一個 Red Hat 的 Vagrant Box,下面分享下製作流程:

註冊賬戶

Red Hat 的企業級系統是收費的,但是 developer 的版本是免費的,先去官網註冊一個賬戶並下載開發者版本(DVD iso):https://developers.redhat.com/products/rhel/download/, 最新的版本是 7.5.0,我當時使用的是 7.3.0。

安裝 RHEL

先檢查下 virtual box,下載最新的版本和 Extension Pack。

接著就要根據官方文件安裝系統了:https://developers.redhat.com/products/rhel/hello-world/#fndtn-virtualbox (沒找到中文的),如果有在 virtual box 裡安裝過 Linux 系統的會比較容易上手,不過官方文件還是非常詳細的,一步步根據步驟來即可(只需要完成步驟二),簡單概括如下:

  1. 選擇64位的系統,配置記憶體,建立虛擬硬碟。
  2. 允許主機和虛擬機器之間的 copy-paste、drag-drop,配置 CPU,匯入之前下載的 iso 檔案,共享資料夾可以跳過。
  3. 正式安裝系統:設定語言和鍵盤; 注意 Software Selection,請選擇 minimal install,因為我們配置伺服器,不需要 GUI 介面;啟用乙太網;關閉 kdump 釋放記憶體;設定 root 使用者密碼等。
    file

倉庫配置

系統建立後,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)。

相關文章