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 rolesansible.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: webtasks:
- 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.htmlnotify:
- 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---
相关文章:

ansible自动化运维,(2)ansible-playbook
三种常见的数据格式: XML:可扩展标记语言,用于数据交换和配置 JSON:对象标记法,主要用来数据交换或配置,不支持注释 YAML:不是一种标记语言,主要用来配置,大小写敏感&…...

一分钟学习数据安全—自主管理身份SSI分布式标识DID介绍
SSI标准化的两大支柱,一个是VC,之前简单介绍过,另一个就是DID。基本层次上,DID就是一种新型的全局唯一标识符,跟浏览器的URL没有什么不同。深层次上,DID是互联网分布式数字身份和PKI新层级的原子构件。 一…...
[单master节点k8s部署]11.服务service
service service是一个固定接入层,客户端 可以访问service的ip和端口,访问到service关联的后端pod,这个service工作依赖于dns服务(coredns) 每一个k8s节点上都有一个组件叫做kube-proxy,始终监视着apiser…...
ES6面试题——箭头函数和普通函数有什么区别
1. this指向问题 <script> let obj {a: function () {console.log(this); // 打印出:{a: ƒ, b: ƒ}},b: () > {console.log(this); // 打印出Window {window: Window, self: Window,...}}, }; obj.a(); obj.b(); </script> 箭头函数中的this是在箭…...

WordPress中文网址导航栏主题风格模版HaoWa
模板介绍 WordPress响应式网站中文网址导航栏主题风格模版HaoWa1.3.1源码 HaoWA主题风格除行为主体导航栏目录外,对主题风格需要的小控制模块都开展了敞开式的HTML在线编辑器方式的作用配备,另外预埋出默认设置的编码构造,便捷大伙儿在目前…...

ThreadPoolExecutor基于ctl变量的声明周期管理
个人博客 ThreadPoolExecutor基于ctl变量的声明周期管理 | iwts’s blog 总集 想要完整了解下ThreadPoolExecutor?可以参考: 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog ctl字段的应用 线程池内部使用一个变量ctl维护两个值ÿ…...

运维锅总详解Prometheus
本文尝试从Prometheus简介、架构、各重要组件详解、relable_configs最佳实践、性能能优化及常见高可用解决方案等方面对Prometheus进行详细阐述。希望对您有所帮助! 一、Prometheus简介 Prometheus 是一个开源的系统监控和报警工具,最初由 SoundCloud …...
深入解析Tomcat:Java Web服务器(上)
深入解析Tomcat:Java Web服务器(上) Apache Tomcat是一个开源的Java Web服务器和Servlet容器,用于运行Java Servlets和JavaServer Pages (JSP)。Tomcat在Java Web应用开发中扮演着重要角色。本文将详细介绍Tomcat的基本概念、安装…...
【第9章】MyBatis-Plus持久层接口之SimpleQuery
文章目录 前言一、使用步骤1.引入 SimpleQuery 工具类2.使用 SimpleQuery 进行查询 二、使用提示三、功能详解1. keyMap1.1 方法签名1.2 参数说明1.3 使用示例1.4 使用提示 2. map2.1 方法签名2.2 参数说明2.3 使用示例2.4 使用提示 3. group3.1 方法签名3.2 参数说明3.3 使用示…...

一文带你了解乐观锁和悲观锁的本质区别!
文章目录 悲观锁是什么?乐观锁是什么?如何实现乐观锁?什么是CAS应用局限性ABA问题是什么? 悲观锁是什么? 悲观锁它总是假设最坏的情况,它会认为共享资源在每次被访问的时候就会出现线程安全问题࿰…...

Android Studio环境搭建(4.03)和报错解决记录
1.本地SDK包导入 安装好IDE以及下好SDK包后,先不要管IDE的引导配置,直接新建一个新工程,进到开发界面。 SDK路径配置:File---->>Other Settings---->>Default Project Structure 拷贝你SDK解压的路径来这,…...

基于协同过滤的电影推荐与大数据分析的可视化系统
基于协同过滤的电影推荐与大数据分析的可视化系统 在大数据时代,数据分析和可视化是从大量数据中提取有价值信息的关键步骤。本文将介绍如何使用Python进行数据爬取,Hive进行数据分析,ECharts进行数据可视化,以及基于协同过滤算法…...

修复vcruntime140.dll方法分享
修复vcruntime140.dll方法分享 最近在破解typora的时候出现了缺失vcruntime140.dll文件的报错导致软件启动失败。所以找了一番资料发现都不是很方便的处理,甚至有的dll处理工具还需要花钱????,我本来就是为…...
PostgreSQL的系统视图pg_stat_wal_receiver
PostgreSQL的系统视图pg_stat_wal_receiver 在 PostgreSQL 中,pg_stat_wal_receiver 视图提供了关于 WAL(Write-Ahead Logging)接收进程的统计信息。WAL 接收器是 PostgreSQL 集群中流复制的一部分,它在从节点中工作,…...

Qt之Pdb生成及Dump崩溃文件生成与调试(含注释和源码)
文章目录 一、Pdb生成及Dump文件使用示例图1.Pdb文件生成2.Dump文件调试3.参数不全Pdb生成的Dump文件调试 二、个人理解1.生成Pdb文件的方式2.Dump文件不生产的情况 三、源码Pro文件mian.cppMainWindowUi文件 总结 一、Pdb生成及Dump文件使用示例图 1.Pdb文件生成 下图先通过…...

视频号视频怎么保存到手机,视频号视频怎么保存到手机相册里,苹果手机电脑都可以用
随着数字媒体的蓬勃发展,视频已成为我们日常生活中不可或缺的一部分。视频号作为众多视频分享平台中的一员,吸引了大量用户上传和分享各类精彩视频。然而,有时我们可能希望将视频号上的视频下载下来,以下将详细介绍如何将视频号的视频。 方法…...

Softmax函数的作用
Softmax 函数主要用于多类别分类问题,它将输入的数值转换为概率分布。 具体来说,对于给定的输入向量 x [x_1, x_2,..., x_n] ,Softmax 函数的输出为 y [y_1, y_2,..., y_n] ,其中: 这样,Softmax 函数的输…...

cesium 添加 Echarts 图层(空气质量点图)
cesium 添加 Echarts 图层(下面附有源码) 1、实现思路 1、在scene上面新增一个canvas画布 2、通坐标转换,将经纬度坐标转为屏幕坐标来实现 3、将ecarts 中每个series数组中元素都加 coordinateSystem: ‘cesiumEcharts’ 2、示例代码 <!DOCTYPE html> <html lan…...

Python技术笔记汇总(含语法、工具库、数科、爬虫等)
对Python学习方法及入门、语法、数据处理、数据可视化、空间地理信息、爬虫、自动化办公和数据科学的相关内容可以归纳如下: 一、Python学习方法 分解自己的学习目标:可以将学习目标分基础知识,进阶知识,高级应用,实…...

Nacos-注册中心
一、注册中心的交互流程 注册中心通常有两个角色: 服务提供者(生产者):对外提供服务的微服务应用。它会把自身的服务地址注册到注册中心,以供消费者发现和调用。服务调用者(消费者):调用其他微服务的应用程序。它会向注册中心订阅自己需要的服…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...