操作之前,面要先找一个大的U盘(根据所要配置哪些练习环境而定)制作U盘引导安装工具,我这里准备一个128G的U盘。另外需要从红帽的相关网装上下载如下包:

1* RHCIfoundation-RHEL7-*.icmf                 (manifest file)
2* RHEL-7.x-*-Server-x86_64-dvd1.iso           (RHEL 7.x DVD)
3* foundation-config-7.x-*.rpm                 (student/instructor RPM)
4* foundation0-config-7.x-*.rpm                (instructor RPM)
5* redhat-survey-7*.rpm                        (survey RPM)
6* rhci-foundation-7.x-*.iso                   (RHCI CD-ROM ISO)
7* rht-usb-7.x-*.py                            (USB creator script)
8* ClassroomSetup-7.x-*.txt                    (first day instructions)
9* ClassPrep-7.x-*.txt                         (this document)

一、U盘引导安装的制作

1、文件准备

首先找一台LINUX主机,将所有需要安装的程序需要的虚拟机文件、ISO文件、ICMF文件等收集好,并保存到一个目录里,如下:

RHCI-files
RHCI-files

我将所有的保存在了/content目录下,然后插入U盘(不用挂载),fdisk -l 查看能识别就行。

2、格式化U盘为ext4

通过如下命令格式化U盘为ext4格式:

1# partprobe /dev/sdb
2# mkfs.ext4 /dev/sdb1

上面这步注意,你U盘显示的分区名是什么就写什么,很多U盘识别的是/dev/sdb4,这里就mkfs.ext4 /dev/sdb4 。创建/root/.icrm/config.yml 文件,并在该文件里写下如下内容:

1---
2repository: /root/.icrm/repository
3repository:/content

注意,不要忘了上面的横线。

3、rht-usb格式化U盘

使用上面下载的rht-usb的python脚本格式U盘,如下:

1[root@foundation0 content]# rht-usb-xxxx.py usbformat /dev/sdb1

后面的XXXX是你下载时对应的版本。执行过程中会有Confirm reformatting /dev/sdb1的提示,按y 确认。

二、环境安装

第一个安装的是RHCI 相关的镜像和配置,还是使用rht-usb.py脚本(这里我将脚本重命名了rht-usb,后面都是这样表示),如下:

1# rht-usb  usbadd RHCIfoundation-RHEL71-3.r31619-ILT-7-en_US.icmf

其中icmf 是一个配置文件,安装时会通过该文件找到与该课程相关的其他包和文件。该文件可以直接通过vim 等文本查看命令打开,我这里只取该文件的一部分给大家看下:

 1[root@foundation0 manifests]# pwd
 2/content/manifests
 3[root@foundation0 manifests]# more RHCIfoundation-RHEL71-3.r31619-ILT-7-en_US.icmf
 4---
 5manifest version: 1
 6curriculum:
 7 name: RHCIfoundation
 8 release: 3.r31619
 9 description: RHCI foundation Hypervisor Layer Files
10 technology: RHEL71
11 modality: [ ILT ]
12 generation: 7
13 locale: [ en_US ]
14 publish date: 2015-06-02 16:05:38-04:00
15 publisher: rlocke
16 artifacts:
17 - filename: rhel-server-7.1-x86_64-dvd.iso
18   type: content
19   content type: iso
20   target directory: rhel7.1/x86_64/isos
21   final name: rhel7.1/x86_64/dvd
22   usage: [ classroom ]
23   checksum: 370662c78e36528bbaf3f2b901c29d6f
24 - filename: foundation-config-7.1-3.r31619.noarch.rpm
25   type: content
26   content type: file
27   target directory: rhel7.1/x86_64/extras/Packages
28   usage: [ classroom ]
29   checksum: 190355331d12cf245e83b90abfcca9a5
30……………………省略

写入完成后,我们再以同样的方法通过icmf文件写入其他课程所需要的文件,如下:

1# rht-usb  usbadd RH442-RHEL70-2.r29766-ILT-7-en_US.icmf

比如下,我这里有以下相关红帽的课程环境,就将如下对应的icmf 全部按上面的方法执行一遍:

redhat-rhci-icmf
redhat rhci icmf

所有写完以后,U盘制作就完成了。

三、主机安装部署

在需要安装环境的服务器或pc 插上U盘,选择U盘启动 ---这里实际上也可以能过rhci-foundation-xx.iso文件引导安装的。

foundation0 install
foundation0 install

在boot后面,我们输入“ f0 课程代码 回车 ” 就会开始安装该课程的环境。安装过程和redhat os 安装差不多,仅需要时区和分区项做下选择,即可完成安装。

