ansible自动化运维,(2)ansible-playbook

三种常见的数据格式:

XML:可扩展标记语言,用于数据交换和配置

JSON:对象标记法,主要用来数据交换或配置,不支持注释

YAML:不是一种标记语言,主要用来配置,大小写敏感,不支持tab

tomcat的语法格式就是xml格式,自动化脚本就是用的yaml格式。

一、特点:

playbook剧本是由一个或多个play组成的列表。

play的主要功能在于将定义的一组主机,装扮成事先通过ansible的task定义好的任务角色。task实际是调用ansilbe的一个module,将多个play组织在一个playbook中,即可以让它们联合起来,按事先编排的机制执行预定义的动作。

playbook文件采用yaml(yml)语言编写.

二、yaml语言

特性:

可读性好、和脚本语言的交互性好、使用实现语言的数据类型、有一个一致的信息模型、易于实现、可以基于流来处理、表达能力强扩展性好。

语法:

在编写时,在第一行用连续的三个"-"开始,最后用三个点...结尾。一般都省略三个点。使用#号注释。它有严格的缩进要求,不能空格和tab键混用。

三、核心组件

在一个playbook中有多个组件组成

hosts执行的远程主机列表

tasks任务集,有多个task的元素组成的列表,一个name只能包括一个task,也是组成完整代码块的最少元素。

templates模板,可替换模板文件中的变量并实现一些简单逻辑的文件。

handlers和notify结合使用,由特定条件触发的操作,满足条件执行,不满足不执行。

tags标签,指定某条任务执行,用于选择运行playbook中的部分代码。

文件以yaml后缀或yml后缀,习惯用yml。

四、playbook

可以通过yum安装的方式,需要epel源。

yum install -y epel-release.noarch

yum install -y ansible

配置文件在/etc/ansible/下。有三个文件:

[root@Node1 ansible]#:ls
ansible.cfg  hosts  roles

ansible.cfg配置文件

hosts主机

roles文件夹,角色

详细解释参考上一篇文件:Ansible自动化运维,(1)模块

在hosts中加入[web]组,有两台主机:7-2和7-3,7-1作为ansible主控端

在ansible下创建一个test.yaml文件。ping web中的两台主机。

---

- hosts: web

  remote_user: root        #默认就是root用户登录,也可以不写

  tasks:                       #任务

    - name: ping     #name就是一个描述信息。下面跟着一个执行块,ping

      ping:

检查语法:ansible-playbook --syntax-check test.yml,也可以ansible-playbook -C test.yml空跑不执行。

使用ansible-playbook执行一下测试。

格式:

格式:
- - -
hosts指定了在哪些机器上执行任务
remote_user 以谁的身份运行
tasks 任务列表,你要做哪些事情
gather_facts:no 表示不收集信息,但是使用变量时需要收集

例,创建用户:

vim add_user.yml

---

- hosts: web

  gather_facts: no


  tasks:

    - name: create user

      user:

        name: usr1

        uid: 1111

        system: yes    #系统用户

还可以写一行:user: name=usr1 uid=1111 system=yes

执行该文件:ansible-playbook add_user.yml

去远端主机查看用户文件是否创建成功了:

还可以指定shell类型,是否允许登录:shell=/sbin/nologin。是否创建家目录:create_home=no

删除用户usr1:使用state: absent

安装httpd:

剧本编写:

service是服务,开启httpd服务

执行:

name是描述信息,执行到的哪一个剧本。

验证是否安装并开启httpd:

删除httpd:

验证:发现已经被删除了httpd服务。

yum安装nginx:先安装依赖包

在主控端准备一个主配置文件nginx.conf和主页面index.html。

主配置文件是在本地yum下的epel源和nginx,把本地的nginx.conf复制到/data/下。

主页面是自己写一个。

[root@Node1 ansible]#:cat /data/index.html 
7-1

 [root@Node1 ansible]#:vim install_nginx.yml

---
- hosts: web

  tasks:
    - name: add repository
      yum_repository:                #epel源,变量
        name: epel
        description: epel yum repo
        baseurl: https://download.fedoraproject.org/pub/epel/$releasever/$basearch/
        gpgcheck: no

    - name: install nginx                #安装nginx
      yum: name=nginx state=present

    - name: config file                        #配置文件
      copy: src=/data/nginx.conf dest=/etc/nginx/nginx.conf

    - name: web page                        #主页面
      copy: src=/data/index.html dest=/usr/share/nginx/html/index.html

    - name: start nginx                        #开启nginx
      service: name=nginx state=started enabled=yes

执行这个安装文件:

[root@Node1 ansible]#:ansible-playbook install_nginx.yml

