一.playbook介绍

便于功能的重复使用

本质上就是文本文件,一般都是以.yml结尾的文本文件。

1.遵循YAML语法

1.要求同级别代码要有相同缩进,建议4个空格。【同级别代码是同一逻辑的代码】

在计算机看来空格和Tob键是两个不同的字符。

2.一个键对应一个值,冒号后要有空格,

key:value

一个键对应一个值的时候,建议写在同一行上,在冒号的后面必须需要有一个空格,

当一个键对应多个值的时候,

如上图所示,这三个value就是同级别代码,这里的value前面的减号必须要跟冒号对其,value前面的减号跟value之间必须要有一个空格。【python中的列表】

3.当一个键对应多个值时,分行写,

key:

      - value1

      - value2

      - value3

2.playbook结构

-hosts: 主机或者主机组名

 user: root表示的是将来机器在执行操作的时候以什么身份去执行操作。

 tasks: 具体的操作

以上三个就是同级别代码,这三个单词必须对齐,并且冒号后面一定要有空格。

        - name: 任务名称

          模块名称: 参数1  参数2  参数3

      - name: 任务名称

          模块名称: 参数1  参数2  参数3

     - name: 任务名称

          模块名称: 参数1  参数2  参数3

一个剧本中同样的文件结构可以写多个,但是建议将针对不太机器的剧本文件单独写,方便管理。

3.创建用户openstack ,shell为/sbin/nologin

1)编写剧本

2)执行剧本

如上图所示,是剧本的执行过程,在真正执行剧本之前,ansible的默认行为是调用setup模块去调出被控机器的状态数据被叫做facts变量。

如上图所示,在剧本中添加上这个选项就是代表执行剧本的时候,不去执行搜集被控机器的状态数据,即取消剧本执行的时候默认去执行搜集被控机器的facts变量。

4.gather_facts参数

5.部署MySQL剧本

如上图所示,这就是部署MySQL的剧本文件,执行三个任务,下载MySQL,推送MySQL配置文件到被控制机器,启动MySQL服务。

二.变量

类型:

自定义变量

内置变量

    facts变量 

    内置变量

1.自定义变量

1)调用变量

{{ 变量名称 }}

2)在playbook中定义变量

如上图所示,这是设置了一个自定义变量,username,并且这个变量的值是user01

如上图所示,这是脚本的执行结果。

3)在外部文件中定义变量

如上图所示,这是单写一个文件来定义变量。

如上图所示,这是指定剧本文件到变量文件中去识别变量。

如上图所示,随后去执行脚本,并且查看脚本的执行结果。

为确保敏感数据安全,可对变量文件进行加密

如上图所示,可以用如上命令对重要的变量文件进行加密,

如上图所示,当执行剧本的时候就会报错。

如上图所示,当我们对变量文件进行加密之后,再执行剧本的时候需要加上--ask-vault-pass选项,这时再次执行剧本的时候,要求我们输入变量文件的密码。

解密文件

如上图所示,这是对加密的变量文件进行解密。

4)在主机清单文件中定义变量--为单个主机定义变量

如上图所示,当我们在主机清单中自定义变量的时候,这时候剧本中就不需要再去写关键字去调用变量了。

如上图所示,执行剧本成功。

5)在主机清单文件中定义变量--为主机组定义变量

如上图所示,这就是给主机组定义变量,

如上图所示,这是主机清单中给单个主机设定server_id,

给主机组设定变量为port

6.修改MySQL剧本

如上图所示,这是在MySQL的配置文件中,编辑server_id和port变量的引用。

如上图所示,如果想要在推送文件的时候,触发推送文件中变量的替换,就需要使用模块template模块,这个模块也是一个推送模块,具有在推送文件的同时实现变量替换的功能。这是copy模块所不具备的。

如上图所示,在修改配置文件之后,需要使得配置文件的修改生效。

2.内置变量

配置ssh协议的内置变量【免密ssh不是必须的。】

ansible_ssh_user

ansible_ssh_pass

ansisble_ssh_port

ansible软件是基于ssh协议工作的,为了方便ansible软件的工作,需要在每台机器之间配置免密ssh。但是免密ssh不是必要的,在某些公司中根本不允许配置免密ssh。

如上图所示,这是在ansible的主机清单中配置与192.168.140.14的ssh连接。

如上图所示,此时证明ansible连接192.168.140.14的ssh协议配置成功。

三.剧本中的条件判断

在写条件判断的时候常以facts变量为条件。

如上图所示,通过这个变量提取到的是一个列表,【python列表】在这个列表中存放着我们需要的IP地址。

如上图所示,这就是定义了一个python列表,通过这个变量名得到的是整个列表。

