Ansible 项目实战
1.安装和配置Ansible
按照下方所述,在控制节点 172.25.250.254 上安装和配置 Ansible:
安装所需的软件包创建名为 /home/devops/ansible/inventory 的静态
清单文件,以满足以下要求:
172.25.250.9 是 dev 主机组的成员
172.25.250.10 是 test 主机组的成员
172.25.250.11 和 172.25.250.12 是 prod 主机组的成员
172.25.250.13 是 balancers 主机组的成员
prod 组是 webservers 主机组的成员
创建名为 /home/devops/ansible/ansible.cfg 的配置文件,以满足以
下要求:
主机清单文件为 /home/devops/ansible/inventory
playbook 中使用的角色的位置包括 /home/devops/ansible/roles
考点:ansible提权配置,ansible主机清单编写
[student@workstation]$ sudo yum -y install ansible
[sudo] password for devops
: redhat
……
[student@workstation]$ mkdir ansible
[student@workstation ansible]$ vim /home/student/ansible/inventory
[dev]
servera
[test]
serverb
[prod]
serverc
serverd
[balancers]
serverd
[webservers:children]
prod
[student@workstation ansible]$ vim /home/devops/ansible/ansible.cfg
[defaults]
inventory = /home/student/ansible/inventory
remote_user = devops
roles_path = /home/student/ansible/roles
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
[student@workstation ansible]$ mkdir roles
[student@workstation ansible]$ ansible all m ping
serverb | SUCCESS => {
"changed": false,
"ping": "pong"
}
serverd | SUCCESS => {
"changed": false,
"ping": "pong"
}
serverc | SUCCESS => {
"changed": false,
"ping": "pong"
}
servera | SUCCESS => {
"changed": false,
"ping": "pong"
}
2.创建和运行 Ansible 临时命令
作为系统管理员,您需要在受管节点上安装软件。
请按照正文所述,创建一个名为 /home/devops/ansible/adhoc.sh 的
shell 脚本,该脚本将使用
Ansible 临时命令在各个受管节点上安装 yum 存储库:
存储库 1:
存储库的名称为 EX294_BASE
描述为 EX294 base software
基础 URL 为 ftp://host.domain8.rhce.cc/dvd/BaseOS
GPG 签名检查为启用状态
GPG 密钥 URL 为 ftp://host.domain8.rhce.cc/dvd/RPM-GPG-KEY-redhat-release
存储库为启用状态
存储库 2:
存储库的名称为 EX294_STREAM
描述为 EX294 stream software基础 URL 为
ftp://host.domain8.rhce.cc/dvd/AppStream
GPG 签名检查为启用状态
GPG 密钥 URL 为 ftp://host.domain8.rhce.cc/dvd/RPMGPGKEY-redhat-release
存储库为启用状态
考点:yum_repository 模块使用,是一个用于配置yum源的模块
- name #存储库的名字
- description #描述
- file #yum仓库的文件名
- baseurl #yum源的地址
- gpgcheck #是否检查签名
- gpgkey #key的地址
- enabled #是否启用
[student@workstation ansible]$ vim adhoc.sh
#!/bin/bash
ansible all -m yum_repository -a "name=EX294_BASE
description='EX294 base software' file=rhel_dvd
baseurl=ftp://host.domain8.rhce.cc/dvd/BaseOS gpgcheck=yes
gpgkey=ftp://host.domain8.rhce.cc/dvd/RPMGPGKEYredhatrelease
enabled=yes"
ansible all -m yum_repository -a "name=EX294_STREAM
description='EX294 stream software' file=rhel_dvd
baseurl=ftp://host.domain8.rhce.cc/dvd/AppStream gpgcheck=yes
gpgkey=ftp://host.domain8.rhce.cc/dvd/RPMGPGKEYredhatrelease
enabled=yes"
[student@workstation ansible]$ chmod a+x adhoc.sh
[student@workstation ansible]$ ./adhoc.sh
serverd | CHANGED => {
"changed": true,
"repo": "EX294_STREAM",
"state": "present"
}
servera | CHANGED => {
"changed": true,
"changed": true,