由于上面的安装我们仅仅部署了其中一门课程的环境,要想将U盘上所有课程的环境部署到一台主机上,也可以的,可以在安装完成进入系统后再安装其他课程,如下:

rht-courseusb
rht-courseusb

注意,U盘插在主机上后,不要挂载,挂载安装课程时会报错。想要安装哪一门,支接执行rht-usb courseusb 课程代码就行了。

四、rht相关指令

上面我们安装的foundation0即是教师机,也是一台学生机。局域网内的其他主机可以通过pxe安装相应的学生练习机。同时红帽本身为了方便练习、难证等,也提供了一套rht相关的指令,非常方便,如下:

1、rht-verify-f0

该命令可以验证foundation0安装的是否有问题:

 1[root@foundation0 ~]# rht-verify-f0
 2Hardware report (compare to Hardware Requirements for course)
 3   CPU Cores: 4  CPU Flags: nx lm vmx ept vpid
 4   Total RAM: 16G  Total disk: 968G
 5   Virtualization enabled
 6Confirm hardware requirements .............  PASS
 7Test for required hostname ................  PASS
 8Test for required packages ................  PASS
 9   Slave interfaces of br0: enp3s0 vnet0
10   Warning: br0 slave (enp3s0) speed detected is 100Mb/s
11   Warning: None of br0 slaves are GigE
12   Slave interfaces of br1: vnet1
13Confirm current network settings ..........  PASS
14Test for active services and sockets ......  PASS
15   Warning: only foundation manifest found
16   CL220-CF31-1.r30561-ILT-7-en_US.icmf
17   CL280-OSE21-1.r27797-ILT-7-en_US.icmf
18   DO280-OSE30-1.r34582-ILT-7-en_US.icmf
19   RH236-RHSTOR30-4.r34927-ILT-7-en_US.icmf
20   RH254-RHEL70-2.r31095-ILT-7-en_US.icmf
21   RH270-RHEL71-1.r30566-ILT-7-en_US.icmf
22   RH318-RHEV35-1.r31286-ILT-7-en_US.icmf
23   RH436-RHEL71-2.r34386-ILT-7-en_US.icmf
24   RH442-RHEL70-2.r29766-ILT-7-en_US.icmf
25   RHCIfoundation-RHEL71-3.r31619-ILT-7-en_US.icmf
26Confirm existence of manifests ............  PASS
27   keyboard --vckeymap=us --xlayouts='us'
28   lang en_US.UTF-8
29   timezone Asia/Shanghai --isUtc
30Confirm locale settings ...................  PASS
31   Current local time: Tue Apr 19 22:31:59 CST 2016
32Correct as needed the local time ..........  PASS
33   foundation0-ose-3.0-1.r34582.x86_64
34   foundation0-rhstor-3.0-1.r30734.x86_64
35   foundation0-rh442-7.0-1.r29766.x86_64
36   foundation0-atomic-7.1-1.r30566.x86_64
37   foundation0-rhev-3.5-1.r31286.x86_64
38   foundation0-rhelha-7.1-1.r34386.x86_64
39   foundation0-cfme-3.1-1.r30535.x86_64
40Test for course packages ..................  PASS
41   RHT_VENUE=ilt
42   RHT_ENROLLMENT=0
43   RHT_ROLE=foundation
44   RHT_COURSE=rh270
45   RHT_TITLE="Managing Containers with Red Hat Enterprise Linux Atomic Host"
46   RHT_VMS="workstation servera serverb serverc serverd "
47   RHT_MAXSTATIONS=20
48   RHT_VM0="classroom "
49   RHT_HVMS=""
50   RHT_VMTREE=atomic7.1/x86_64
51Confirm course settings ...................  PASS
52*** SUMMARY: [PASS=10] [WARNING=2] [FAIL=0] ***

2、rht-setcourse

使用该命令可以方便的在多个环境之间切换,如下:

1[root@foundation0 ~]# rht-setcourse rh270
2Course set to rh270

上面就将练习环境切到了docker这门课程了。

3、rht-pushcourse

给学习机推送练习环境(实际上就是推送对应的虚拟机)

1[root@foundation0 ~]# rht-pushcourse 7
2Preparing to push to foundation7.ilt.example.com...

上面是给7号机推送。

4、rht-vmctl

练习时学生机经常可能会把本机的练习环境里的东西搞的不对,可以通过该命令将练习环境重置。

1[root@foundation0 ~]# rht-vmctl fullreset servera
2[root@foundation0 ~]# rht-vmctl fullreset all

可以重置其中一台,也可以重置所有的。原理说白了就是从教师机上wget qcow2的虚拟机文件,练习环境底层都是基于通过kvm虚拟机的。