题目描述
安装 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'