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”配置文件中每个仓库对应的”中括号”内的仓库IDbaseurl:此参数用于设置 yum 仓库的 baseurldescription:此参数用于设置仓库的注释信息 也就是”.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 默认是noState:删除或创建组 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:用于当前关注的资源发生变化时采取一定指定的操作
案例一:在所有节点上创建一个文件
检测语法
运行playbook
案例二
handlers:由特定条件触发的Tasks
handlers:处理器
notify:触发器
语法:
tasks:
- name: TASK_NAMEmodule: arguments #1.上面任务执行成功,然后notify: HANDLER_NAME #2.通知他
handlers:
- name: HANDLER_NAME #3.一一对应,这里的描述与notify定义的必须一样module: arguments #4.执行这个命令
运行playbook
检测是否写入成功
案例三
循环:迭代 需要重复执行的任务
对迭代项的引用 固定变量名为”item” 使用with_item属性给定要迭代的元素
基于字符串列表元素实战:
案例四
自定义vars_files变量
变量调用语法:{{ var_name }}
创建变量目录:
创建测试文件
创建playbook引用变量文件
运行playbook,检查是否执行成功
root@localhost ansible]#** **ansible-playbook vars.yml
[root@localhost ansible]# ansible all -m shell -a "tree /opt/"
Ansible自动化运维工具配置与管理(CentOS8)相关推荐
- 大型企业中如何批量管理千万台服务器之ansible自动化运维工具详解 [⭐建议收藏⭐]
文章目录 ansible 自动化运维工具 详解 关于作者 作者介绍 一.ansible 概述 1.1 ansible 概述 1.2 是什么要使用 ansible 1.3 ansible 功能 1.4 ...
- ansible自动化运维工具
ansible自动化运维工具 ansible自动化运维脚本工具 ansible自动化运维工具 一.ssh工作原理和基本命令 1.ssh原理 2.ssh的基本命令 二.anible 自动化运维工具 1. ...
- Ansible自动化运维工具介绍与部署
ansible自动化运维工具介绍与部署 文章目录 一.什么是自动化运维? 二.常用的自动化运维工具 2.1 Ansible 2.2 SaltStack 2.3 Puppet 2.4 三种自动化工具特点 ...
- Ansible自动化运维工具介绍
介绍 Ansible自动化运维工具,是基于Python开发的,可以实现批量系统配置,批量程序部署.批量运行命令等等. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ans ...
- 【Ansible自动化运维工具】Ansible变量之lookup生成变量方法
[Ansible自动化运维工具]Ansible变量之lookup生成变量方法 一.lookup插件介绍 1.lookup简介 2.lookup使用场景 3.lookup获取的数据源 4.lookup的 ...
- 【Ansible自动化运维工具】Ansible变量之Facts变量
[Ansible自动化运维工具]Ansible变量之Facts变量 一.Ansible facts介绍 1.facts组件简介 2.facts组件的使用场景 二.Ansible facts的基本使用 ...
- Ansible自动化运维工具使用
概述 本文描述自动化运维工具 Ansible 的安装及基础使用方法,包含: Centos 下的安装 主机配置 Ad-Hoc command(命令行执行) Playbook (任务剧本) Ansible ...
- ansible——自动化运维工具
目录 ansible 简介 ansible 是什么? ansible 特点 ansible 架构图 ansible 任务执行 ansible 任务执行模式 ansible 执行流程 ansible 命 ...
- 自动化运维工具Puppet(管理资源)
接上文<自动化运维工具Puppet>http://kaliarch.blog.51cto.com/8966921/1973736 利用模块与模版管理agent端资源 一.模块管理 环境安装 ...
最新文章
- 【Android 逆向】Android 权限 ( adb 降权相关的属性 | ro.secure 属性 | ro.debuggable 属性 | service.adb.root 属性 )
- make j4什么意思_为什么天天坚持撸铁 肌肉增长不明显
- hadoop0.20.0第一个例子
- python写进程_将数据作为后台进程在Python中写入磁盘
- C++安全方向(三):3.8 openssl单项散列章节总结
- 虚拟机禅道服务器ip,Linux系统(虚拟机)安装禅道
- python统计字典里面value出现的次数_python 统计list中各个元素出现的次数的几种方法...
- angular中利用zone避归没必要的开销提高程序的性能demo
- 苹果匠艺:乔布斯身边的天才
- CANoe测试TC8的环境搭建以及带有VLAN标签的DUT网卡该如何配置CANoe测试环境
- windows命令提示符及其操作的相关命令
- mysql磁盘读写每秒多少正常_一般硬盘读取速度和写入速度是多少
- 《零基础入门学习Python》第031讲:永久存储:腌制一缸美味的泡菜
- 读书笔记之:《心流 最优体验心理学》 米哈里·契克森米哈赖 第一章、第二章
- python和javascript哪个好学-python和js哪个难学
- e3服务器性能怎么样,Inte至强 E3-1230 V3性能怎么样?跟 i7 相比呢?
- 桌面每日一句--桌面翻译工具(有道翻译,微软翻译,Google翻译)
- Linux中级——“驱动” 控制硬件必须学会的底层知识
- 常见功能点测试用例大全
- Cesium-Primitive图元的讲解