题目描述
作为系统管理员,您需要在受管节点上安装软件。
请按照正文所述,创建一个名为 /home/greg/ansible/adhoc.sh
的 shell 脚本,该脚本将使用 Ansible 临时命令在各个受管节点上安装 yum 存储库:
存储库 1:
- 存储库的名称为
EX294_BASE
; - 描述为
EX294 base software
; - 基础 URL 为
http://content/rhel8.0/x86_64/dvd/BaseOS
; - GPG 签名检查为启用状态;
- GPG 密钥 URL 为
http://content/rhel8.0/x86_64/dvd/RPM-GPG-KEY-redhat-release
; - 存储库为启用状态.
存储库 2:
- 存储库的名称为
EX294_STREAM
; - 描述为
EX294 stream software
; - 基础 URL 为
http://content/rhel8.0/x86_64/dvd/AppStream
; - GPG 签名检查为启用状态;
- GPG 密钥 URL 为
http://content/rhel8.0/x86_64/dvd/RPM-GPG-KEY-redhat-release
; - 存储库为启用状态.
详细解析
首先,按照题目要求,创建一个 Shell 脚本:
vim /home/greg/ansible/adhoc.sh
本题的关键就是调用 Ansible 的 yum_repository
模块,该模块可以在各个受管节点上创建并配置 yum
文件。因此,我们需要在上面创建的 adhoc.sh
脚本上写入如下内容:
ansible all -m yum_repository -a "name=EX294_BASE description='EX294 base software' baseurl=http://content/rhel8.0/x86_64/dvd/BaseOS gpgcheck=yes gpgkey=http://content/rhel8.0/x86_64/dvd/RPM-GPG-KEY-redhat-release enabled=yes" ansible all -m yum_repository -a "name=EX294_STREAM description='EX294 stream software' baseurl=http://content/rhel8.0/x86_64/dvd/AppStream gpgcheck=yes gpgkey=http://content/rhel8.0/x86_64/dvd/RPM-GPG-KEY-redhat-release enabled=yes"
[1].
-m
参数用于调用指定的 Ansible 模块,默认使用的是 Command 模块;[2].
-a
参数用于指定-m
参数所调用模块的模块参数。
为 adhoc.sh
脚本所属的用户 greg 设置执行该脚本的权限:
chmod u+x adhoc.sh
执行该 Shell 脚本:
./adhoc.sh
一般情况下,上面的脚本执行成功之后会以黄颜色显示执行结果,这代表 Ansible 命令执行成功且受控端主机的状态也发生了变化。
关于 Ansible 的返回结果所用的颜色以及对应的状态可以参考这篇文章:https://zhaokaifeng.com/?p=9061
最后,我们可以执行如下 Ansible 临时命令,在所有受控端主机上执行 yum repolist
命令以列出所有存储库,如果所有受控端主机都能正常返回相应的结果,则代表本题成功完成:
ansible all -m command -a "yum repolist"