RHCE-B7. 从 Ansible Galaxy 使用角色创建web负载均衡

Posted 白-胖-子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RHCE-B7. 从 Ansible Galaxy 使用角色创建web负载均衡相关的知识,希望对你有一定的参考价值。

红帽RHCE考试下午-RHCE(RH294)

RH294任务概览

  • 考试时间4个小时,6台虚拟机,15道题
  • 原来通过脚本或者集群做的题现在都需要使用playbook实现
  • 考试时大概有6台虚拟服务器,都已经做好了互相的免密
  • 做题在ansible控制节点workstation做,但是需要去其他虚拟服务器进行验证
  • 考试时需要将6台虚拟服务器在考试环境全部开启,物理机界面点击左侧按钮启动
  • 考试时Ansible所有playbook都放在普通用户目录中且都以普通用户执行
  1. 注意:考试时一定注意要求将playbook放在指定用户的家目录中,用指定的用户登录做题!
  2. 注意:考试的判分方式通过普通用户远程执行指定目录下的playbook或者脚本,如果使用root做题,则没有权限就是零分

7. 从 Ansible Galaxy 使用角色创建web负载均衡

  • 根据下列要求,创建一个名为 /home/student/ansible/roles.yml 的playbook:
  • 这道题要应用到第5道题下载并初始化好了的两个角色
  • 其实就部署一负载均衡器,只需要调用角色就可以了

任务要求

  1. playbook 中包含一个 play,该 play 在 balancers 主机组中的主机上运行并将使用 balancer 角色。
  2. 此角色配置一项服务,以在 webservers 主机组中的主机之间平衡 Web 服务器请求的负载。
  3. 浏览到 balancers 主机组中的主机(例如 http://bastion.lab.example.com/ )将生成以下输出: Welcome to serverc.example.com on 172.25.1.12
  4. 重新加载浏览器将从另一 Web 服务器生成输出: Welcome to serverd.example.com on 172.25.1.13
  5. playbook 中包含一个 play,该 play 在 webservers 主机组中的主机上运行并将使用 phpinfo 角色。
  6. 通过 URL /hello.php 浏览到 webservers 主机组中的主机将生成以下输出: Hello PHP World from FQDN 其中,FQDN 是主机的完全限定名称。
  • 浏览到 http://serverc.lab.example.com/hello.php 会生成以下输出: Hello PHP World from serverc.example.com 另外还有 PHP 配置的各种详细信息,如安装的PHP 版本等。
  • 浏览到 http://serverd.lab.example.com/hello.php 会生成以下输出: Hello PHP World from serverd.example.com 另外还有 PHP 配置的各种详细信息,如安装的PHP 版本等。

注意:

准备个工作

  • 考试期间不需要做
  • 题目中还会要求展示phpinfo信息,但是由于实验环境模板不完整,所以展示不出来是正常的,考试的时候模板是完整的,是可以正常显示phpinfo信息的
  • 可以在实验环境/home/student/ansible/roles/phpinfo/templates目录下编辑hello_ver.html.j2模板文件
vim /home/student/ansible/roles/phpinfo/templates/hello_ver.html.j2
Hello PHP World form {{ ansible_fqdn }} 
  • 实验环境调度器所在虚拟机80端口会被httpd占用。考试时应该不会,先把其上的httpd给停了
    ssh root@bastion "systemctl stop httpd && systemctl disable httpd"
vim /home/student/ansible/roles/balancer/tasks/main.yml
:%s/\\['haproxy'\\]/\\['balancers'\\]/g

完成步骤

  1. 先按体重呀求iu要求创建两个角色的playbook为同一个yml文件
  • 最开始写一个play,什么都不做,就是把主机组的信息给搂下来
[student@workstation ansible]$ vim roles.yml
---
- name: gather facts
  hosts: webservers

- name: config balancer
  hosts: balancers
  roles:
    - balancer
- name: config php webserver
  hosts: webservers
  roles:
    - phpinfo
[student@workstation ansible]$ ansible-playbook roles.yml
  • 验证
#验证负载均衡
[student@workstation ansible]$ curl http://bastion.lab.example.com/ Welcome to serverc.lab.example.com on 172.25.250.12
[student@workstation ansible]$ curl http://bastion.lab.example.com/ Welcome to serverd.lab.example.com on 172.25.250.13
#验证php Hello world
[student@workstation ansible]$ curl http://bastion.lab.example.com/hello.php Hello PHP World form serverc.lab.example.com
[student@workstation ansible]$ curl http://bastion.lab.example.com/hello.php Hello PHP World form serverd.lab.example.com
  • 考试时候那个php信息不用管他,再服务器上能正常访问到php页面就行了。

考察的知识点

  • 因为角色之前已经下载好了,在此我们只需要再playbook中调用已经存在的角色就可以了

ansible-galaxy 查看已有角色

  • nsible-galaxy命令也可管理本地的角色,如位于playbook项目的roles目录中的角色。
    ansible-galaxy list ## 子命令列出本地找到的角色
[root@localhost ]# ansible-galaxy list
# /usr/share/ansible/roles
- linux-system-roles.kdump, (unknown version)
- linux-system-roles.network, (unknown version)
- linux-system-roles.postfix, (unknown version)
- linux-system-roles.selinux, (unknown version)
- linux-system-roles.storage, (unknown version)
- linux-system-roles.timesync, (unknown version)
- rhel-system-roles.kdump, (unknown version)
- rhel-system-roles.network, (unknown version)
- rhel-system-roles.postfix, (unknown version)
- rhel-system-roles.selinux, (unknown version)
- rhel-system-roles.storage, (unknown version)
- rhel-system-roles.timesync, (unknown version)
# /etc/ansible/roles
- robertdebock.httpd, 5.3.0

以上是关于RHCE-B7. 从 Ansible Galaxy 使用角色创建web负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

RHCE-B15.更新 Ansible 库的密钥

RHCE-B15.更新 Ansible 库的密钥

RHCE-B13. 创建Ansible密码库,使用文件内密码加密yml

RHCE-B1. 按要求安装和配置 Ansible

RHCE-B2. 创建和运行 Ansible 临时命令

RHCE-B14. 基于Ansible密码库创建用户帐户