题目描述
根据下列要求,创建一个名为 /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 所示: