题目描述
根据下列要求,创建一个名为 /home/greg/ansible/roles.yml 的 playbook :
- playbook 中包含一个 play, 该 play 在
balancers主机组中的主机上运行并将使用balancer角色。
- 此角色配置一项服务,以在
webservers主机组中的主机之间平衡Web服务器请求的负载。 - 浏览到
balancers主机组中的主机(例如http://172.25.250.13)将生成以下输出:
Welcome to serverb.lab.example.com on 172.25.250.11
- 重新加载浏览器将从另一 Web 服务器生成输出:
Welcome to serverc.lab.example.com on 172.25.250.12
- playbook 中包含一个 play, 该 play 在
webservers主机组中的主机上运行并将使用phpinfo角色。
- 请通过 URL /hello.php 浏览到
webservers主机组中的主机将生成以下输出:
Hello PHP World from FQDN
- 其中,
FQDN是主机的完全限定名称。
Hello PHP World from serverb.lab.example.com
另外还有 PHP 配置的各种详细信息,如安装的 PHP 版本等。
- 同样,浏览到
http://172.25.250.12/hello.php会生成以下输出:
Hello PHP World from serverc.lab.example.com
另外还有 PHP 配置的各种详细信息,如安装的 PHP 版本等。
详细解析
本题要调用 balancer 和 phpinfo 这两个角色,我们在 RHCE8 前面的试题中已经安装完成了这两个角色。其中 balancer 角色能够实现主机之间的负载平衡,而 phpinfo 角色则可以生成有关 PHP 的一些信息。
虽然题目中看上去列出来了很多功能要求,但这些功能已经被 balancer 和 phpinfo 这两个角色实现了,我们只需要按照要求调用即可。因此,简单的说,本题就是在 balancers 主机组中调用 balancer 角色,在 webservers 主机组中调用 phpinfo 角色。
首先,根据题目要求创建 playbook:
vim /home/greg/ansible/roles.yml
写入如下内容,为不同的主机组调用所需的角色:
---
- name:
hosts: balancers
roles:
- balancer
- name:
hosts: webservers
roles: phpinfo
运行 playbook:
ansible-playbook /home/greg/ansible/roles.yml
从前面的题目中配置的主机清单文件可知,balancers 主机组中只包含 node5 这一个主机,webservers 主机组中包含 node3 和 node4 这两个主机。
那么,根据题目要求,在执行完前面编写的 playbook 之后,如果我们访问 node5 主机,则 node5 会向 node3 和 node4 主机进行轮询,以平衡访问负载。因此,此时访问 node5 主机的效果会类似下面这样:
[greg@control ansible]$ curl http://node5 Welcome to node3 on 172.25.250.11 [greg@control ansible]$ curl http://node5 Welcome to node4 on 172.25.250.12 [greg@control ansible]$ curl http://node5 Welcome to node3 on 172.25.250.11
同时,如果我们在浏览器中访问 http://node3/hello.php 这个链接,则会显示 “Hello PHP World from node3.lab.example.com” 以及 PHP 的一些版本和配置信息,访问 http://node4/hello.php 时也会有类似的效果,如图 01 和图 02 所示:

