题目描述
安装 RHEL 系统角色软件包,并创建符合以下条件的 playbook /home/greg/ansible/timesync.yml:
- 在所有受管节点上运行
- 使用
timesync角色 - 配置该角色,以使用当前有效的
NTP提供商 - 配置该角色,以使用时间服务器
172.25.254.254 - 配置该角色,以启用
iburst参数
详细解析
根据题目要求,首先安装 RHEL 系统角色软件包,该软件包内含有一系列 Ansible 角色和模块。以下两条命令都可以安装 RHEL 系统角色软件包(需要使用 root 用户或 root 权限安装):
sudo yum -y install rhel-system-roles
sudo yum -y install rhel-system-roles.noarch
执行上述命令后,安装的 Ansible 角色一般会放在 /usr/share/ansible/roles/ 目录下。在本题,我们需要用到的是 rhel-system-roles.timesync 这个角色。
进入到 rhel-system-roles.timesync 这个目录下(完整路径为:/usr/share/ansible/roles/rhel-system-roles.timesync),可以找到名为 README.md 的帮助文档,在该文档中,我们可以找到编写相应的 playbook 的示例,如下:
Example Playbook
----------------
Install and configure ntp to synchronize the system clock with three NTP servers:
```yaml
- hosts: targets
vars:
timesync_ntp_servers:
- hostname: foo.example.com
iburst: yes
- hostname: bar.example.com
iburst: yes
- hostname: baz.example.com
iburst: yes
roles:
- rhel-system-roles.timesync
接着,我们需要把 /usr/share/ansible/roles/ 目录下的 rhel-system-roles.timesync 这个角色复制到 RHCE8 考试第一题中创建的角色目录 /home/greg/ansible/roles 中的 timesync 目录中去:
cp -r /usr/share/ansible/roles/rhel-system-roles.timesync/ /home/greg/ansible/roles/timesync
接下来,我们在该示例的基础上修改一下,就可以完成本题中 playbook 的编写。
首先,新建题目要求的 playbook:
vim /home/greg/ansible/timesync.yml
接着,根据题目要求,写出如下 playbook 并保存(先把上面提到的示例复制进来再根据题目要求修改):
---
- name:
hosts: all
vars:
timesync_ntp_servers:
- hostname: 172.25.254.254
iburst: yes
roles:
- timesync
上面的 playbook 执行的时候,在 Disable(关闭)一些服务的时候会产生一些被 Ansible 自动 ignore(忽略)的红色报错,这样的报错并不是说我们的 playbook 写的有问题,可以直接忽视。
上面的 playbook 执行完毕之后,NTP 时间同步会自动完成。当然,我们也可以使用如下命令在所有受控节点上同步时间:
ansible all -m command -a 'chronyc sources -v'
接下来使用如下命令在所有节点上验证一下 NTP 服务是否正常,只要返回的结果包含 NTP service: active 即可:
ansible all -m command -a 'timedatectl'