Ansible自动化运维工具配置与管理(CentOS8)

一、Ansible搭建
安装EPEL仓库
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
安装ansible
dnf install ansible
查看ansible版本
ansible --version

在/etc/ansible/hosts文件里面添加一个管理组

例:
在这里插入图片描述

使用 ssh-keygen 命令生成本地用户的公钥和私钥
使用以下命令在 Ansible 服务器及其客户端之间交换公钥
ssh-copy-id -i .ssh/id_rsa.pub root@ipaddress
分发完成使用ping模块验证ansible服务器与客户端的连接
ansible web -m ping
ps:注意命令中并没有指定具体的清单文件,那么他将引用默认主机文件/etc/ansible/hosts
二、Ansible模块的基本使用
Command&Shell模块
[root@admin /]# ansible 192.168.122.129 -m command -a "date"    指定IP执行date
192.168.122.129 | CHANGED | rc=0 >>
Thu Jul  1 21:33:00 EDT 2021
[root@admin /]# ansible all -m command -a "hostname"    查看所有主机名
192.168.122.128 | CHANGED | rc=0 >>
admin
192.168.122.129 | CHANGED | rc=0 >>
node1
DNF模块
[root@admin /]# ansible all -m dnf -a "name=nginx state=installed"   安装软件
[root@admin /]# ansible all -m dnf -a "name=nginx state=absent"     卸载软件
[root@admin /]# ansible all -m command -a "rpm -q nginx"    检查是否安装成功
192.168.122.128 | CHANGED | rc=0 >>
nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
192.168.122.129 | CHANGED | rc=0 >>
nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64
Service模块
[root@admin /]# ansible all -m service -a "name=nginx state=started"     启动服务
[root@admin /]# ansible all -m command -a "systemctl status nginx "  检查服务是否开启

常用参数:
name参数:此参数用于指定需要操作的服务名称比如 nginx
state参数:此参数用于指定服务的状态,比如我们想要启动远程主机中的 nginx,则可以将 state 的值设置为 started,如果想要停止远程主机中的服务,则可以将 state 的值设置为 stopped, 此参数的可用值有 started、stopped、restarted、reloaded
enabled参数:此参数用于指定是否将服务设置为开机启动项,设置为 yes 表示将对应服务设置为开机启动 设置为 no 表示不会开机启动
Copy模块
参数详情:
src:指定源文件位置(管理机上的文件)
dest:指定你要推送到主机的目标位置
owner:指定属主
group:指定属组
mode:指定权限
[root@admin /]# ansible 192.168.122.129 -m copy -a "src=/backup/zabbix.sh dest=/ owner=root group=root mode=0644"
Get_url模块
[root@admin /]# ansible 192.168.122.129 -m get_url -a "url=http://192.168.122.128/test/sh.sh dest=/"      
参数详情:
url:指定下载文件的地址 
dest:指定下载的路径
Script模块
[root@admin ~]# echo "touch /backup" > a.sh      创建脚本文件
[root@admin ~]# cat a.sh 
touch /backup
[root@admin ~]# ansible 192.168.122.129 -m script -a "/root/a.sh"
Yum_repository模块
[root@admin /]# ansible all -m yum_repository -a 'name=centos description="centos" baseurl=file:///mnt gpgcheck=no enabled=yes file=centos'       创建yum源

[root@admin /]# ansible all -m yum_repository -a 'file=centos name=centos state=absent'      删除yum源

常用参数:

name:必须参数 用于指定要操作的唯一的仓库ID 也就是”.repo”配置文件中每个仓库对应的”中括号”内的仓库ID

baseurl:此参数用于设置 yum 仓库的 baseurl

description:此参数用于设置仓库的注释信息 也就是”.repo”配置文件中每个仓库对应的”name字段”对应的内容

file:此参数用于设置仓库的配置文件名称 即设置”.repo”配置文件的文件名前缀 在不使用此参数的情况下 默认以 name 参数的仓库ID作为”.repo”配置文件的文件名前缀 同一个”.repo” 配置文件中可以存在多个 yum 源

enabled:此参数用于设置是否激活对应的 yum 源 此参数默认值为 yes 表示启用对应的 yum 源 设置为 no 表示不启用对应的 yum 源

gpgcheck:此参数用于设置是否开启 rpm 包验证功能 默认值为 no 表示不启用包验证 设置为 yes 表示开启包验证功能

