Ansible自动化运维(五)----Ansible剧本
Ansible自动化运维(五)----Ansible剧本
Ansible核心的功能,作用就是进行配置管理。
Ansible需要编写的 playbook 剧本需要遵循一定的规则,格式,这个格式就称之为yaml语法。学习一下yaml语法。
使用剧本批量安装nginx服务
# 1.批量卸载nginx服务
# 先查询被管理节点的机器,是否装了nginx
[root@Ansible-01 ~]# ansible shenfu -m shell -a "rpm -qa nginx"
123.57.235.127 | CHANGED | rc=0 >>
nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64# 批量卸载nginx
[root@Ansible-01 ~]# ansible shenfu -m yum -a "name=nginx state=absent"
123.57.235.127 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": true,"msg": "","rc": 0,"results": ["Removed: nginx-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64","Removed: nginx-all-modules-1:1.14.1-9.module_el8.0.0+184+e34fea82.noarch","Removed: nginx-mod-http-image-filter-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64","Removed: nginx-mod-http-perl-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64","Removed: nginx-mod-http-xslt-filter-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64","Removed: nginx-mod-mail-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64","Removed: nginx-mod-stream-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64"]
}# 2.编写一个yaml配置文件,注意语法格式
[root@Ansible-01 ~]# cat -n /tmp/install_nginx.yaml1 # install nginx yaml,by shenfu2 - hosts: all3 tasks:4 - name: Install nginx service5 yum: name=nginx state=present6 - name: Copy Nignx.conf to every_server7 copy: src=./nginx.conf# 1.表示注释信息,可以用#号,也可以用三个短横线当做注释
# 2.表示定义playbook管理的目标机器,可以写all管理所有,也可以单独的填写ip,也可以填写主机名
# 3.定义playbook需要完成的任务的集合,比如你要定义2,第一个是安装nginx通过yum模块,第二个是通过copy模块,发送管理节点上的配置文件,发送给被管理的客户端机器
# 4.定义任务的名字,是一个自定义的帮助信息
# 5.定义任务的具体操作,指定用哪些模块,与参数
# 6~7行作用是和4~5行是一样了
playbook剧本的组成规范
剧本很重要的就是,定义演员的信息(其实就是定义主机的信息),演员的具体任务(以及主机要执行的模块,动作)。
Ansible的剧本也是由两个最基本的部分组成。
- hosts定义的被管理的主机列表信息(演员有哪些)
- tasks关键词定义的被管理主机需要执行的动作(演员要做什么事)
剧本之hosts部分
# 方式一,定义被管理主机的ip地址
- hosts: 192. 168.178.138tasks:- name: 这是我第一个任务yum: name=nginx state=installed# 方式二,定义被管理主机的名字,注意该主机名必须能够解析
- hosts: backup01tasks:- name:需要执行的动作#方式三,定义多个主机信息
- hosts: 192.168.178.138,192.168.178.139,backup01tasks:- name: 执行的动作...#方式四,填写所有的主机
- hosts: alltasks:
定义被管理的主机,有一个重要的前提,就是被管理的主机必须在ansible管理的hosts文件中有对应的信息,否则识别不了/etc/ansible/hosts
剧本之tasks讲解
- 变量形式定义task任务,name="shenfu” age=18
- 还可以使用字典形式定义,特点是
key:value
,相关的词语,自卑,自豪,自律,自力更生
- name:“shenfu”
- age:18
- addr: “北京沙河”
# 定义task方式一:采用变量形式设置任务
tasks:- name: make sure apache is runingservice: name=httpd state=running - name: copy file. .copy: src=/etc/ansible/hosts dest=/etc/ansible/hostsowner=root group=root mode=0644# 当传入的参数列表过长的时候,我们还可以将其分割# 方式二,采用字典形式设置多个任务
tasks:- name:copy file to client...copy:src: /etc/ansible/hosts dest: /etc/ansible/hostsowner: rootgroup: rootmode: 0644
yaml语法规范
在学习ansible的时候,编写palybook是最重要的环节,那么palybook是遵循yaml语法,因此需要掌握yaml语法的数据格式。
目前主流使用的数据格式,有json、xml、yaml,都属于数据序列化格式。
yaml更容易被解析,已读,因此更多的使用在了配置文件当中,ansible、saltstack、k8s都用yaml。
yaml基本语法
- 大小写敏感
- 使用缩进表示层级的关系(同样的空格数量)
- 在配置缩进关系的时候,禁止用tab键,请一个一个用空格键表示
- 相同元素的左侧空格数目不重要,只需要对其即可
yaml 语法支持的数据结构
- 对象,指的就是字典的概念,key: value,注意key: 后面有一个空格
- 数组,指的就是列表的概念
playbook编写的规范
剧本的缩进关系,一般是两个空格作为一个缩进,且空格数目无所谓,左侧对齐即可。
- hosts: shenfutasks: - name: 安装nginx yum: name=nginx state= installed- name: 执行脚本script:/server/scripts/test_ansible.sh
playbook实际编写与执行
剧本编写完成之后,还得执行才能工作。
在ansible程序中,加载模块的功能可以直接使用ansible adhoc命令行形执行加载剧本中的功能,可以使用ansible- playbook命令去执行脚本。
# 基本执行语法
ansible-playbook nginx.yaml # 可以使用绝对相对路径# 查看剧本命令的帮相信息
ansible-playbook -h# 查看剧本的执行详细输出
ansible-playbook nginx.yaml --verbose# 查看剧本影响的主机列表信息
ansible-playbook nginx.yaml --list-hosts# 执行剧本加载指定的主机清单文件,默认剧本使用的是/etc/ansible/hosts
ansible-playbook nginx.yaml -i /etc/my_ansible/hosts# 执行剧本并且检查语法
ansible-playbook nginx.yaml --syntax-check# 调试剧本,只是调试,但是不会对被管理节点发生改变
ansible-playbook nginx.yaml -C # 模拟执行,不影响客户端机器
playbook之部署rsync服务
进行思考,剧本如何设计,和安排
先考虑好部署rsync的整个过程
部署的思路过程如下,然后转化成playbook剧本的过程就可以
- 安装rysnc服务,使用yum
- 编写rsync配置文件,(常用的操作是,在Ansible-01管理机器上编写好配置文件,分发给客户端机器即可) copy模块
- 创建rsync用户,使用ansible的user模块
- 创建用于rsync验证的文件,还是选择在Ansible-01上写好后分发,copy模块,注意文件权限设置
- 创建数据备份的文件夹,rsync指定 了bakcup模块,备份目录是
/data_ backup/,调用file模块创建文件夹- 启动rsync服务端,且是守护进程模式,shell模块,systemd模块
上述部署思路转化为ansible playbook的写法
[root@m01 myyaml]# cat install_rsync.yaml
- hosts: 192.168.178.115tasks:- name: step01,install rsync serviceyum: name=rsync state=installed- name: step02,edit rsync conf filecopy: src=/etc/ansible/rsync_conf/rsyncd.conf
dest=/etc/rsync/conf/- name: step03,create user rsyncuser: name=rsync state=present createhome=no
shell=/sbin/nolgoin- name: step04,create user auth filecopy: src=/etc/ansible/rsync_conf/rsync.password
dest=/etc/rsync/conf/ mode=0600- name: step05,create backup dirfile: dest=/data_backup/ state=directory owner=rsync
group=rsync- name: step06,run rsync servershell: rsync --daemon creates=/var/run/rsync.pid
运行剧本的方法
ansible-playbook install_rsync.yaml -C
ansible-playbook install_rsync.yaml
----根据于超老师视频讲解进行笔记,做了相对更改,如有侵权请联系作者删除。
Ansible自动化运维(五)----Ansible剧本相关推荐
- ansible 自动化运维工具——ansible Ad-Hoc 使用
Ansible模块官网 CentOS7下使用ansible远程连接被管理主机 前提都是关闭防火墙以及selinux 准备阶段 准备三台纯新的 CentOS7 服务器,一台安装 ansible1 ,其他 ...
- ansible自动化运维工具
ansible自动化运维工具 ansible自动化运维脚本工具 ansible自动化运维工具 一.ssh工作原理和基本命令 1.ssh原理 2.ssh的基本命令 二.anible 自动化运维工具 1. ...
- 自动化运维工具ansible(安装与模块介绍)
自动化运维工具ansible(安装与模块介绍) 一.ansible运维工具概述 (一).ansible的特点 (二).ansible的原理 (三)ansible的优点 二.安装ansible 三.an ...
- 自动化运维工具Ansible实战---常用模块
Ansible默认提供了很多模块来供我们使用.在Linux中,我们可以通过 ansible-doc -l 命令查看到当前Ansible支持哪些模块,通过 ansible-doc -s [模块名] 又可 ...
- 大型企业中如何批量管理千万台服务器之ansible自动化运维工具详解 [⭐建议收藏⭐]
文章目录 ansible 自动化运维工具 详解 关于作者 作者介绍 一.ansible 概述 1.1 ansible 概述 1.2 是什么要使用 ansible 1.3 ansible 功能 1.4 ...
- 自动化运维工具ansible的安装管理以及模块介绍
自动化运维工具ansible的安装管理以及模块介绍 目录 自动化运维工具ansible的安装管理以及模块介绍 一.ansible概述 1.几种常用运维工具比较 2.Ansible简介 3.Ansibl ...
- 自动化运维工具-Ansible的Playbook的使用
Playbook的使用 前言 一.Playbook是什么? 二.playbook使用场景 三.Playbook格式说明 四.Play book变量的使用 1 在主机列表定义变量 2 在playbook ...
- 自动化运维工具Ansible详细部署
一.基础介绍 ================================================================================= 1.简介 ansibl ...
- Ansible自动化运维工具介绍
介绍 Ansible自动化运维工具,是基于Python开发的,可以实现批量系统配置,批量程序部署.批量运行命令等等. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ans ...
最新文章
- Python——eventlet.websocket
- android fps 垂直同步,浅谈Android流畅度
- 前端画面-下拉后滚动
- 在方法的形参位置使用@Qualifier注解||@Autowired 与@Resource的区别
- 深度学习 500 问!一份火爆 GitHub 的面试手册
- ldap配置系列二:jenkins集成ldap
- Chrome中输入框默认样式移除
- window10怎么卸载php,window_win10怎么卸载程序?win10卸载程序教程,当win10正式版发布以后,不少 - phpStudy...
- python中怎么判断字母大小写_python判断字符串是字母 数字 大小写(转载)
- 十一种全球著名商业分析模型
- python 3.9 性能_Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型
- 【采访】腾讯社交广告高校算法大赛第二周周冠军——Groot 比赛经验及心得分享
- 基于react-app搭建react-router+redux项目
- Microsoft Visio 2003 对象导入 word 进行编辑
- 移动硬盘坏点测试软件,移动硬盘坏道检测修复
- android游戏录音,音频录音剪辑软件 1.1.15 安卓版
- 【STM32f401学习之路-01】GPIO实战—点灯、检测按键
- Apache Ranger安全区介绍
- Python matplotlib label设置斜体字符
- 气液增压缸用于风扇叶铆钉铆接(产品试压)
热门文章
- 优雅的使用百度搜索,安装广告过滤插件
- 叉车防撞UWB系统应用场景有哪些
- 中国时尚KOL的流变,谁会成为奢侈品牌的“新宠”?
- 【ABviewer从零开始教学查看器篇④】可视化参数和图纸定位
- 火影忍者ol手游今天未能连接服务器,火影忍者ol游戏上不去怎么办_火影忍者ol登录/安装失败解决方法...
- 使用Colab训练NN模型并利用Tensorflow.js部署网页应用
- 发掘数据宝藏,引领市场营销数字化转型
- android用户登录验证
- 华为交换机关闭网口_华为EPON-MA5626E-24交换机取消端口隔离改普通教程
- 哇!全民健身计划2025