ansible的playbook

1、playbook的组成部分

(1)task任务:在目标主机上执行的操作,使用模块定义这些操作,每个任务都是一个模块的调用

(2)variables变量:存储和传递数据(变量可以自定义,①在playbook中定义为全局变量②可以外部传参)

(3)templates模板:用于生成配置文件,模板是包含占位符的文件。占位符由ansible在执行时转化为变量值

(4)handlers处理器:有变更时,可以执行触发器

(5)rolse角色:组织和封装playbook,允许把相关的任务、变量、模板以及处理器组织成一个可复用的单元

2、实例模板

ansible-playbook test1.yaml --syntax-check

检查yml文件的语法

ansible-playbook test1.yaml --list-task

查看任务

ansible-playbook test1.yaml --list-hosts

查看在哪台主机生效

ansible-playbook test1.yaml

运行ynl文件

ansible-playbook test1.yaml --start-at-task='install httpd'

指定剧本演出

测试

(1)在远程主机切换用户(很少用,基本上都会给root权限)

①用户yst执行此脚本,但yst权限不够,使用root用户权限

②取消密钥对认证

③声明密码和用户(即便取消密钥对认证也要声明密码和用户)

④运行playbook剧本ansible-playbook test1.yaml -K

(已在脚本中设置用有权限的用户时用大K)

(2)指定用户但用户没权限执行此剧本(很少用,基本上都会给root权限)

运行要指定有权限的用户并用小k

ansible-playbook test1.yaml -u root -k

3、声明和引用变量以及外部传参变量

(1)内部传参

vars:

    groupname: yst

username: yyy

字典方式:key-values

-开头

表示列表

name: "{{ username }}"

引用变量username

"{{ hostvars[inventory_hostname]['ansible_default_ipv4']['address']}}"

包含所有主机变量的字典

#获取目标主机的IP地址

hostvars

打印

inventory_hostname

目标主机的主机名

ansible_default_ipv4

获取目标主机名

['ansible_default_ipv4']['address']

相当于filter过滤出ansible_default_ipv4中的IP地址

检验yml文件语法

运行yml文件

测试

(2)外部传参

ansible-playbook test2.yml -e 'username=rrr groupname=ymr'

测试

4、条件判断

when:一个比较常见的应用场景,实现满足条件即执行,不满足条件即跳过任务(满足条件即执行,不满足条件不执行)

debug:

       msg: '位置判断'

相当于echo,用于脚本的调试,在正式脚本中去除

实题:hosts:all,满足条件IP=20,安装nginx;满足条件IP=30,安装httpd

测试

5、循环

ansible有多种循环格式

(1)with_items循环遍历(最常用)

①声明一个列表

②声明多个列表(把所有列表当成一个整体的列表来遍历)

③在一个目录下创建两个不同的文件

2with_list列表分组循环

①分组打印

②在一个目录下创建两个不同的文件

3with_together列表组循环(列表对应的列、数据结合的方式循环)

4with_nested列表中元素定义了循环的次数,第一层定义了循环的次数,第二层列表相当于内循环,表示第一层中的每个元素会循环几次

实题1:基于循环创建文件、目录、用户组

实题2:用户名test1 test2 组名分别是dn1 dn2

实题3:yum一键安装tree sl nginx httpd vsftpd dhcp多个软件

测试

实题4:在本机上创建123 456 789文件,分别复制到目标主机的test1 test2 test3目录中

测试

6templates模块(传参模块)

定义:jinja模板架构,通过模板可以实现向模板文件传参(python转义),把占位符参数传到配置文件中

jinja模板架构:生成一个目标文本文件,传递变量到需要的配置文件中(用于web开发)

实题1:定义占位符传送httpd配置文件到目标主机

①修改ansible的配置文件定义占位符

②复制配置文件(必须以.j2结尾,j2表示占位符)

③修改以.j2结尾的httpd配置文件

vim /opt/httpd.conf.j2

④创建剧本vim http.yml

⑤运行剧本

⑥验证配置文件是否传送目标主机

在httpd.conf.j2中

配置占位符(声明的变量)

在/etc/ansible/hosts中

配置主机的占位符名称和j2文件中的占位符一致(定义参数:声明占位符的参数)

在剧本playbook中

用template模块把参数传给目标主机的配置文件

实题2:定义占位符传送nginx配置文件到目标主机

①在ansible配置文件中定义占位符

②复制nginx的配置文件(以.j2结尾,j2表示占位符)

③修改以.j2结尾的nginx配置文件

