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

第三阶段基础

时  间: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.mzph.cn/news/2776.shtml

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

相关文章

如何破解中小企业数字化转型难点?建议来了!

打开任何一个搜索引擎,只要输入“中小企业数字化转型”,关于痛点、难处的文章就会铺面而来,难在哪里,其实很好解答,关键在于,如何解决这一个个难处。 PS:给大家整理了一份完整版的《中小企业如…

汽车供应链专场对接会 | 8月25日大会同期活动

爱普搜汽车供应链对接会,是根据采购商的项目需求,有针对性地组织全国各地采购商与供应商,进行面对面交流与沟通,促成实质性交易。参会群体为汽车行业制造型企业、主机厂、Tier1/2。 供应商在参加对接会前已做足功课,现…

C语言-ubuntu下的命令

目录 linux命令 【1】打开关闭终端 【2】终端 【3】ls命令 【4】cd 切换路径 【5】新建 【6】删除 【7】复制 【8】移动 【9】常用快捷键 【10】vi编辑器 【11】简单编程步骤 任务: linux命令 【1】打开关闭终端 打开终端: 1. 直接点击 …

File格式转换MultipartFile格式的例子

首先&#xff1a;需要先引入依赖包 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.3.9</version> </dependency> 1.Multipartfile转File类型 //创建一…

一零六四、世界杯数据可视化分析(阿里云天池赛)

目录 赛制官方链接 活动背景 活动时间&#xff1a;即日起-12月31日17点 数据说明 世界杯成绩信息表&#xff1a;WorldCupsSummary 世界杯比赛比分汇总表&#xff1a;WorldCupMatches.csv 世界杯球员信息表&#xff1a;WorldCupPlayers.csv 代码实现 赛制官方链接 世界杯…

视频融合平台EasyCVR登录后通道数据及菜单栏页面显示异常的排查与解决

EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。 有用…

docker基础1——架构组成、安装配置

文章目录 一、发展起源1.1 传统虚拟化与容器虚拟化1.2 docker底层核心技术1.2.1 命名空间1.2.2 控制组 1.3 docker工作方式1.4 docker容器编排1.5 docker优劣势1.6 docker架构组成 二、yum安装docker三、配置docker加速器 一、发展起源 背景了解&#xff1a; 容器是内核里的一项…

上市公司前端开发规范参考

上市公司前端开发规范参考 命名规则通用约定文件与目录命名HTML命名CSS命名JS命名 代码格式通用约定HTML格式CSS格式JS格式注释 组件组件大小单文件组件容器组件组件使用说明Prop指令缩写组件通讯组件的挂载和销毁按需加载第三方组件库的规定 脚手架使用规范移动端脚手架PC端脚…

前端 Jenkins 自动化部署

由于公司使用自己搭建的 svn 服务器来进行代码管理&#xff0c;因此这里 Jenkins 是针对 svn 服务器来进行的配置&#xff0c;其实跟Git 配置基本一致。 在没有自动化部署前 之前项目每次修改之后都需要本地 ​​npm run build ​​一次手动发布到服务器上方便测试和产品查看…

Jenkins | 获取凭证密码

目录 方法一&#xff1a;查看所有账号及密码 方法二&#xff1a;查看指定账号密码 方法一&#xff1a;查看所有账号及密码 Jenkins > 系统管理 > 脚本命令行 com.cloudbees.plugins.credentials.SystemCredentialsProvider.getInstance().getCredentials().forEach{i…

nginx基础1——工作原理、安装配置、命令参数

文章目录 一、基本了解1.1 特性优点1.2 功能应用1.3 工作模块分类1.4 模块配置方法 二、工作原理三、安装与配置四、常用命令 一、基本了解 nginx简介&#xff1a; nginx是一款轻量级的Web服务器、反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#x…

前端学习——ajax (Day1)

AJAX 概念和 axios 使用 axios 使用 练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" …

SpringBoot 整合 RabbitMQ demo

Rabbit Windows安装教程 本文只做Demo案例的分享&#xff0c;具体只是需自行百度 一、生产者 1.application.properties 配置Rabbit的基本信息 #rabbit 主机IP spring.rabbitmq.host127.0.0.1 #rabbit 端口 spring.rabbitmq.port5672 #rabbit 账号 可自行创建 这里是默认的 …

网络知识整合——Web页面请求的历程

Web页面请求的历程 内部涉及知识&#xff1a;一、准备:DHCP、UDP、IP 和以太网二、仍在准备&#xff1a;DNS和ARP三、仍在准备&#xff1a;域内路由选择到DNS服务器四、Web客户-服务器交互&#xff1a;TCP和HTTP五、HTTP请求响应格式Requests部分Responses 部分 下载一个Web页面…

ES6迭代器、Set、Map集合和async异步函数

目录 迭代器 Iterator 的作用 Iterator 的遍历过程 Set Map集合 map和对象区别? async异步函数 迭代器 迭代器&#xff08;Iterator&#xff09;就是这样一种机制。它是一种接口&#xff0c;为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口&…

介绍性能压力测试的重要性

在当今数字化时代&#xff0c;软件和应用程序的性能对于用户体验和业务成功至关重要。为了确保系统在面临高负载和压力时能够正常运行&#xff0c;性能压力测试成为一项不可或缺的活动。本文将介绍性能压力测试的重要性。 性能压力测试是一种通过模拟实际场景中的负荷和用户访问…

2023-7-19-第二十式迭代器模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

React native 已有项目升级兼容web

基础 概念 | webpack 中文文档 | webpack 中文文档 | webpack 中文网 深入理解Webpack及Babel的使用 - 掘金 Introduction to React Native for Web // React Native for Web Webpack 是一个现代的 JavaScript 应用程序的静态模块打包工具&#xff0c;它将应用程序所依赖的各…

【C++】STL---vector基本用法介绍

个人主页&#xff1a;平行线也会相交&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…

五十、Spring

1.Spring概述 1.1 Spring是什么 Spring是分层的 Java SE/EE应用 full-stack(全栈式) 轻量级开源框架。 提供了表现层 SpringMVC和持久层 Spring JDBC Template以及 业务层 事务管理等众多的企业级应用 技术&#xff0c;还能整合开源世界众多著名的第三方框架和类库&#xf…