RHCE双满分考试题目细节分享
mb5f9e8b9fa61c3
9.5
62024/11/29
1、考试环境有两台虚拟机node1和node2分别对应练习环境的system1和system2。
2、考试里面的配置信息一定要阅读,比如登陆容器的用户名和密码、登陆虚拟机的用户名和密码等一些在题目里面找不到的关键信息都会记录到配置信息里面。
3、直接ssh连接虚拟机会报错(permission denied),rhel9默认不允许root用户远程登陆。可以这样解决:
第一种方法:登陆到虚拟机,打开配置文件/etc/ssh/sshd_config,找到#PermitRootLogin这一行,改成PermitRootLogin yes,然后systemctl restart sshd重启sshd服务,就可以ssh连接虚拟机
第二种方法:登陆到虚拟机之后,创建一个用户,并设置一个密码。然后,ssh登陆到这个用户之后,再su – root登陆root用户也可以。
4、第一题就是配置node1的网络信息,node2不需要配置网络信息,所以node2不要修改IP地址,域名等信息
5、调试selinux这道题,我记得虚拟机selinux默认就是enforcing状态了,semanage也安装好了,考试时稍微检查一下/etc/selinux/config配置文件中的SELINUX=enforcing这行内容就好了
6、配置NTP这道题,虚拟机已存在一个NTP服务器,然后你自己加上一个,重启chronyd之后,chronyc -n sources检查NTP,就会发现有两个,这是正常的。对了,题目给你的NTP服务器可能是一个IP地址。
7、配置autofs这道题,需要验证的话,要登陆普通用户来验证,触发自动挂载。
8、配置系统用户密码有效期这道题,我当时题目要求配置20天后密码失效,所以看到题目给的信息来设置就好。
9、重置node2节点,考试一开始我就先做这道题的。根据其他同学反馈,在linux哪一行末尾直接加rd.break也可以进入救援模式。我是在这行末尾加console=tty0 rd.break进入救援模式的。后面这种方式,也要知道,一旦考试给你挖坑导致破解不了密码就完了。还有一点,执行mount -oremount,rw /sysroot命令后,会出现一行内容,可能让你觉得这是一个报错,实际是正常的,忽略就行。
10、调整逻辑卷这道题,格式化文件系统是vfat格式,命令是mkfs.vfat,这个工具已经安装了,问题不大。这个工具的软件包名是dosfstools,可以yum -y install dosfstools安装,知道就行。
11、添加交换分区这道题,虚拟机本身就已经要500多M的虚拟内存,然后你自己再添加500多M,最后检查会看到1G的虚拟内存,这是正常的。
12、顺便提一下,修改/etc/sudoers配置文件这道题,要求是用户组可以像root用户那样执行管理员命令且不需要输入密码,需要行首加上%来标识这是一个用户组。如:%gzy ALL=(ALL) NOPASSWD: ALL
13、容器题,有些比较关键信息需要到配置信息里面获取,比如,操作容器题的用户名和密码,登陆容器的用户名和密码,镜像仓库地址等,基本上都在配置信息里面。不过用户名和密码我是在配置信息里面找的,而镜像仓库地址,是到/etc/containers/registries.conf配置文件里面找的。
关于容器题,我了解到有两种题型。
题型一:题目给出一个容器文件的url,我们使用wget把这个容器文件下载下来,然后构建自定义镜像,再运行容器,挂载目录,定义成服务配置文件,设置容器开机启动
题型二:题目给出一个镜像名称(这一步其实需要我们登陆镜像仓库地址,庚老师说的是登陆容器,其实都一样,看各自理解。登陆成功之后拉取镜像),通过这个镜像来运行容器,挂载目录,定义成服务配置文件,设置容器开机启动。
我考试遇到的是题型二,但是两种题型都需要知道怎么处理。
题型一解题:
#创建容器目录,sia用户是我们做容器题的用户
ssh连接sia用户
mkdir watcher
cd watcher
#下载容器文件
wget https://xxxxxxxx/containerfile
#构建自定义镜像,watcher是题目要求要我们构建的镜像
podman build -t watcher .
#用root用户常见两个目录,并且修改文件拥有人和文件所属组。
登陆到root用户
mkdir /opt/test
mkdir /opt/log
chown sia:sia /opt/test /opt/log
#运行容器,挂载目录。ascii2pdf是题目要求我们运行的容器名字
登陆到sia用户
podman run --name ascii2pdf -d -v /opt/test:/opt/incoming:Z -v /opt/log:/opt/outging:Z watcher
#完成上面步骤,需要检查容器是否运行
podman ps
#创建systemd管理文件目录
mkdir ~/.config/systemd/user
cd ~/.config/system/user
#生成服务配置文件
podman generate system --new --files --name ascii2pdf
#停止并删除容器
podman stop ascii2pdf
podman rm ascii2pdf
#启用当前用户管理systemd,考试执行这条命令不会像练习时会报错
loginctl enable-linger
#重新加载用户级别的systemd服务配置文件,启动容器服务并设置开机自启
systemctl --user daemon-reload
systemctl --user enable container-ascii2pdf.service --now
到此容器题已完成,可以重启虚拟机,登陆sia用户,执行podman ps命令查看ascii2pdf容器有没有启动。
题型二解题:
#创建容器目录,sia用户是我们做容器题的用户
ssh连接sia用户
mkdir watcher
cd watcher
#登陆镜像仓库,拉取镜像。镜像仓库不需要端口号,因为/etc/containers/registries.conf配置文件上没写端口号,watcher是题目要求的镜像。登陆镜像仓库的用户名和密码到配置信息里面找。
podman login registry.domain10.example.com --username gls --password glshenshuai
podman pull watcher
#用root用户常见两个目录,并且修改文件所有人和文件所属组。
登陆到root用户
mkdir /opt/test
mkdir /opt/log
chown sia:sia /opt/test /opt/log
#运行容器,挂载目录.。ascii2pdf是题目要求我们运行的容器名字
登陆到sia用户
podman run --name ascii2pdf -d -v /opt/test:/opt/incoming:Z -v /opt/log:/opt/outging:Z watcher
#完成上面步骤,需要检查容器是否运行
podman ps
#创建systemd管理文件目录
mkdir ~/.config/systemd/user
cd ~/.config/system/user
#生成服务配置文件
podman generate system --new --files --name ascii2pdf
#停止并删除容器
podman stop ascii2pdf
podman rm ascii2pdf
#启用当前用户管理systemd,考试执行这条命令不会像练习时会报错
loginctl enable-linger
#重新加载用户级别的systemd服务配置文件,启动容器服务并设置开机自启
systemctl --user daemon-reload
systemctl --user enable container-ascii2pdf.service --now
总结:题型一和题型二的区别仅仅是镜像如何得到,题型一是下载容器文件,然后构建自定义镜像,题型二是登陆镜像仓库,拉取镜像。后面的步骤都是一样的。
1、一定要阅读配置信息,因为上面告诉你如何连接控制节点,例如ssh sar@control,直接复制执行,会提示让你检查公钥指纹,输入yes即可。而不是练习环境那样ssh control连接控制节点,这一点非常重要。
2、所有受管理节点都没有开启firewalld,但是题目没有要求我们开启。有些地区同学反馈firewalld这个模块在考试的时候使用不了,需要ansible.posix.firewalld: 来使用firewalld模块,具体什么原因不太清楚,但是考试其实没有要求开启防火墙。真遇到这种问题的话,可以用ansible.posix.firewalld: ,也可以到受管理节点用firewall-cmd手动打开,甚至不用firewalld模块也可以,这点知道就行。
3、安装和配置ansible。只需要安装ansible-core即可,不要安装rhel-system-roles(第四题会让你安装集合,这个集合包含了系统角色)。这道题需要注意的是collections_paths路径跟我们考试环境给的路径不一样。
题目给出roles_path的路径是/home/sar/ansible/roles,collections_paths的路径是/home/sar/ansible/mycollections。
所以做到这道题时,路径暂时设置如下:
roles_path=/home/sar/ansible/roles
collections_paths=/home/sar/ansible/mycollections
4、配置软件仓库。这道题,编写playbook即可,不需要编写脚本。
5、安装collection。题目先给出一个url,后面给出三个文件名。其实就是这个url里面有三个文件,让我们安装。
#题目给了一个链接,后面给了三个文件名,其中redhat-rhel_system_roles-1.19.3.tar.gz是一个系统角色,如下:
https://classroom/materials/
- redhat-insights-1.0.7.tar. gz
- community-general-5.5.0.tar.gz
- redhat-rhel_system_roles-1.19.3.tar.gz
#编辑collections.yml,我们把文件名放到链接后面即可,内容如下:
collections :
- name: https://classroom/materials/redhat-insights-1.0.7.tar. gz
- name: https://classroom/materials/ community-general-5.5.0.tar.gz
- name: https://classroom/materials/ redhat-rhel_system_roles-1.19.3.tar.gz
#安装collection
ansible-galaxy collection install - r collections.yml
ansible-galaxy collection list #查看collection安装情况
当做完这题之后,我们还需要添加新路径到roles_path
roles_path=/home/greg/ansible/roles:/home/greg/ansible/mycollections/xxxxxxxxxx/redhat/rhel_system_roles/roles/:/usr/share/ansible/roles
我们需要了解这三个路径分别干什么用的。
l /home/greg/ansible/roles
这个路径是第一道题,要求我们设置的。后面题目需要我们安装phpinfo、balancer、apache这三个角色,会安装到这个目录,所以需要我们设置
l /home/greg/ansible/mycollections/xxxxxxxxxx/redhat/rhel_system_roles/roles/
这个目录,是我们安装redhat-rhel_system_roles-1.19.3.tar.gz这个系统角色所在的位置,可以到这个目录用pwd命令显示绝对路径,然后复制过去,其中xxxxxxxxxx/具体名称不记得。
l /usr/share/ansible/roles
这个路径时安装ansible之后,默认就存在的。我们练习环境中安装的系统角色就存放在这个目录。实际上,考试我们只需要用到前两个路径,第三个路径我们并不需要,但我还是加上去了,至少我加上去之后没有扣分。
6、使用系统角色。这道题没有什么难度,关键在于安装collection要没有问题,以及设置roles_path路径也没问题。使用系统角色的方法有如下两种:
- selinux
- redhat.rhel_system_roles.selinux
考试不管使用哪一种都可以,我考试用了第二种,没问题;有些同学考试用了第一种,也没问题。所以,设置好roles_path路径就没问题。
7、管理逻辑卷和管理远程分区,这两道题二选一,我考试遇到的时管理逻辑卷,跟练习环境基本一样。但是管理远程分区有点不同,需要挂载目录,只要理清逻辑,其实也不难。
题目大致如下:
(1) 在vdb上分1500M
(2) 格式化,挂载
(3) 在vdc上分1500M
(4) 格式化,挂载
(5) 如果空间不够,输出错误信息,分800M
(6) 判断vdd是否存在,不存在输出错误信息
对于这道题,我将其分成三部分
第一部分,判断vdd是否存在,不存在输出错误信息,并忽略错误
第二部分,在vdb上创建一个1500M的分区,然后格式化成指定的文件系统,并挂载分区到目录(目录是否需要创建,可以到远程节点看一下)
第三部分,其实就是我们练习环境的block、rescue、always,只不过这一部分针对的是vdc磁盘,按照练习那样做即可
以下是我写的playbook,不保真,仅供参考
---
- name: parted
hosts: banlancers
tasks:
- name: fail not vdd
fail:
msg: "disk not exist"
when: "'vdd' not in ansible_devices"
- name: parted 1500MB on vdb
parted:
device: /dev/vdb
state: present
number: 1
part_end: 1500MiB
- name: mkfs ext4 on 1500vdb
filesystem:
dev: /dev/vdb1
fstype: ext4
- name: mount 1500vdb
mount:
src: /dev/vdb1
path: /newpart
state: mounted
fstype: ext4
- block:
- name: parted 1500 on vdc
parted:
device: /dev/vdc
state: present
number: 1
part_end: 1500MiB
rescue:
- name: error not free
debug:
msg: "insufficient free space"
- name: parted 800M on vdc
parted:
device: /dev/vdc
state: present
number: 1
part_end: 800MiB
when: ansible_devices['vdc'] is defined
always:
- name: get facts
setup:
- name: mkfs ext4 on 800vdc
filesystem:
dev: /dev/vdc1
fstype: ext4
when: ansible_devices['vdc']['partitions']['vdc1'] is defined
- name: mount vdc1
mount:
src: /dev/vdc1
path: /newpart1
fstype: ext4
state: mounted
when: ansible_devices['vdc']['partitions']['vdc1'] is defined
也有其他同学关于这道题playbook写法分享,可以参考https://edu.51cto.com/center/note/story/detail?id=17857&referType=0
8、生成主机文件这道题,需要注意里面有两个空行,我们只需要在第二个空行开始编辑即可。最终输出的内容要与题目给的内容相同。
#题目要求我们生成的文件要与下面内容相同

#通过wget下载的hosts.j2文件和下面图片一样,前面内容已给出,但是还会额外多出两个空行,我们在第二个空行开始编辑就行。

9、生成硬件报告这道题,考试时定义hw_name变量的值一定要与练习的一样,因为题目中下载的/root/hwreport.txt里面是有内容的,做完这道题后,检查的时候,最好把这个文件下载到控制节点,然后跟远程节点的硬件报告比较一下key。
10、批量创建用户这道题,有其他地区学员反馈,使用password_expire_max这个参数会报错,具体什么原因不清楚,我考试不需要设置这个参数,然后题目要求设置常规权限跟特殊权限,如果不理解的话,直接闭眼写mode: "2775"就完事了。
总结:练习环境题目练习好,并且理解了,通过考试还是挺简单的,但是可能会存在一些细节上的不同,特别是下午RHCE的考试,如果直接ssh control连接控制节点做题的话,有没有分数我不敢确定,但是一定要看好题目关键信息,再去做题。

©著作权归作者所有,未经许可不可转载及商用,否则将追究法律责任