④创建nginx剧本

⑤运行剧本

⑥验证配置文件是否传送到目标主机

结论:配置文件传送成功

⑦测试

7tags模块(标签模块)

(1)定义:可以在playbook中为任务设定标签(tags),在运行playbook时可以通过指定任务标签,实现只运行设定的标签任务

(2)任务标签的种类

always

无论是否运行了指定标签,任务都会执行

never

即使运行了指定标签,任务也不会执行(很少用)

debug

调试任务

setup

收集主机信息

自定义标签

per_tasks

运行指定标签之前的任务

post_tasks

运行指定标签之后的任务(很少用)

(3)格式

tags:

  - 标签种类

(4)运行剧本标签格式

ansible-playbook test.yml --tags=”debug”

(5)实例

实题:在目标主机创建文件touch /opt/guoqi.txt,标签always

在目标主机复制文件/opt/wdf.txt,标签never

第一次运行剧本,不指定标签,查看文件生成情况

第二次运行剧本,指定标签为never,查看文件生成情况

自定义标签

注:always是默认模块,无论是否定义always标签都会执行

8、roles模块(角色模块)

(1)定义:ansible中的roles模块是一个层次化、结构化的组织。可以根据层次结构自动装载变量文件、tasks、handlers

2作用:分别把变量、文件、任务、模块以及处理器放在单独的目录中,使用roles模块一键调用这些文件

(3)结构

目录

作用

创建固定的文件名才能使用

webs

总目录。存放角色

site.yml用来调用所有的配置文件

files

存放copy和scripts模块调用的文件

/

templates

存放j2的模板文件

/

tasks

包含任务的目录。角色运行的任务

main.yml(固定)

handlers

包含处理器的目录

main.yml(固定)

vars

存放变量的目录

main.yml(固定)

defaults

包含默认变量的目录

main.yml(固定)

meta

包含元信息的目录

main.yml(固定)

创建roles远程安装httpd、mysql、php服务实验

1、创建roles目录

2、创建httpd角色

3、创建mysql角色

4、创建php角色

5、编写site.yml(在总目录下)【site.yml是总指挥,调用这些角色】

6、运行roles

7、验证在目标主机上远程安装是否成功

结论:远程安装http、mysql、php成功

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

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

相关文章

Java可变参数(学习推荐版,通俗易懂)

定义 可变参数本质还是一个数组 示例代码 注意事项 1.形参列表中,可变参数只能有一个 2.可变参数必须放在形参列表的最后面 注意是最后面。 name也可以为int类型

【C#】TimeSpan

