从小白到大神之路之学习运维第61天--------Ansible自动化运维工具(playbook配置文件深入了解)

news2024/11/14 20:30:42

第三阶段基础

时  间:2023年7月14日

参加人:全班人员

内  容:

playbook配置文件

目录

playbook配置文件

一、playbook配置文件概念

修改hosts文件

建立playbook配置文件

yml脚本写法注释:

二、Playbook的核心元素

三、Playbook的用法

四、实验案例:

(一)工作流程

1、语法检查  

2.预测试   (最重要)

3.列出主机

4.列出任务

5.列出标签

6.进行测试   (预测试成功之后就可以进行测试了)

7.测试查看

(二)触发器

handlers触发器的实验实例如下:

脚本注释:

实  验:

1、预测试:

2、执行测试:

3、结果验证


playbook配置文件

一、playbook配置文件概念

 Playbook配置文件使用YAML语法,具有简洁明了,结构清晰等特点。

Playbook配置文件类似于shell脚本,是一个YAML格式的文件,用于保存针对特定需求的任务列表;

前面介绍的ansible命令虽然可以完成各种任务,但是当配置一系列任务时,逐条输入命令就显得效率非常低下,更有效的方式在playbook配置中配置所有的任务代码;

利用ansible-playbook命令执行该文件,可以实现自动化运维;

YAML文件的扩展名通常为.yaml或.yml。

YAML语法和其他高级语言类似,其结构通过缩进来展示,通过“-“来表达选项,通过冒号“:”来分隔键和值。整个文件以“---”开始并以“…”结束,如下所示:

例:

修改hosts文件

修改配置如下:

vim /etc/ansible/hosts

配置如下:

建立playbook配置文件

vim /etc/ansible/test1.yml

配置如下:

yml脚本写法注释:

vim /etc/ansible/test1.yml #创建test,yml文件

--- #开头格式(可忽略)

- hosts: hu1 #表示对test01(192.168.59.138)的操作

  remote_user: root #远端执行用户身份root

  tasks: #任务列表

    - name: adduser #任务名称

      user: name=user2 state=present #执行user模块创建用户

      tags: #创建tag标签

      - testa #tag标签为testa

    - name: addgroup #任务名称

      group: name=tests system=yes #执行group模块创建一个组账号

      tags: #创建tag标签

      - testb #tag标签为testb

- hosts: hu2 #表示对test02(192.168.59.140)的操作

  remote_user: root #远端执行用户身份root

  tasks: #任务列表

    - name: copy file #任务名称

      copy: src=/etc/passwd dest=/home #执行copy模块复制文件

      tags: #创建tag标签

      - testc #tag标签为testsc

... #结尾格式(可忽略)

所有的“-”和“:”后面均有空格,而且要注意缩进和对齐

二、Playbook的核心元素

包含:

hosts:任务的目标主机,多个主机用冒号分隔,一般调用/etc/ansible/hosts中的分组信息;

remote_user:远程主机上,运行此任务的默认为root运行;

tasks:任务,即定义的具体任务,由模块定义的操作列表;

handlers:触发器,类似tasks,只是在特定的条件下才会触发任务。某任务的状态在运行后changed时,可通过“notify”通知给相应的handlers进行触发执行;

roles:角色,将hosts剥离出去,由tasks,handlers等所组成的一种特定的结构集合。

三、Playbook的用法

Playbook 文件定义的任务需要通过ansible-playbook命令进行调用并执行,ansible-playbook命令用法如下:

用法:ansible-playbook [option] /PATH/PLAYBOOK.yml

其中[option]部分的功能包括:

1.--syntax-check:检测yaml文件的语法;

2.-C(--check):测试,不会改变主机的任何配置;

3.--list-hosts:列出yaml文件影响的主机列表;

4.--list-tasks:列出yaml文件的任务列表;

5.--list-tags:列出yaml文件中的标签;

6.-t TAGS(--tags=TAGS):表示只执行指定标签的任务;

7.--skip-tags=SKIP_TAGSS:表示除了指定标签任务,执行其他任务;

8.--start-at-task=START_AT:从指定任务开始往下运行。

四、实验案例:

(一)工作流程

1、语法检查  

ansible-playbook --syntax-check

/etc/ansible/test1.yml

2.预测试   (最重要)

ansible-playbook -C /etc/ansible/test1.yml

错误情况:

正确情况:

3.列出主机

ansible-playbook --list-hosts /etc/ansible/test1.yml

4.列出任务

ansible-playbook --list-tasks /etc/ansible/test1.yml

