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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

BUG cn.bing.com 重定向的次数过多,无法搜索内容

BUG cn.bing.com 重定向的次数过多,无法搜索内容 环境 windows 11 edge浏览器详情 使用Microsoft Edge 必应搜索显示"cn.bing.com"重定向次数过多,无法进行正常的检索功能 解决办法 检查是否开启某些科_学_上_网(翻_墙&#xf…

电脑高手推荐:三款超实用软件,让你的电脑如虎添翼!

7Zip 7-Zip是一款免费且开源的文件压缩工具,支持多种文件格式,包括其自带的7z格式、ZIP、GZIP、BZIP2和TAR等。该软件由Igor Pavlov于1999年开发,具有高压缩比的特点。7-Zip不仅可以在Windows操作系统上使用,还可以在Unix-like的操…

做到这九点,工作就无后顾之忧

大家好,今天又跟大家分享一篇,怎么在职场上做到挺起腰杆做事。全文共分9点,尤其最后一点最为重要。篇幅有点长,全文共计三千多字,请耐心看完。 如果您觉得对您有些帮助,点赞收藏关注。谢谢您的支持。 在职场…

LDO芯片手册,实例应用分析

在进行电路设计时LDO是经常用到的,尤其在为芯片,晶振等敏感电路进行供电时应用更多,下面选取一款比较常用的LDO芯片,一起进行更深入的学习。 SGM2036特点简介 SGM2036,圣邦微一款比较常用的LDO芯片手册 可以先大致看…

广州数据中心机房搬迁验收要求

1.验收要求 新机房装修工程全部竣工,各类环境设备安装到位,包括空调、UPS、柴油发电机等设备安装调试完毕,机房接地、防雷、消防系统检验合格,机房综合布线工作完成,机房各项环境指标达标,机房整体通过验收…

MySQL连接

MySQL工具包 MySQL实现简单链接 一 引入工具包 JBDCUtils,无需更改,直接使用即可。 import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties;public class JDBCUtil {private static String URL;p…

mapstruct实现各个实体间的类型转换(DTO转BO、BO转Entity)的实践

一、引入 在没有遇见mapstruct的时候,实现各个实体之间的转换,都是手动转换实现的,属性少一带你还好,当属性一多,代码就会变得很冗余,没必要的非逻辑的代码就会加多。。。。 比如: public cl…

Python+Pytest+Yaml+Request+Allure+GitLab+Jenkins接口自动化测试框架概解

PythonPytestYamlAllure整体框架目录(源代码请等下篇) 框架详解 common:公共方法包 –get_path.py:获取文件路径方法 –logger_util.py:输出日志方法 –parameters_until.py:传参方式方法封装 –requests_util.py:请求方式方法封…

洗地机怎么选择最好?四大洗地机精选放心入手

在当今生活节奏飞快的社会中,人们越来越渴望拥有一款高性能、实用方便的家用洗地机,能够帮助我们节省大量的清洁时间。因为洗地机它是吸尘器的升级版,清洁力比扫地机器人更强,洗地机通过高速旋转的风机,产生超大吸力&a…

无源电压继电器 JDY-1210AW 导轨安装 约瑟JOSEF

系列型号: JDY-1002AW电压继电器;JDY-1002B电压继电器; JDY-1110AW电压继电器;JDY-1110B电压继电器; JDY-1220AW电压继电器;JDY-1220B电压继电器; JDY-1100AW电压继电器;JDY-110…

昇思25天学习打卡营第一天|快速入门

背景 华为组织了昇思25天学习营,从基础开始,提供算力支持,还是体验蛮好的。推荐大家报名参加。 学习内容 今天的内容是快速入门,很简单,当是复习基础内容了。 下载数据集》模型组网》模型训练》保存模型&#xff0c…

mongodb 查询语句学习笔记

基础查询 正则查询 {status: A,$or: [{ qty: { $lt: 30 } }, { item: { $regex: ^p } }] }AND 查询 { "size.h": { $lt: 15 }, "size.uom": "in", status: "D" }OR 查询 { $or: [ { status: "A" }, { qty: { $lt: 30 } …

进程、CPU、MMU与PCB之间的关系

目录 进程与cpu(中央处理器) 源代码、程序、cpu与进程的关系 cpu超线程 CPU的简易架构与处理数据过程 进程与MMU(内存管理单元) mmu作用 cpu和mmu的关系 进程与PCB(进程控制块) PCB介绍与内部成员…

嵌入式项目分享| 终极智能手表,全过程+全开源分享

这是一个非常完整的智能手表开源项目,功能齐全,且资料开源,如果你是:自己平时喜欢diy的工程师,想要提升开发技能的学生,马上要做毕设的大四学生,这个手表很值得一做,别错过了~~ 所有开源的资料以及原文链接见文末。 先来看下这个手表的功能: 首先,是一个可以佩戴的手…

如何在 SwiftUI 视图中显示应用图标和版本

文章目录 前言获取应用图标获取应用版本创建 SwiftUI 视图总结前言 在应用中显示应用图标和版本是为用户提供快速识别应用版本和变体的好方法,无论是内部用户(如测试人员或利益相关者)还是外部用户。 在本文中,我将展示如何创建一个可访问的 SwiftUI 视图,既能显示应用图…

【UE5.3】笔记4-自定义材质蓝图

正常来说,我们都是拿到什么材质用什么材质,那么我们如何去创建自定义的材质呢? 首先,创建MyMaterials文件夹用来存放我们自制的材质; 然后,右键创建一个材质,起个名字,双击打开&am…

深入学习Java1415新特性

一、超实用的Java14新特性 1.Java14新特性概述 2.环境安装 3.超实用新特性

大学物理(下)笔记

摘录来自笔记网站的笔记。笔记网站详见https://onford.github.io/Notes/。 大学物理(下)笔记 部分常用物理常量的计算值 C h a p t e r 9 Chapter9 Chapter9 恒定磁场 毕奥-萨伐尔定律 磁场和电场在很多性质上是有共性的,很多时候可以拿它…

番外篇 | YOLOv8改进之利用轻量化卷积PConv引入全新的结构CSPPC来替换Neck网络中的C2f | 模型轻量化

前言:Hello大家好,我是小哥谈。本文使用轻量化卷积PConv替换Neck中C2f模块中Bottleneck里的传统卷积核得到CSPPC模块,使得模型更加轻量化。🌈 目录 🚀1.基础概念 🚀2.网络结构 🚀3.添加步骤 🚀4.改进方法 🍀🍀步骤1:block.py文件修改 🍀🍀步…

尚品汇-(七)

(1)在网关中实现跨域 全局配置类实现 包名:com.atguigu.gmall.gateway.config 创建CorsConfig类 Configuration public class CorsConfig {Beanpublic CorsWebFilter corsWebFilter(){// cors跨域配置对象CorsConfiguration configuration…