红帽Linux题目解答

暗香疏影 创作者

针对部分难题解答

RHCSA容器题

配置容器使其自动启动
利用注册服务器上的rsyslog镜像,创建一个名为logserver的容器

  • 面向paradise用户,配置一个systemd服务
    该服务名为container-logserver, 并在系统重启时自动启动,无需干预

为容器配置持久存储
通过以下方式扩展上一个任务的服务

  • 配置主机系统的journald日志以在系统重启后保留数据,并重新启动日志记录服务
  • 将主机/var/log/journal目录下任何以 *.journal的文件复制到/home/paradise/container_logfile中
  • 将服务配置为在启动时自动将/home/paradise/container_logfile挂载到容器中的/var/log/journal下
  • 输入该命令 xxxx xxxx This is RHCSA 后使得/var/log/journal/rhcsa.log 和/home/paradise/container_logfile/rhcsa.log 都出现This is RHCSA

以paradise用户开一个名字为logserver的容器,使用rsyslog镜像开启
把node1的/home/paradise/container_logfile映射到容器里的/var/log/journal目录
将容器配置为container-logserver服务,并让systemd管理该服务实现开机自动开启
rhcsa.log 有记录This is RHCSA

首先需要SSH到paradise这个用户, 在这里我以registry.redhat.io做这个实验。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
podman login registry.xxx.xxx.com
podman search registry.xxx.xxx.com/
mkdir -p /home/paradise/container_logfile/
podman run -d --name logserver -v /home/paradise/container_logfile/:/var/log/journal:Z registry.redhat.io/rhel8/rsyslog

使用Rocky/RHEL系统需要留意一下: 针对rhel 8.2- rootless podman bug : 需要 mkdir ~/.config/containers
touch ~/.config/containers/mounts.conf


#准备 unit 目录和文件
mkdir /home/paradise/.config/systemd/user -p
cd /home/paradise/.config/systemd/user
podman generate systemd --name logserver --files --new
【输出】/home/paradise/.config/system/user/container-logserver.service
podman rm -f logserver

#设置开机启动并测试
systemctl –user daemon-reload 启动单元配置
loginctl enable-linger
systemctl –user enable container-logserver
systemctl –user start container-logserver.service
systemctl –user status container-logserver.service

#进入容器输入命令
podman exec -it logserver /bin/sh
sh> xxx xxx xxx This is RHCSA
sh> cat /var/log/journal/rhcsa.log
sh> exit
cat /home/paradise/container_logfile/rhcsa.log

创建交换分区

向 node2 添加一个额外的 交换分区 756MiB。交换分区应在系统启动时自动挂载。不要删除或以任何方式改动系统上的任何现有交换分区。

1
2
3
4
5
6
7
8
9
10
11
12
fdisk /dev/vdb

-->n
--> Last sector, +sectors or +size{K,M,G,T,P} (2048 10485759, default 10485759): +756M
-->Command (m for help): w

mkswap /dev/vdb1
vim /etc/fstab
/dev/vdb1 swap swap defaults 0 0
swapon -a
mount -a
free m

创建逻辑卷

根据如下要求,创建新的逻辑卷:
逻辑卷的名字要 database, 卷组是 datastorage, 大小是 60 个 PE size
datastorage 的 PE size 是 16MiB
格式化成 ext4 文件系统。并在系统启动时自动挂载到 /mnt/data。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fdisk /dev/vdb

-->n
--> 全部回车 默认即可
-->Command (m for help): w

#(可以跳过创建pvcreate, 因为会自动创建) pvcreate /dev/vdb2
vgcreate -s 16M datastorage /dev/vdb2
# 不确认的话可以 man vgcreate 看看
lvcreate -n database datastorage -l 60
mkfs.ext4 /dev/datastorage/database
vim /etc/fstab

/dev/datastorage/database /mnt/data ext4 defaults 0 0
mount -a
df -Th

RHCE ansible-playbook题目

创建ansible 基础配置

  1. 先去查看默认配置
    默认配置位置 /etc/ansible/ansible.cfg

最新版ansible已经不再生成默认配置,而是需要通过以下方式生成来参考

1
ansible-config init --disabled > sample-ansible.cfg

通常我们一般有ansible文件夹,ansible.cfg和inventory文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# inventory sample
[dev]
servera.lab.example.com

[test]
serverb.lab.example.com

[prod]
serverc.lab.example.com
serverd.lab.example.com

[balancers]
bastion.lab.example.com

[webservers:children]
prod


# ansible cfg
[defaults]
inventory = /home/student/ansible/inventory
roles_path = /home/student/ansible/roles
remote_user = student

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

变量

1
2
# 如果你有web的inventory
ansible web -setup

通过查看里面的参数,即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 例如,你看
...
"ansible_user_dir": "/root",
"ansible_user_gecos": "root",
"ansible_user_gid": 0,
"ansible_user_id": "root",
"ansible_user_shell": "/bin/bash",
"ansible_user_uid": 0,
...

# 在ansible_facts就写成 (把ansible改为ansible_facts)
ansible_facts['user_id']


# 再例如
...
"ansible_dns": {
"nameservers": [
"172.25.250.253"
],
"search":[
...
]
}
...
ansible_facts['dns']['nameserver']

```
### balance/phpinfo 题目

需要注意balance/phpinfo那道题目的task先后顺序。
先phpinfo之后才balance, 不然会报错。

下载userlist和创建用户可能需要将用户密码时长设置为30天。通过ansible-doc user使用的expires参数会报错无法使用。我是直接使用shell功能,也就是命令里chage去做的。

```yaml
shell: 'chage "{{item.name}}"" -M 30'
  • 标题: 红帽Linux题目解答
  • 作者: 暗香疏影
  • 创建于 : 2023-05-01 00:00:00
  • 更新于 : 2023-05-15 00:00:00
  • 链接: https://blog.23ikr.com/2023/05/01/Wiki-Guide/2023-05-01-RHCE/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论