列表中的值从左到右,每一个值都有一个唯一的下标。下标固定从0开始。

变量名【2】

这就是取出列表中的第三个数据。

如上图所示,这也是python语言中的一种数据结构,这种数据结构叫做字典。

如上图所示,字典中的数据是没有下标的,如果想要取得字典中的值,需要变量名【值对应的键】

字典中储存的数据就是键值对的形式。

如上图所示,这就是取得我们需要的值的过程,从外到里一步一步得取。

如上图所示,ipv4的键对应的是字典。通过对应的键去取对应的值。

如上图所示,此时我们这个剧本中的变量的数值是从被控主机的facts变量中取得,所以不能再加上gather_facts=false.不然剧本就取不到被控主机的facts变量。

如上图所示,这是剧本中条件检测失败出现的结果。

要么是语法写错了,要么是我们取值的方法不对。

因为被控主机的ipv4字典是ansible_ens33字典的一个小字典。

如上图所示,这是修改后的剧本文件。

四.循环  loop

如上图所示,这就是一个循环,loop模块每一次循环都会给item赋值,第一次是user100

第二次是user101.第三次是user102

结合字典使用循环

如上图所示,这就是结合字典使用循环。

五.案例:部署nginx剧本

如上图所示,这是两个独立的操作在被控主机上执行,第一步是将当前目录切换到/tmp目录下,第二个操作是解压缩指定的tar包,但是被控主机并不会在tmp目录下,取解压缩指定的tar包,只会在/root目录下去解压缩tar包,但是tar包不存在于/root/目录下,所以此时建议将切换目录以及解压缩tar的操作写在一个-name里面。

如上图所示,就是部署nginx的一个剧本信息,其中的get_url模块在 Ansible 中,get_url 模块用于从远程 URL 下载文件并保存到目标主机的指定路径。它是 Ansible 提供的一个内置模块,常用于自动化下载文件、配置管理或部署任务。

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

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

相关文章

python的基础入门

初识Python 什么是Python Python是1门程序设计语言。在开发者眼里,语言可以分为3类: 自然语言:人能听懂的语言,例如汉语,英语,法语等等。机器语言:机器能听懂的语言,机器只能听懂0…

MD编辑器中的段落缩进怎么操作

在 Markdown(MD)编辑器中,段落的缩进通常可以通过 HTML 空格符、Markdown 列表缩进、代码块缩进等方式 实现。以下是几种常见的段落缩进方法: 1. 使用全角空格 ( ) 在一些 Markdown 编辑器(如 Typora)中&…

8.neo4j图数据库python操作

使用图数据库的原因 图数据库使用neo4j的原因:neo4j使用率高,模板好找,报错能查。 红楼梦人物关系图地址 GraphNavigator neo4j学习手册 https://www.w3cschool.cn/neo4j/neo4j_need_for_graph_databses.html CQL代表的是Cypher查询语言…

[Lc6_记忆化搜索] 扫雷游戏 | 理解 递归vs记忆化搜索vs dp

目录 ⭕1.扫雷游戏 题解 1.记忆化搜索 解法一:递归 解法二:记忆化搜索 解法三:动态规划 ⭕1.扫雷游戏 (暴力模拟) 链接:529. 扫雷游戏 让我们一起来玩扫雷游戏! 给你一个大小为 m x n 二维字符矩阵…

云原生周刊:Kubernetes v1.33 要来了

开源项目推荐 Tekton Tekton 是一个开源的 K8s 原生 CI/CD 系统,它为构建、测试和部署自动化工作流提供了强大而灵活的框架。Tekton 提供了一套标准化的 API 和自定义资源(CRDs),使得开发者能够在 K8s 集群中定义和管理 CI/CD 管…

服务新增节点、迁移笔记

文章目录 基础配置部分基础配置-hosts基础配置-jdk包准备基础配置-jdk环境变量配置基础配置-skywalking包 基础配置-apollo配置。 # 文件夹及配置基础配置-tomcat基础配置-nginx基础配置部分-磁盘挂载(这个也差点漏掉)。 防火墙部分防火墙部分-数据库及脚本防火墙部分-redis防火…

第十一章:Python PIL库-图像处理

一、PIL库简介 PIL(Python Imaging Library)是一个功能强大的图像处理库,它提供了丰富的图像处理功能,包括图像的打开、处理和保存等操作。PIL支持多种图像文件格式,如JPEG、PNG、BMP等,并且可以完成对图像…

【编译、链接与构建详解】Makefile 与 CMakeLists 的作用

