红帽 RHCE8 认证考试:安装和配置 Ansible

题目描述

按照下方所述,在控制节点 control 上安装和配置 Ansible:

  • 安装所需的软件包。
  • 创建名为 /home/greg/ansible/inventory 的静态清单文件,以满足以下要求:
  • node1dev 主机组的成员;
  • node2test 主机组的成员;
  • node3node4prod 主机组的成员;
  • node5balancers 主机组的成员;
  • prod 组是 webservers 主机组的成员;
  • 创建名为 /home/greg/ansible/ansible.cfg 的配置文件,以满足以下要求:
  • 主机清单文件为 /home/greg/ansible/inventory;
  • playbook 中使用的角色的位置包括 /home/greg/ansible/roles.

详细解析

[1]. 以下操作都是在 Ansible 的控制节点中完成的。在本文中,控制节点的名称是 control;

[2]. 有的考试环境中会要求在控制节点上所做的所有操作都要由特定用户来完成,例如,在本文中,所有在控制节点 control 上对 Ansible 做的操作都是以 greg 用户的身份完成的,而不是 root 用户。

首先,使用控制节点上的 root 用户在控制节点主机上安装 Ansible:

yum -y install ansible

下面的步骤开始使用控制节点上的 greg 用户完成。

创建并编辑静态清单文件 /home/greg/ansible/inventory:

mkdir /home/greg/ansible/
touch  /home/greg/ansible/inventory
vim /home/greg/ansible/inventory

[1]. 要根据题目要求编辑文件或创建目录的时候最好用直接复制题目中给出的从根目录开始的完整路径进行创建,这样可以尽可能避免出错,例如,在创建静态清单文件 /home/greg/ansible/inventory 的时候,不要先进入 /home/greg/ansible/ 目录下,然后使用 touch inventory 的方式编辑 inventory 文件,而是直接使用完整路径编辑 inventory 文件:touch /home/greg/ansible/inventory.

[2]. 有时候,直接创建并保存 /home/greg/ansible/inventory 这个静态清单文件时会报错,这是因为,在刚开始做题的时候,目录 /home/greg/ansible/ 还不存在,这时候,我们可以先创建该目录:mkdir /home/greg/ansible/.

在静态清单文件 /home/greg/ansible/inventory 中写入如下内容:

下面这个静态清单文件是 RHCE 考试中的基础,一旦这一题出错(例如在清单文件中没有正确地写入全部组和主机),后面很多题目都会被系统判断为错误。因此要格外认真地编写这个静态清单文件。

[dev]
node1

[test]
node2

[prod]
node3
node4

[balancers]
node5

[webservers:children]
prod

注意:prod 本身就是一个主机组,因此,根据题目,prod 其实是 webservers 主机组的 children 主机组.

接着,题目要求我们创建名为 /home/greg/ansible/ansible.cfg 的配置文件,但是,该配置文件中内容很多,我们可以使用如下方法复制一份系统中当前已有的 cfg 配置文件,然后再进行修改即可:

cp -p /etc/ansible/ansible.cfg /home/greg/ansible/ansible.cfg

可以使用 ansible --version 命令查看 Ansible 默认的 cfg 配置文件所在的位置,在返回结果的 config file 参数后面跟的就是 cfg 配置文件的具体位置,例如:config file = /home/greg/ansible/ansible.cfg.

之后,我们需要对由上面的操作形成的 /home/greg/ansible/ansible.cfg 这个文件进行如下修改(由于要修改的地方比较多,在修改时可以借助 VIM 编辑器的搜索功能查找并快速定位到要修改的地方):

1. 设置主机清单文件

#inventory = /etc/ansible/hosts 修改为:

inventory = /home/greg/ansible/inventory

“inventory” 的英文意思是“库存,清单”。

2. 修改 playbook 中所使用的角色的位置

#roles_path = /etc/ansible/roles 修改为:

roles_path = /home/greg/ansible/roles

[1]. 上面的这两处修改是根据题目明确要求而做的,而下面的这几处修改则是为了保证 playbook 能够在受控节点上正常执行而做的;

[2]. 我们可以在本题中就创建角色目录 /home/greg/ansible/roles, 这个目录在后面的题目中会用到。

3. 设置在被控端执行 playbook 的用户身份

#remote_user = root 修改为:

remote_user = greg

4. 禁用主机密钥检查

#host_key_checking = False 修改为:

host_key_checking = False

5. 为受控端用户进行特权升级

将:

[privilege_escalation]
#become=True
#become_method=sudo
#become_user=root
#become_ask_pass=False

修改为:

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

做完上面这些配置之后,我们可以使用如下 Ansible 命令在所有受控主机上做一个 Ping 测试,如果返回的结果都是绿色的(如图 01 所示),则代表 Ansible 可以正常管理这些主机,本题也就成功完成了。

关于 Ansible 的返回结果所用的颜色以及对应的状态可以参考这篇文章:https://zhaokaifeng.com/?p=9061

红帽 RHCE8 认证考试:安装和配置 Ansible_荒原之梦
图 01.

Ansible 的 -m 参数用于调用指定的 Ansible 模块,默认使用的是 Command 模块。