本文是红帽RHCE考题的总结,个别题目写了多种步骤。

一、安装和配置ansible

题目:

按照下方所述,在控制节点 bastion.lab.example.com 上安装和配置 Ansible:

  • 安装所需的软件包
  • 创建名为/home/devops/ansible/inventory 的静态清单文件,以满足以下要求:
  • servera 是 dev 主机组的成员
  • serverb 是 test 主机组的成员
  • serverc 和 serverd 是 prod 主机组的成员
  • workstation 是 balancers 主机组的成员
  • prod 组是 webservers 主机组的成员
  • 创建名为/home/devops/ansible/ansible.cfg 的配置文件,以满足以下要求:
  • 主机清单文件为/home/devops/ansible/inventory
  • playbook 中使用的角色的位置包括/home/devops/ansible/roles

步骤:

1、普通用户登录控制节点

2、使用sudo安装ansible

[devops@bastion ~]$ sudo yum install -y ansible

3、创建名为/home/devops/ansible/inventory 的静态清单文件。

[devops@bastion ~]$ mkdir -p ansible/roles && cd ansible/
[devops@bastion ansible]$ vim inventory
[dev]
servera
[test]
serverb
[prod]
serverc
serverd
[balancers]
workstation
[webservers:children]
prod

4、创建名为/home/devops/ansible/ansible.cfg 的配置文件(从默认配置文件/etc/ansible/ansible.cfg复制过来一份直接修改)

[devops@bastion ansible]$ vim ansible.cfg
[defaults]
inventory = /home/devops/ansible/inventory
roles_path = /home/devops/ansible/roles
remote_user = devops
host_key_checking = no
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

5、验证ansible的配置文件路径和查看主机清单,正确则此题做完。

[devops@bastion ansible]$ ansible --version
[devops@bastion ansible]$ ansible-inventory --graph

二、创建和运行ansible临时命令

题目:

作为系统管理员,您需要在受管节点上安装软件。

请按照下方所述,创建一个名为/home/devops/ansible/adhoc.sh 的 shell 脚本,该脚本将使用Ansible 临时命令在各个受管节点上安装 yum 存储库。

存储库 1:

存储库的名称为:EX294_BASE

描述为:EX294 base software

基础 URL 为:http://content.example.com/rhel8.0/x86_64/dvd/BaseOS

GPG 签名检查为:启用状态

GPG 密钥 URL 为:http://content.example.com/rhel8.0/x86_64/dvd/RPM-GPG-KEY-redhat-release

存储库状态为:启用状态

存储库 2:

存储库的名称为:EX294_STREAM

描述为:EX294 stream software

基础 URL 为:http://content.example.com/rhel8.0/x86_64/dvd/AppStream

GPG 签名检查为启用状态

GPG 密钥 URL 为:http://content.example.com/rhel8.0/x86_64/dvd/RPM-GPG-KEY-redhat-release

存储库状态为:启用状态

步骤:

1、创建一个名为/home/devops/ansible/adhoc.sh 的 shell 脚本。(此题需要用到yum_repository模块,使用ansible临时命令的-m参数指定模块,使用-a参数指定模块参数,使用ansible-doc查看模块的使用方法,把命令模板直接复制到文件中,无需死记命令)

(1)yum_repository模块命令记不住。可以使用ansible-doc -l命令列出所以模块,过滤yum即可。

(2)然后使用ansible手册详细查看ansible-doc yum_repository

直接翻到后面查看实例:

(3)编写配置文件

2、给脚本执行权限,运行脚本测试

[devops@bastion ansible]$ chmod +x adhoc.sh
[devops@bastion ansible]$ ./adhoc.sh

三、安装软件包

题目:

创建一个名为/home/devops/ansible/packages.yml 的 playbook:

  • 将 php 和 mariadb 软件包安装到 dev、test 和 prod 主机组中的主机上。(servera——serverd)

  • 将 RPM Development Tools 软件包组安装到 dev 主机组中的主机上。(servera)

  • 将 dev 主机组中主机上的所有软件包更新为最新版本。(servera)

步骤:

1、此题需要用到yum模块,只需要用到它的两个参数name:包名,state:latest安装最新包。此题先将hosts中的所有主机写上,然后在tasks中写入when语句,按条件执行。