5.列出标签

ansible-playbook --list-tags /etc/ansible/test1.yml

6.进行测试   (预测试成功之后就可以进行测试了)

ansible-playbook  /etc/ansible/test1.yml

7.测试查看

【huyang2】tail -5 /etc/passwd  tail -5 /etc/group

【huyang3】ls /home/

  通常情况下会先执行ansible-playbook -C/PATH/PLAYBOOK.yml命令进行测试,测试没问题后再执行ansible-playbook /PATH/TO/PLAYBOOK.yml命令。

(二)触发器

 需要触发才能执行的任务,当之前定义在tasks中的任务执行完成后,若希望在基础上触发其他的任务,这时就需要定义handlers。

例如,当通过ansible的模块对目标主机的配置文件进行修改之后,如果任务执行成功,可以触发一个触发器,在触发器中定义目标主机的服务重启操作,以便配置文件生效,handlers触发器具有以下优点:

handlers是Ansible提供的条件机制之一,handlers和task很类似,但是他在被task通知的时候才会触发执行;

handlers只会在所有任务执行完成后执行,而且即使被通知了很多次,它也只会执行一次,handlers按照定义的顺序依次执行。

handlers触发器的实验实例如下:

vim /etc/ansible/httpd.yml

配置如下:

脚本注释:

--- #固定开头格式

- hosts: hu1 #指定运行主机为Rich组

  remote_user: root #指定对端运行用户的身份

  tasks: #任务列表

    - name: reset httpd #定义任务名称

      command: sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf #模块为command:使用sed命令替换监听端口为8080

      notify: #完成任务后调用restart httpd server触发器

        - reset httpd

  handlers: #配置触发器

    - name: reset httpd #指定触发器名字

      service: name=httpd state=restarted #指定触发条件为重启httpd服务

... #结尾句

实  验:

1、预测试:

ansible-playbook -C /etc/ansible/httpd.yml

2、执行测试:

ansible-playbook  /etc/ansible/httpd.yml

3、结果验证

 

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

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

相关文章

【动手学深度学习】--06.暂退法Dropout

文章目录 暂退法(Dropout)1.原理1.1动机1.2无偏差的加入噪音1.3使用丢弃法1.4推理中的丢弃法 2.从零实现Dropout2.1定义模型参数2.2定义模型2.3训练和测试 3.简洁实现 暂退法(Dropout) 学习视频:丢弃法【动手学深度学习v2】 官方笔记:暂退法&#xff0…

vue+canvas图片裁切

vuecanvas图片裁切 头像的裁切、图片的一些处理…… vue:路由router、vuex状态管理 组件效果 组件代码: 实现思路 盒子即一张画布,把选择的图片放到画布中进行裁切,按照canvas的一些语法裁切一部分内容。 有一个固定大小的画布&am…

字节有点飘了,现在阿里员工跳槽字节不受待见

上一篇:对不起,实在扛不住了。。。 字节现在厉害了,不愧为宇宙第一大厂。 阿里员工现在跳槽字节被鄙视,阿里经历竟然是减分项。 据某互联网大厂HR发文透漏:现在阿里跳字节真的不受待见,背景是负加成。 他举…

JVM内存结构——前言

