针对部分难题解答
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
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
vgcreate -s 16M datastorage /dev/vdb2
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 基础配置
- 先去查看默认配置
默认配置位置 /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
| [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
[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 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['user_id']
... "ansible_dns": { "nameservers": [ "172.25.250.253" ], "search":[ ... ] } ... ansible_facts['dns']['nameserver']
```
需要注意balance/phpinfo那道题目的task先后顺序。 先phpinfo之后才balance, 不然会报错。 下载userlist和创建用户可能需要将用户密码时长设置为30天。通过ansible-doc user使用的expires参数会报错无法使用。我是直接使用shell功能,也就是命令里chage去做的。
```yaml shell: 'chage "{{item.name}}"" -M 30'
|