PLAY [web] *****************************************************************************************

TASK [Gathering Facts] *****************************************************************************
ok: [192.168.114.20]
ok: [192.168.114.30]

TASK [add repository] ******************************************************************************
ok: [192.168.114.30]
ok: [192.168.114.20]

TASK [install nginx] *******************************************************************************
changed: [192.168.114.20]
changed: [192.168.114.30]

TASK [config file] *********************************************************************************
changed: [192.168.114.20]
changed: [192.168.114.30]

TASK [web page] ************************************************************************************
changed: [192.168.114.20]
changed: [192.168.114.30]

TASK [start nginx] *********************************************************************************
changed: [192.168.114.30]
changed: [192.168.114.20]

PLAY RECAP *****************************************************************************************
192.168.114.20             : ok=6    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
192.168.114.30             : ok=6    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

执行成功:发现已启动:

使用主控端访问测试:

tags标签:

如果当某个name没有执行成功,可以在name下加入tags: page,在执行的时候可以单独执行这个name块。

例如,上面的yum安装nginx中,最后启动的那一步写错了,改回来之后,只需要执行那一个角色就好了,这时只要加入tags: page

....

    - name: start nginx                        #开启nginx

       tags: page
      service: name=nginx state=started enabled=yes

在运行的时候指定page:ansible-playbook -t page install_nginx.yml

notify和handlers:

notify监控,handlers执行,notify监控任务,如果改变了,就执行handlers,handlers是与tasks同级别的,缩进相同。

拿上面nginx举例:我们拿复制主页那一步举例:在copy下添加一个notify

    - name: web page                        #主页面
      copy: src=/data/index.html dest=/usr/share/nginx/html/index.html

      notify:

        - restart nginx


  handlers:

    - name: restart nginx

      service: name=nginx state=restarted

解释:由于copy具有幂等性,如果copy发生改变,也就是index.html文件发生改变,就会执行notify,- restart nginx要与handlers中的 - name: restart nginx一样。

验证:

先修改两个远端服务器的一个端口:添加一个端口8080

vim /etc/nginx/nginx.conf

此时,如果主控端不修改index.hmtl文件。是不会执行notify的。再标注一个tags:用于执行特定的任务。如图:

如果copy有改变,就会被notify监控到,进而执行handlers。重启nginx服务,就会多了个8080端口。

我们先修改index.html文件:追加的方式:echo "7-11" >> /data/index.html

执行该文件,指定特定的任务加-t

可以发现,成功执行,执行的是page块,重启了nginx。

测试是否开启了8080端口:

---end---

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科技未来·无限可能“2024世亚智博会”

随着科技的飞速发展,人类社会正以前所未有的速度迈向一个全新的时代。科学技术作为第一生产力,不仅极大地推动了经济和社会的发展,更在不断地改变着我们的生活方式和思维方式。特别是在人工智能、物联网等前沿科技领域,其创新和应…

【ZYNQ】VDMA 的介绍

AXI VDMA 是 Xilinx 官方提供的高带宽视频 DMA IP,用于实现 AXI4-Stream 视频数据流与 AXI4 接口数据的转换,同时提供帧缓存与帧同步控制功能。本文主要介绍 AXI VDMA 的基本结构与原理,并简要介绍 VDMA 的配置与使用方法。 目录 1 VDMA 简介…

egg代码生成器

今天给大家分享一下egg的代码生成器,这个其实原理很简单,说白了就是用到了nodejs的一个文件io的操作,通过一系列配置参数解析然后生成一个很长的字符串,写入到文件中,最后导出到我们指定的文件夹。 前提概要 为什么我…

web前端——VUE

1.什么是框架? ①概述 框架结构就是基本功能,把很多基础功能已经实现了、封装了。在基础语言之上,对各种基础功能进行封装,方便开发者,提高开发效率 ②前端框架 javaScript是原生的 vue.js: 是一个js框架&…

最新解决docker镜像无法下载问题

1.增加或修改daemon.json文件 ​ cd /etc/dockervi daemon.json{ "registry-mirrors": [ "https://docker.m.daocloud.io" ] }2.重启docker服务 sudo systemctl daemon-reload sudo systemctl restart docker 3.验证 下载https://txodoo.cn/blog/11/d…

双指针dd d df f

像二分这样的算法,我们甚至可以不用管,直接在问题空间之内搜索,但是双指针也非常好用,帮助我们来减少枚举对象,我们来总结一下这经典的三个题目: 最长上升不重复子序列活动 - AcWings 首先一定要写…

LabVIEW电路板故障诊断系统