文章目录 概述属性时间计算拓展来源 概述 TimeSpan结构:表示一个时间间隔。 它含有以下四个构造函数: TimeSpan(Int64)将 TimeSpan结构的新实例初始化为指定的刻度数。(DateTime.Tick:是计算机的一个计时周期,单位是一百纳秒&…

3. 行为模式 - 迭代器模式

亦称: Iterator 意图 迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素。 问题 集合是编程中最常使用的数据类型之一。 尽管如此, 集合只是一组对象的…

数据结构(八):图介绍及面试常考算法

一、图介绍 1、定义 图由结点的有穷集合V和边的集合E组成。其中,结点也称为顶点。一对结点(x, y)称为边(edge),表示顶点x连接到顶点y。边可以包含权重/成本,显示从顶点x到y所需的成…

深入解析Python装饰器及*args, **kwargs的妙用

深入解析Python装饰器及*args, **kwargs的妙用 简介: ​ 装饰器(Decorator)是 Python 中一种强大的语法特性,它允许在不修改原始函数代码的情况下,动态地扩展函数的功能。装饰器是函数或类,用于包装其他函…

云上荆楚丨云轴科技ZStack成功实践精选(湖北)

湖北自古以来有九省通衢的美称,地处长江中游,富有荆楚之美誉,灵秀之蕴意。2022年湖北数字经济强省三年行动计划正式印发,计划到“十四五”末,数字经济核心产业增加值力争达到7000亿元,占GDP的比重超过12%。…

《每天一分钟学习C语言·七》指针、字节对齐等

1、 对于二维数组如a[3][4]可以当做有三个元素的一维数组,每个元素包含四个小元素。 2、 printf(“%-5d”, i); //负号表示左对齐,5d表示空五个光标的位置 3、 栈:先进后出,堆:先进先出 4、 (1&#xff…

位运算:Leetcode137.只出现一次的数字(2)

题目描述: 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 示例 1: 输入:nums [2,2,3,2] 输出:3示例 2: 输入&…

《工具箱-SVN》SVN安装、备份、迁移教程

文章目录 一、服务器搭建SVN1.检查SVN是否存在2.安装SVN3.创建版本库4.创建版本库存放文件地址5.修改配置文件5.1 vim authz5.2 vim passwd5.3 vim svnserve.conf 6.启动并查看SVN7.SVN Checkout8.SVN Update9.SVN Commit 二、SVN-无法连接主机,目标计算机积极拒绝&…

案例 | 电源自动检测测试系统为某电子科技公司定制电源测试解决方案

一、测试背景 陕西某电子科技公司是一家专业生产设计军品电源、集成电路以及电子元器件的高新技术企业,公司虽有一套半自动ATE测试系统,但使用过程繁琐复杂且无法满足日益增长的测试需求,因此公司现需要一套更加优秀的全自动电源测试系统来应…

工具系列:PyCaret介绍_多分类代码示例

👋 工具系列:PyCaret介绍_多分类代码示例 PyCaret 介绍 PyCaret是一个开源的、低代码的Python机器学习库,可以自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,可以大大加快实验周期并提高生产效率。 与其他开…

HDFS NFS Gateway(环境配置,超级详细!!)

🐮博主syst1m 带你 acquire knowledge! ✨博客首页——syst1m的博客💘 😘《CTF专栏》超级详细的解析,宝宝级教学让你从蹒跚学步到健步如飞🙈 😎《大数据专栏》大数据从0到秃头👽&…

【论文阅读】FreeU: Free Lunch in Diffusion U-Net

FreeU: 无需训练直接提升扩散模型生成效果。 paper:https://arxiv.org/abs/2309.11497 code:GitHub - ChenyangSi/FreeU: FreeU: Free Lunch in Diffusion U-Net 1. 介绍 贡献: •研究并揭示了U-Net架构在扩散模型中去噪的潜力&#xff0…

Redis单机、主从、哨兵、集群配置

单机配置启动 Redis安装 下载地址:Download | Redis 安装步骤: 1: 安装gcc编译器:yum install gcc 2: 将下载好的redis‐5.0.3.tar.gz文件放置在/usr/local文件夹下,并解压redis‐5.0.3.tar.gz文件 wget http://download.re…

react生命周期详解,代码示例(新生命周期,与旧生命周期对比)

旧生命周期:https://blog.csdn.net/kkkys_kkk/article/details/135130549?spm1001.2014.3001.5501 目录 React 生命周期中常见的坑 为什么要移除 “will” 相关生命周期方法呢? Fiber是什么 新生命周期图示 新增生命周期与功能变化 完整生命周期…

C语言操作符详解+运算符优先级表格

目录 前言 一、操作符是什么? 二、操作符的分类 三、算术操作符 四、逻辑操作符 五、比较操作符 六、位操作符 七、赋值操作符 八、其他操作符 九、运算符优先级表格 总结 前言 在编写程序时,最常用到的就是操作符,本文将详细的介绍…

Golang 的内存管理

文章目录 1.内存管理角色1.常见的内存分配方法线性分配器空闲链表分配器TCMalloc 2.Go 内存管理组件mspanmcache初始化替换微分配器 mcentralmheap 3.内存分配4.内存管理思想参考文献 1.内存管理角色 内存管理一般包含三个不同的组件,分别是用户程序(Mu…

【C语言】指针详解(三)

1.指针运算 指针的基本运算有三种,分别是:⭐指针-整数 ⭐指针-指针 ⭐指针的关系运算 1.1指针 - 整数 因为数组在内存中是连续存放的,只要知道第一个元素的地址,顺藤摸瓜就能找到后面的所有元素。 int arr[10]{1,2,3,4,5,6,7,8,9,10} #inc…

劈窗算法反演地表温度

目录 摘要操作步骤提取热红外单波段提取NDVI同步像元分辨率与个数劈窗算法地表温度反演制图 摘要 主要使用HJ-2(环境减灾二号卫星)的IRS传感器的两个热红外波段,以及红波段与近红波段计算得到的NDVI,使用劈窗算法,得到…

贪吃蛇(五)蛇撞墙

上节我们实现了蛇身向右移动的功能,原理就是增加一个节点,删除一个节点。 本节我们处理蛇撞墙重置的功能 实现原理 在移动函数中检查蛇头(链表尾节点)是否达到墙边的坐标,这里有四种撞墙的情况: 上墙&am…