前提 1. 认识JVM,什么是JVM 简单来说,就是java程序的运行环境(java二进制字节码的运行环境) 1.1 JVM (java虚拟机)的好处 : 一次编写,到处运行的机制 (因为java语言是跨…

【SQL应知应会】表分区(三)• MySQL版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 分区表 • MySQL版 前言一、分区表1.非分区表2.分区…

OSS对象存储后端实现+Vue实现图片上传【基于若依管理系统开发】

文章目录 基本介绍术语介绍图片上传方式介绍普通上传用户直传应用服务器签名后直传 OSS对象存储后端实现maven配置文件配置类ServiceController 图片上传前端图片上传组件api页面使用组件组件效果 基本介绍 术语介绍 Bucket(存储空间):用于…

基于linux下的高并发服务器开发(第一章)- Linux系统IO函数

05 / Linux系统IO函数 (1)man 2 open >>打开一个已经存在的文件 int open(const char *pathname, int flags); 参数: pathname:要打开文件路径 - flags:对文件的操作权限设置还有其他的设置 O_RDONLY,O_WRONLY,O_RDWR 这三个设置是互斥…

#systemverilog# 关于关键字 之 event 了解这些够了(二)->和 ->> 区别

在上一篇文章,我们学习了event 的相关语法和举例,清晰的说明了具体场合的使用规则。今天,我们着重看一下 -> 和 ->> 的区别,进而在以后的工作过程种,能为大家带来一些便利。 我们先看 -> : 【-> 正确的用法】: 【-> 不正确的用法】: 可以看出,触…

BaseDexClassLoader加载类流程源码阅读

安卓10 类图 双亲委派机制 Java层 BaseDexClassLoader 没有loadClass实现&#xff0c;继承的是 ClassLoader 实现 路径 libcore\ojluni\src\main\java\java\lang\ClassLoader.java protected Class<?> loadClass(String name, boolean resolve)throws ClassNotFound…

【Linux】- 任务调度和定时任务

任务调度和定时任务 1 crond 任务调度2 at 定时任务 1 crond 任务调度 crontab 进行 定时任务的设置 任务调度&#xff1a;是指系统在某个时间执行的特定的命令或程序。 任务调度分类&#xff1a;1.系统工作&#xff1a;有些重要的工作必须周而复始地执行。如病毒扫描等 个别…

.Net Framework下面如何生成AOT呢?

前言 有人问&#xff0c;老版本的.net frameworker能不能生成AOT?其实AOT预编译&#xff0c;在.Net FrameWorker1.0里面就有了。它叫做Ngen&#xff0c;只不过当时叫做生成本机映像&#xff0c;实际上还是一个东西&#xff0c;也就是预编译。本篇来看下。原文&#xff1a;.Net…

MySQL数据库多表查询

目录 一、创建表单 二、操作 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号&#xff08;id&#xff09;、姓名&#xff08;name&#xff09;和院系&#xff08;department&#xff09;的信息 4.从student表中查询计算机系和…

电子表格错误分析 ExcelAnalyzer Platinum v3.4.4 Crack

ExcelAnalyzer是世界上最强大的 Excel 插件&#xff0c;用于检查和更正电子表格。做出更好的决策&#xff0c;并 100% 确信您的电子表格没有错误。 相信您的电子表格数据 只需点击几下即可纠正电子表格错误 易于使用且透明 安全又安全 研究表明&#xff0c;95% 的电子表格包含错…

初识Visual Basic编辑器并建立一段简单的代码(上)

【分享成果&#xff0c;随喜正能量】不要把自己的伤口揭开给别人看&#xff0c;世上多的不是医师&#xff0c;多的是撒盐的人。。 《VBA之Excel应用》&#xff08;10178983&#xff09;是非常经典的&#xff0c;是我推出的第七套教程&#xff0c;定位于初级&#xff0c;目前是…

微服务系列文章 之 nginx日志格式分析以及修改

如何自定义日志格式&#xff0c;就需要修改nginx日志打印格式 一. 打开终端&#xff0c;登录服务器并输入服务器密码 //ssh 用户名服务器ip ssh root192.168.0.132二. 切换到nginx目录 cd /var/log/nginx/ 三. 查看nginx日志 tail -f access.log 日志说明&#xff1a; //…

OpenCV for Python 入坑第二天 :图片处理(1)

上一篇博客我们简单了解了一下如何打开图片、保存图片、创建窗口等等。那么今天我们就来尝试一下完成OpenCV基础操作——图像的处理 文章目录 什么是图像处理图像的展示方法灰度图像介绍彩色图像介绍 图像的像素修改OpenCV的图像存储方式NumPy创建图像彩色图片存储 小结 什么是…

用WinDBG调试DMP文件

把对应工程的pdb文件&#xff0c;放到C盘下的一个文件夹&#xff0c;例如 C:\mysymbols 打开WinDBG&#xff0c;选择File -> Symbol File Path , 输入C:\mysymbols\;SRV*C:\symbols*http://msdl.microsoft.com/download/symbols&#xff0c;然后OK &#xff08;这可以使W…

微服务系列文章 之 Nginx状态监控日志分析详解

1、Nginx状态监控 Nginx提供了一个内置的状态信息监控页面可用于监控Nginx的整体访问情况&#xff0c;这个功能由ngx_http_stub_status_module模块进行实现。 使用nginx -V 2>&1 | grep -o with-http_stub_status_module命令检测当前Nginx是否有status功能&#xff0c…

德哥说库-MySQL数据类型

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&#x1f61…

【Mac使用笔记】之 Homebrew

Homebrew更新&#xff1a; brew update && brew upgrade 当出现错误&#xff1a; fatal: couldnt find remote ref refs/heads/master 执行&#xff1a; brew tap --repair Ruby安装&#xff1a; 1、查看当前Homebrew版本&#xff1a; brew --version2、查看当前…