基于LabVIEW软件开发的电路板故障诊断系统,涵盖功能测试、性能测试和通讯测试等多个方面。系统集成了多种硬件设备,包括NI PXI-1033机箱、NI PXI-4071数字万用表、NI PXI-4130电源模块、NI PXI-8512 CAN模块等,通过模块化设计实现了对电路板的…

shell中的函数

统计家目录下.c文件的个数 终端输入一个.sh文件,判断文件是否由可执行权限,如果有可执行权限运行脚本,没有可执行权限添加可执行权限后,再运行脚本 写一个函数,输出当前用户uid和gid,并使用变量接收结果 终…

【LLM Transparency Tool】用于深入分析和理解大型语言模型(LLM)工作原理的工具

背景 LLM Transparency Tool 是一个用于深入分析和理解大型语言模型(LLM)工作原理的工具,旨在增加这些复杂系统的透明度。它提供了一个交互式界面,用户可以通过它观察、分析模型对特定输入(prompts)的反应…

加速科技Flash存储测试解决方案 全面保障数据存储可靠性

Flash存储芯片 现代电子设备的核心数据存储守护者 Flash存储芯片是一种关键的非易失性存储器,作为现代电子设备中不可或缺的核心组件,承载着数据的存取重任。这种小巧而强大的芯片,以其低功耗、可靠性、高速的读写能力和巨大的存储容量&…

OpenGL-ES 学习(6)---- 立方体绘制

目录 立方体绘制基本原理立方体的顶点坐标和绘制顺序立方体颜色和着色器实现效果和参考代码 立方体绘制基本原理 一个立方体是由8个顶点组成,共6个面,所以绘制立方体本质上就是绘制这6个面共12个三角形 顶点的坐标体系如下图所示,三维坐标…

【目标检测】Yolov8 完整教程 | 检测 | 计算机视觉

学习资源:https://www.youtube.com/watch?vZ-65nqxUdl4 努力的小巴掌 记录计算机视觉学习道路上的所思所得。 1、准备图片images 收集数据网站:OPEN IMAGES 2、准备标签labels 网站:CVAT 有点是:支持直接导出yolo格式的标…

搜索引擎的妙用:掌握这些技巧,让你的搜索更高效!

搜索引擎是我们日常生活中不可或缺的工具,它帮助我们快速找到所需的信息。但是,你真的知道如何高效地使用搜索引擎吗?下面,我将分享一些高级搜索技巧,让你的搜索更加精准和高效。 1. 完全匹配搜索 当你想要搜索一个特…

第三十三篇——互联网广告:为什么Google搜索的广告效果好?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 对于信息的利用,再广告这个维度中去洞察,你又能发…

光伏储能为什么变得那么受欢迎?

在当今这个追求可持续发展和清洁能源的时代,光伏储能技术逐渐崭露头角,并成为了能源领域的热门话题。其受欢迎程度不断攀升,背后有着多方面的原因。光伏储能技术的优点众多,涵盖了多个方面,以下是关于其安全、寿命等关…

【BUG记录】条件查询没有查询结果 || MybatisPlus打印查询语句

结论 先说结论,查询没有结果,可能是数据库连接,数据问题之类,最有可能的根本原因是查询语句问题,需要想办法检查查询语句,使用mybatisPlus等自动生成查询语句的框架不能直接看语句,可以依靠日志…

Python低溫半导体电子束量子波算法计算

🎯要点 🎯任意维度求解器,绘制三维投影结果 | 🎯解二维静电场、静磁场 | 🎯狄利克雷、诺依曼条件几何矩阵算子 | 🎯算法模拟低溫半导体材料 | 🎯计算曲面达西流 | 🎯电子结构计算和…

洗地机哪一款好用?家用洗地机推荐

洗地机是家庭必备的高效深度清洁机器,对于家庭用户而言,它可以自动吸尘、拖洗、自清洁,使用便捷高效,为众多家庭用户所欢迎。但市场上的洗地机品牌众多,很多消费者陷入了购买陷阱,为了帮助广大用户选购到合…

解决SD卡被写保护问题

存储卡在使用过程中,有时会遇到写保护问题,导致无法写入或删除数据。这可能会对用户的正常使用造成困扰。MK米客方德将为您介绍几种常见的解决方法,帮助用户解除存储卡的写保护。 一、检查物理写保护开关 许多存储卡,如SD卡&…

若依 ruoyi 显示隐藏搜索框 显示隐藏列

一、 显示隐藏搜索框 页面搜索关键字 showSearch,设置是否显示 隐藏: 显示: 二、自定义设置 显示隐藏列 1. 页面搜索关键字 right-toolbar,新增: :columns"columns" 2. js下 data(){return{}}中新增&am…