【编译、链接与构建详解】Makefile 与 CMakeLists 的作用 前言源代码(.c、.cpp)编译编译的本质编辑的结果编译器(GCC、G、NVCC 等) 目标文件(.o)什么是 .o 目标文件为什么单个 .o 目标文件不能直接执行&…

Ubuntu / Debian 创建快捷方式启动提权

简述 在 Linux 系统中,.desktop 文件是 桌面入口文件,用于在桌面环境(如 GNOME、KDE)中定义应用程序的启动方式、图标、名称等信息。当你执行 touch idea.desktop 时,实际上创建了一个空的 .desktop 文件(…

ISIS报文

IS-IS 报文 目录 IS-IS 报文 一、报文类型与功能 二、报文结构解析 三、核心功能特性 四、典型应用场景 五、抓包数据分析 六、总结 IS-IS(中间系统到中间系统)协议报文是用于链路状态路由协议中网络设备间交换路由信息的关键载体,其设…

beikeshop多商户跨境电商独立站最新版v1.6.0版本源码

一.介绍 beikeshop跨境电商独立站最新版V1.6.0源码 多商户 多商家 多语言 多币结算 本博主亲测搭建代码全开源质量相对来说很稳定的 二.服务器环境 系统:CentOS、 环境:PHP7.4 Nginx 1.21 MySQL 5.6 常见插件:fileinfo ; re…

Redis批量操作详解

一、原生批量命令(MSET) 适用场景:所有键的过期时间相同或无过期设置,且无需条件判断。 方法: 将多个SET命令合并为MSET命令,但需要注意MSET的局限性(无法设置过期时间,且所有键值对…

Spring Boot 集成实战:AI 工具如何自动生成完整微服务模块

在数字化转型的浪潮中,开发效率和质量是企业竞争力的关键要素。飞算 JavaAI 作为一款创新的 AI 工具,能在 Spring Boot 开发中,自动生成完整微服务模块,极大提升开发效率。下面,我们就详细介绍如何借助飞算 JavaAI&…

算法 | 2024最新算法:斑翠鸟优化算法原理,公式,应用,算法改进研究综述,matlab代码

基于斑翠鸟优化算法的原理、应用及改进研究综述 一、算法原理 斑翠鸟优化算法(Pied Kingfisher Optimizer, PKO)是2024年由Bouaouda等人提出的一种新型仿生智能优化算法,其灵感来源于斑翠鸟的捕食行为与共生关系。算法通过模拟斑翠鸟的栖息悬停、潜水捕鱼及与其他生物的共生…

RabbitMQ高级特性--重试特性

目录 1.重试配置 2.配置交换机&队列 3.发送消息 4.消费消息 5. 运行程序观察结果 6. 手动确认 注意: 在消息传递过程中, 可能会遇到各种问题, 如网络故障, 服务不可用, 资源不足等, 这些问题可能导致消息处理失败. 为了解决这些问题, RabbitMQ 提供了重试机制, …

Vue 组件通信 - 中央事件总线

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue组件通信 - 中央事件总线 目录 中央事件总线 图示 准备工作 设置页面元素 创建组件 总结 中央事件总线 使用vue的监听和触发来实现中央事件总线方式。 on监听 emit触发,组件按钮绑定点击事件&#xff0c…

5.0 WPF的基础介绍1-Grid,Stack,button

WPF: Window Presentation Foundation. WPF与WinForms的对比如下: 特性WinFormsWPF技术基础基于传统的GDI(图形设备接口)基于DirectX,支持硬件加速的矢量渲染UI设计方式拖拽控件事件驱动代码(简单但局限)…

QT软件设计可考虑回答

在Qt应用中是否引入抽象类需要根据具体场景权衡&#xff0c;以下是分层建议&#xff1a; 建议采用抽象类的3个典型场景&#xff1a; 传感器系统抽象&#xff08;强推荐&#xff09; class AbstractSensor { public:virtual ~AbstractSensor() default;virtual QVector<L…

pytorch学习(b站小土堆学习)

1 环境配置 参考链接 2. dir 和 help函数 dir()&#xff1a;用于查看某一模块函数的方法 help()&#xff1a; 用于查看某方法的使用方法 3. dataset类实战 利用Image对象打开图片&#xff0c;利用os模块的地址拼接组成图片路径 当我们用方括号访问元素对象时&#xff0c;…

Unity TextMeshPro 实现文本逐字淡出效果

Unity TextMeshPro 实现文本逐字淡出效果 前言项目思路场景布置代码编写 前言 在处理角色对话时经常会用到一些文本动画&#xff0c;正好记录一下。使用 TextMeshPro&#xff0c;我们可以直接操作文本的顶点数据&#xff0c;实现诸如渐变、动画等效果&#xff0c;为游戏界面和…