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服务

  1. 进行思考,剧本如何设计,和安排

  2. 先考虑好部署rsync的整个过程

    部署的思路过程如下,然后转化成playbook剧本的过程就可以

    1. 安装rysnc服务,使用yum
    2. 编写rsync配置文件,(常用的操作是,在Ansible-01管理机器上编写好配置文件,分发给客户端机器即可) copy模块
    3. 创建rsync用户,使用ansible的user模块
    4. 创建用于rsync验证的文件,还是选择在Ansible-01上写好后分发,copy模块,注意文件权限设置
    5. 创建数据备份的文件夹,rsync指定 了bakcup模块,备份目录是
      /data_ backup/,调用file模块创建文件夹
    6. 启动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剧本相关推荐

  1. ansible 自动化运维工具——ansible Ad-Hoc 使用

    Ansible模块官网 CentOS7下使用ansible远程连接被管理主机 前提都是关闭防火墙以及selinux 准备阶段 准备三台纯新的 CentOS7 服务器,一台安装 ansible1 ,其他 ...

  2. ansible自动化运维工具

    ansible自动化运维工具 ansible自动化运维脚本工具 ansible自动化运维工具 一.ssh工作原理和基本命令 1.ssh原理 2.ssh的基本命令 二.anible 自动化运维工具 1. ...

  3. 自动化运维工具ansible(安装与模块介绍)

    自动化运维工具ansible(安装与模块介绍) 一.ansible运维工具概述 (一).ansible的特点 (二).ansible的原理 (三)ansible的优点 二.安装ansible 三.an ...

  4. 自动化运维工具Ansible实战---常用模块

    Ansible默认提供了很多模块来供我们使用.在Linux中,我们可以通过 ansible-doc -l 命令查看到当前Ansible支持哪些模块,通过 ansible-doc -s [模块名] 又可 ...

  5. 大型企业中如何批量管理千万台服务器之ansible自动化运维工具详解 [⭐建议收藏⭐]

    文章目录 ansible 自动化运维工具 详解 关于作者 作者介绍 一.ansible 概述 1.1 ansible 概述 1.2 是什么要使用 ansible 1.3 ansible 功能 1.4 ...

  6. 自动化运维工具ansible的安装管理以及模块介绍

    自动化运维工具ansible的安装管理以及模块介绍 目录 自动化运维工具ansible的安装管理以及模块介绍 一.ansible概述 1.几种常用运维工具比较 2.Ansible简介 3.Ansibl ...

  7. 自动化运维工具-Ansible的Playbook的使用

    Playbook的使用 前言 一.Playbook是什么? 二.playbook使用场景 三.Playbook格式说明 四.Play book变量的使用 1 在主机列表定义变量 2 在playbook ...

  8. 自动化运维工具Ansible详细部署

    一.基础介绍 ================================================================================= 1.简介 ansibl ...

  9. Ansible自动化运维工具介绍

    介绍 Ansible自动化运维工具,是基于Python开发的,可以实现批量系统配置,批量程序部署.批量运行命令等等. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ans ...

最新文章

  1. Python——eventlet.websocket
  2. android fps 垂直同步,浅谈Android流畅度
  3. 前端画面-下拉后滚动
  4. 在方法的形参位置使用@Qualifier注解||@Autowired 与@Resource的区别
  5. 深度学习 500 问!一份火爆 GitHub 的面试手册
  6. ldap配置系列二:jenkins集成ldap
  7. Chrome中输入框默认样式移除
  8. window10怎么卸载php,window_win10怎么卸载程序?win10卸载程序教程,当win10正式版发布以后,不少 - phpStudy...
  9. python中怎么判断字母大小写_python判断字符串是字母 数字 大小写(转载)
  10. 十一种全球著名商业分析模型
  11. python 3.9 性能_Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型
  12. 【采访】腾讯社交广告高校算法大赛第二周周冠军——Groot 比赛经验及心得分享
  13. 基于react-app搭建react-router+redux项目
  14. Microsoft Visio 2003 对象导入 word 进行编辑
  15. 移动硬盘坏点测试软件,移动硬盘坏道检测修复
  16. android游戏录音,音频录音剪辑软件 1.1.15 安卓版
  17. 【STM32f401学习之路-01】GPIO实战—点灯、检测按键
  18. Apache Ranger安全区介绍
  19. Python matplotlib label设置斜体字符
  20. 气液增压缸用于风扇叶铆钉铆接(产品试压)

热门文章

  1. 优雅的使用百度搜索,安装广告过滤插件
  2. 叉车防撞UWB系统应用场景有哪些
  3. 中国时尚KOL的流变,谁会成为奢侈品牌的“新宠”?
  4. 【ABviewer从零开始教学查看器篇④】可视化参数和图纸定位
  5. 火影忍者ol手游今天未能连接服务器,火影忍者ol游戏上不去怎么办_火影忍者ol登录/安装失败解决方法...
  6. 使用Colab训练NN模型并利用Tensorflow.js部署网页应用
  7. 发掘数据宝藏,引领市场营销数字化转型
  8. android用户登录验证
  9. 华为交换机关闭网口_华为EPON-MA5626E-24交换机取消端口隔离改普通教程
  10. 哇!全民健身计划2025