注意最后一个任务的yum参数有state:latest,前面两个任务也可以加上这个参数。when语句用到的两个变量,inventory_hostname指的是所有的主机,groups[‘dev’]指的是所有的主机和组中的dev组的主机。所以此题的when语句就表示所有主机中在dev组的主机执行任务。

四、使用RHEL系统角色

题目:

安装 RHEL 系统角色软件包,并创建名称为/home/devops/ansible/timesync.yml,符合以下条件的 playbook:

  • 在所有受管节点上运行

  • 使用 timesync 角色

  • 配置该角色,以使用当前有效的 NTP 提供商

  • 配置该角色,以使用时间服务器172.25.250.254

  • 配置该角色,以启用 iburst 参数

步骤:

1、安装rhel系统角色软件包。

[devops@bastion ansible]$ sudo yum install -y rhel-system-roles

2、将下载的角色中的timesync角色复制到ansible/roles目录中;并改名为timesync

3、查看所有已安装的角色

4、查看timesync角色的使用方法。

5、创建名称为/home/devops/ansible/timesync.yml的playbook

五、使用ansible galaxy安装角色

题目:

使用Ansible Galaxy和要求文件/home/devops/ansible/roles/requirements.yml。

从以下 URL下载角色并安装到/home/devops/ansible/roles:

  • http://materials.example.com/laoma/haproxy.tar

  此角色的名称应当为 balancer

  • http://materials.example.com/laoma/phpinfo.tar

  此角色的名称应当为 phpinfo

步骤:

1、创建requirements.yml文件

2、运行安装角色

[devops@bastion ansible]$ ansible-galaxy install -r requirements.yml

六、创建和使用角色

题目:

(1)根据下列要求,在/home/devops/ansible/roles 中创建名为 apache 的角色:

  • httpd 软件包已安装,设为在系统启动时启用并启动(yum模块,service模块)

  • 防火墙已启用并正在运行,并使用允许访问 Web 服务器的规则(firewalld模块)

  • 模板文件 用于创建文件/var/www/html/index.html具有以下输出内容:(template模块)

  Welcome to HOSTNAME on IPADDRESS 。

  HOSTNAME 是受管节点的完全限定域名,IPADDRESS 则是受管节点的 IP 地址。

(2)按照下方所属,创建一个使用此角色的 playbook /home/devops/ansible/newrole.yml

  • 该 playbook 在 webservers 主机组中的主机上运行

步骤:

1、创建apache角色

[devops@bastion ansible]$ ansible-galaxy init apache --init-path=roles

也可以先进入roles目录再创建,就不用指定--init-path参数了。

2、进入apache角色的tasks目录,根据题目的第一部分需求编辑main.yml文件。

3、在templates目录中按照需求编辑html.j2文件。

HOSTNAME和IPADDRESS 所指定的域名和ip变量可以根据 Ansible 主机名 -m setup | grep ***查看

4、根据题目的要求编辑/home/devops/ansible/newrole.yml

七、从ansible  galaxy使用角色

题目:

根据下列要求,创建一个名为/home/devops/ansible/roles.yml 的 playbook:

(1)playbook 中包含一个 play,该 play 在 balancers 主机组中的主机上运行并将使用 balancer 角色。

  • 此角色配置一项服务,以在 webservers 主机组中的主机之间平衡 Web 服务器请求的负载。

  • 浏览到 balancers 主机组中的主机(例如http://workstation.lab.example.com)将生成以下输出:

   Welcom to serverc.lab.example.com on 172.25.250.8

  • 重新加载浏览器将从另一 Web 服务器生成输出:Welcom to serverd.lab.example.com on 172.25.250.9

(2)playbook 中包含另外一个 play,该 play 在 webservers 主机组中的主机上运行并将使用 phpinfo 角色。

  • 通过 URL/hello.php 浏览到 webservers 主机组中的主机将生成以下输出:Hello PHP World from FQDN。其中,FQDN 是主机的完全限定名称。

  • 例如,浏览到 http://serverc.lab.example.com/hello.php,会生成输出:Hello PHP World from serverc.lab.example.com另外还有 PHP 配置的各种详细信息,如安装的 PHP 版本等。

  • 同样,浏览到 http://serverd.lab.example.com/hello.php,会生成输出:Hello PHP World from serverd.lab.example.com另外还有 PHP 配置的各种详细信息,如安装的 PHP 版本等。

步骤:

1、在第五题的时候下载了两个角色,分别是tar和phpinfo.tar。此题直接调用这两个角色即可。里面的负载均衡配置都默认配置好了。

2、创建并配置/home/devops/ansible/roles.yml文件。

八、创建和使用逻辑卷

题目:

创建一个名为/home/devops/ansible/lv.yml 的 playbook,它将在所有受管节点上运行以执行下列任务。

创建符合以下要求的逻辑卷:

  • 在 research 卷组中创建逻辑卷

  • 逻辑卷名称为 data

  • 逻辑卷大小为 6000MiB

  • 使用 ext4 文件系统格式化逻辑卷

  • 如果无法创建请求的逻辑卷大小,应显示错误信息:Could not create logical volume of that size

   并且应改为使用大小 800MiB。

  • 如果卷组 research 不存在,应显示错误信息:Volume group done not exist
  • 不要以任何方式挂载逻辑卷

步骤:

1、本题需要使用ansible block的错误处理。

  • block: 定义要运行的主要任务

  • rescue: 定义要在block子句中定义的任务失败时运行的任务

  • always: 定义始终都独立运行的任务,不论block和rescue子句中定义的任务是成功还是失败

2、根据题目要求编辑/home/devops/ansible/lv.yml文件。

或:方法二:(推荐)

九、生成主机文件

题目:

  • 完成该模板,以便用它生成以下文件,针对每个清单主机包含一行内容,其格式与/etc/hosts 相同。

  • 创建名为/home/devops/ansible/hosts.yml 的 playbook,它将使用此模板在 dev 主机组中的主机上生成文件/etc/myhosts。

  • 该 playbook 运行后,dev 主机组中主机上的文件/etc/myhosts 应针对每个受管主机包含一行内容:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.250.9 workstation.lab.example.com workstation
172.25.250.10 servera.lab.example.com servera
172.25.250.11 serverb.lab.example.com serverb
172.25.250.12 serverc.lab.example.com serverc
172.25.250.13 serverd.lab.example.com serverd

注:清单主机名称的显示顺序不重要。

步骤:

1、首先下载并修改模板文件

2、根据题目要求编辑/home/devops/ansible/hosts.yml文件

十、修改文件内容

题目:

按照下方所述,创建一个名为/home/devops/ansible/issue.yml 的 playbook:

  • 该 playbook 将在所有清单主机上运行。

  • 该 playbook 会将/etc/issue 的内容替换为下方所示的一行文本:

  • 在 dev 主机组中的主机上,这行文本显示为:Development
  • 在 test 主机组中的主机上,这行文本显示为:Test
  • 在 prod 主机组中的主机上,这行文本显示为:Production

步骤:

1、根据题目要求创建/home/devops/ansible/issue.yml文件。

十一、创建web内容目录

题目:

按照下方所述,创建一个名为/home/devops/ansible/webcontent.yml 的playbook:

  • 该 playbook 在 dev 主机组中的受管节点上运行。

  • 创建符合下列要求的目录/webdev:

    所有者为 webdev 组 ;

    具有常规权限:

    owner=read+write+execute,

    group=read+write+execute,

    other=read+execute

      具有特殊权限:设置组 ID

  • 用符号链接将/var/www/html/webdev 链接到/webdev

  • 创建文件/webdev/index.html,其中包含如下所示的单行文件:Development

  • 在 dev 主机组中主机上浏览此目录(例如 http://servera.lab.example.com/webdev/)将生成以下输出:Development

步骤:

1、根据此题中最后一句话得知,需要在dev组的主机上部署apache服务器。目前已经有了apche角色,直接部署即可。

2、根据要求创建编辑/home/devops/ansible/webcontent.yml文件。

十二、生成硬件报告

题目:

  • 创建一个名为/home/devops/ansible/hwreport.yml 的 playbook,它将在所有受管节点上生成含有以下信息的输出文件/root/hwreport.txt:

  • 清单主机名称
  • 以 MB 表示的总内存大小
  • BIOS 版本
  • 磁盘设备 vda 的大小
  • 磁盘设备 vdb 的大小
  • 输出文件中的每一行都是 key=value 对
  • 您的 playbook 应当

  • 从 http://materials.example.com/laoma/hwreport.empty 下载文件,并将它保存为/root/hwreport.txt
  • 使用正确的值更改/root/hwreport.txt
  • 如果硬件项不存在,相关的值应设为 NONE

步骤:

1、首先根据提供的链接下载txt文件。

2、Playbook需要用到一些内置变量。

清单主机名称:inventory_hostname
内存MB显示:ansible_memtotal_mb
BIOS:ansible_bios_version
DISK_SIZE_VDA:ansible_devices.vda.size
DISK_SIZE_VDB:ansible_devices.vdb.size

通过ansible localhost -m setup命令可以查看到这些变量。

3、根据题目要求编写/home/devops/ansible/hwreport.yml文件

方法二(推荐):

十三、创建密码库

题目:

按照下方所述,创建一个 Ansible 库来存储用户密码:

  • 库名称为/home/devops/ansible/locker.yml

  • 库中含有两个变量,名称如下:

    pw_developer,值为 Imadev

    pw_manager,值为 Imamgr

  • 用于加密和解密该库的密码为:laoma

  • 密码存储在文件/home/devops/ansible/secret.txt 中

步骤:

1、编辑/home/devops/ansible/locker.yml文件

2、编辑加密和解密的库

3、使用加密库加密locker.yml文件

4、使用加密库查看加密后的locker.yml文件

十四、创建用户账户

题目:

  • 从 http://materials.example.com/laoma/user_list.yml 下载要创建的用户的列表,并将它保存到/home/devops/ansible 目录。

  • 在本次考试中使用在其他位置创建的密码库/home/devops/ansible/locker.yml。

创建名为/home/devops/ansible/users.yml 的 playbook,从而按以下所述创建用户帐户:

职位描述为 developer 的用户应当:

  • 在 dev 和 test 主机组中的受管节点上创建
  • 从 pw_developer 变量分配密码
  • 是补充组 devops 的成员

职位描述为 manager 的用户应当:

  • 在 prod 主机组中的受管节点上创建
  • 从 pw_manager 变量分配密码
  • 是补充组 opsmgr 的成员
  • 密码采用 SHA512 哈希格式。

  • 您的 playbook 应能够在本次考试中使用在其他位置创建的库密码文件/home/devops/ansible/secret.txt 正常运行。

步骤:

1、首先根据链接下载user_list.yml文件。并保存到/home/devops/ansible 目录。

# wget http://materials.example.com/laoma/user_list.yml

2、根据题目要求编辑yml文件

方法一:

方法二:定义两个paly(推荐):

十五、更新ansible库的密钥

题目:

按照下方所述,更新现有 Ansible 库的密钥:

  • 从http://materials.example.com/laoma/salaries.yml 下载 Ansible 库到/root/devops/ansible目录

  • 当前的库密码为 laoma

  • 新的库密码为 redhat

  • 库使用新密码保持加密状态

步骤:

1、首先根据链接下载yml到ansible目录。

# wget http://materials.example.com/laoma/salaries.yml

2、更改库密码

红帽RHCE考题总结练习(8.0 ansible)的更多相关文章

  1. 我眼中的Linux系统和红帽RHCE认证

    牛顿曾经说过“我不知道在别人看来,我是什么样的人:但在我自己看来,我不过就象是一个在海滨玩耍的小孩,为不时发现比寻常更为光滑的一块卵石或比寻常更为美丽的一片贝壳而沾沾自喜,而对于展现在我面前的浩瀚的真 ...

  2. 红帽 Enterprise Linux OpenStack Platform 4.0全面上市

    十一月,红帽公司推出Red Hat Enterprise Linux OpenStack Platform 4.0测试版,这款企业级解决方案集Red Hat Enterprise Linux的稳定性与 ...

  3. 我是怎样和Linux系统结缘并通过红帽RHCE认证的

    我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#.C++之类的?大约在大 ...

  4. 我是怎么样和Linux结缘并通过红帽RHCE认证的

    我高考完当时就是选择的计算机科学与技术专业,上大学以后联想到的和计算机相关的就只有写代码,开发,网站,网页设计,就没有其他的了,当时学习写代码也都是在Windows上,什么C#.C++之类的?大约在大 ...

  5. 红帽RHCE培训-课程3笔记内容2

    9 NFS 9.1 NFS基础 目标 .使用NFS将文件系统连接到客户端,并使用IP 地址控制访问 .使用NFS将文件系统连接到客户端,并使用kerberos 来控制访问 .配置用户名和密码控制访问的 ...

  6. 红帽RHCE培训-课程3笔记目录

    目录: 1 控制服务和守护进程 systemctl systemctl restart enable servicename service servicename restart chkconfig ...

  7. 红帽RHCE培训-课程3笔记内容1

    1 控制服务和守护进程 systemctl systemctl start ** systemctl restart ** systemctl enable ** systemctl status * ...

  8. 红帽RHCE培训-课程2笔记内容

    1 kickstart自动安装 已安装系统中,在root下述目录会自动生成kickstart配置文件 ll ~/anaconda-ks.cfg 关键配置元素注释,详见未精简版 创建Kickstart配 ...

  9. 红帽RHCE培训-课程2笔记目录

    目录 1 kickstart自动安装 DHCP+TFTP(syslinux) +FTP +KICKSTART ~/anaconda-ks.cfg system-config-kickstart 2 g ...

  10. 红帽RHCE培训-课程1笔记目录

    目录 1.环境变量 env 2.man手册mandb;系统日志/var/log/messages 3.重定向和管道> 2> &> | tee 4.mail mail -s 标 ...

随机推荐

  1. 都说 C++ 没有 GC,RAII: 那么我算个啥?(赠书福利)

    *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/7A9-tGZxf4w_7eZl3OUQ4A 学过 Java.C# ...

  2. 【从0开始编写webserver·基础篇#02】服务器的核心---I/O处理单元和任务类

    I/O处理单元和任务类 前面写了线程池,那么现在要考虑如何去使用该线程池了 注意,到目前为止,我们还是在解决web服务器的I/O处理单元 即负责处理客户连接,读写网络数据的部分 线程池属于 Web 服 ...

  3. js原型和原型链(用代码理解代码)

    众所周知js原型及原型链是很多开发者的一个疼点(我也不例外),我也曾多次被问起,也问过不少其他人,如果在自己没有真正的去实践和理解过:那么突然之间要去用最简单的话语进行概述还真不是一件容易的事情: 其 ...

  4. List的拆分的几种方式

    开发中我们可能会遇到一个大的集合,然后我们需要对集合进行拆分,然后再对拆分的集合进行相关的操作.当然我们可以自己写一个拆分的方法,我自己写过用了不少代码,但是感觉还不是很好,最近看了不少工具才发现很多 ...

  5. 【python基础】复杂数据类型-列表类型(排序/长度/遍历)

    1.列表数据元素排序 在创建的列表中,数据元素的排列顺序常常是无法预测的.这虽然在大多数情况下都是不可避免的,但经常需要以特定的顺序呈现信息.有时候希望保留列表数据元素最初的排列顺序,而有时候又需要调 ...

  6. R 语言 download.file 的几点知识

    R 语言中,不管是安装包,还是下载数据,很多时候都会用到download.file这个函数.如果你在安装包或者下载数据过程中出现中断,或者异常,想要判断是远程源服务器的问题,还是自身服务器的问题,还是 ...

  7. 有关 python 切片的趣事

    哈喽大家好,我是咸鱼 今天来讲一个我在实现 python 列表切片时遇到的趣事 在正式开始之前,我们先来了解一下切片(slice) 切片操作是访问序列(列表.字符串......)中元素的另一种方法,它 ...

  8. Spring Boot实现高质量的CRUD-2

    (续前文) 5.Dao类 ​ ​ Dao类提供操作访问数据库表的接口方法.常规的CRUD,将考虑下列接口方法: ​ 1)插入单条对象记录: ​ 2)批量插入对象记录: ​ 3)修改单条对象记录: ​ ...

  9. Java 网络编程 —— RMI 框架

    概述 RMI 是 Java 提供的一个完善的简单易用的远程方法调用框架,采用客户/服务器通信方式,在服务器上部署了提供各种服务的远程对象,客户端请求访问服务器上远程对象的方法,它要求客户端与服务器端都 ...

  10. Python与TensorFlow:如何高效地构建和训练机器学习模型

    目录 标题:<Python 与 TensorFlow:如何高效地构建和训练机器学习模型> 一.引言 随着人工智能的快速发展,机器学习作为其中的一个重要分支,受到了越来越多的关注和应用.而P ...