gpgcakey:当 gpgcheck 参数设置为 yes 时 需要使用此参数指定验证包所需的公钥 

state:默认值为 present 当值设置为 absent 时 表示删除对应的 yum 源 M源
Group模块
[root@admin /]# ansible all -m group -a "name=admin"    创建组

参数详情:

Name:组名称

System:是否为系统组 yes/no 默认是no

State:删除或创建组 present/absent 默认是present
Selinux模块
[root@admin /]# ansible all -m selinux -a "state=disabled"

SELinux的三种模式:enforcing, permissive, disabled
Cron模块
参数详情:
name:指定任务名称 可以根据任务名称修改或删除对应的任务 搭配state使用
state:absent表示删除对应的任务
minute:指定分钟
hour:指定小时
day:指定日
month:指定月
weekday:指定周几
special_time:reboot|yearly|monthly|weekly|daily|hourly都未指定时表示每分钟执行
user:指定计划任务属于哪个用户 默认管理员用户
disabled:注释计划任务使其失效但是一定要写全原任务的name、minute、hour、month、weekday、job、如果不一样 则是修改原计划任务内容
backup:backup=yes表示修改或删除对应计划任务时 会先进行备份 备份路径/tmp/crontab+随机字符
三、Ansible playbook剧本

playbook格式(语法格式非常关键)

playbook由YMAL语言编写,YMAL格式是类似于JSON的文件格式,便于理解和阅读,同时便于书写

一个剧本里面可以有多个play,每个play只能有一个tasks,每个tasks可以有多个name

playbook的基础组件:
name:定义任务模块名称
hosts:定义执行任务的主机
user:用于指定远程主机上执行任务的用户
task:指定一个任务
vars:定义变量
vars_files:调用定义变量文件
notify:任务执行结果如果是发生更改了的则触发定义在handler的任务执行
handlers:用于当前关注的资源发生变化时采取一定指定的操作

案例一:在所有节点上创建一个文件

在这里插入图片描述

检测语法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mvc51SFc-1681347617087)(C:\Users\Ai\AppData\Roaming\marktext\images\2023-04-12-20-15-37-image.png)]

运行playbook

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S0nlvARC-1681347617088)(C:\Users\Ai\AppData\Roaming\marktext\images\2023-04-12-20-15-40-image.png)]


案例二

handlers:由特定条件触发的Tasks
handlers:处理器
notify:触发器
语法:
tasks:
- name: TASK_NAME
  module: arguments               #1.上面任务执行成功,然后
  notify: HANDLER_NAME        #2.通知他
handlers:
- name: HANDLER_NAME        #3.一一对应,这里的描述与notify定义的必须一样
  module: arguments         #4.执行这个命令

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UEFqZGyW-1681347617088)(C:\Users\Ai\AppData\Roaming\marktext\images\2023-04-12-20-15-52-image.png)]

运行playbook

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-22clvzKZ-1681347617088)(C:\Users\Ai\AppData\Roaming\marktext\images\2023-04-12-20-15-56-image.png)]

检测是否写入成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IlxQf5sQ-1681347617089)(C:\Users\Ai\AppData\Roaming\marktext\images\2023-04-12-20-15-59-image.png)]


案例三

循环:迭代 需要重复执行的任务

对迭代项的引用 固定变量名为”item” 使用with_item属性给定要迭代的元素

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h1N6hVys-1681347617089)(C:\Users\Ai\AppData\Roaming\marktext\images\2023-04-12-20-16-16-image.png)]


基于字符串列表元素实战:

案例四

自定义vars_files变量

变量调用语法:{{ var_name }}

创建变量目录:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrNedB23-1681347617090)(C:\Users\Ai\AppData\Roaming\marktext\images\2023-04-12-20-16-24-image.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W83Sy2sg-1681347617090)(C:\Users\Ai\AppData\Roaming\marktext\images\2023-04-12-20-16-28-image.png)]

创建测试文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tanFqQaO-1681347617091)(C:\Users\Ai\AppData\Roaming\marktext\images\2023-04-12-20-16-32-image.png)]

创建playbook引用变量文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ARUANdfQ-1681347617091)(C:\Users\Ai\AppData\Roaming\marktext\images\2023-04-12-20-16-40-image.png)]

运行playbook,检查是否执行成功

root@localhost ansible]#** **ansible-playbook vars.yml
[root@localhost ansible]# ansible all -m shell -a "tree /opt/"
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值