ansible的playbook

news2024/9/19 13:27:37

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.coloradmin.cn/o/1326086.html

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

相关文章

使用Python将OSS文件免费下载到本地:项目分析和准备工作

大家好,我是水滴~~ 本文将介绍如何使用Python编程语言将OSS(对象存储服务)中的文件免费下载到本地计算机。我们先进行项目分析和准备工作,为后续的编码及实施提供基础。 《Python入门核心技术》专栏总目录・点这里 系列文章 使用…

RocketMQ系统性学习-RocketMQ原理分析之Broker接收消息的处理流程

Broker接收消息的处理流程? 既然要分析 Broker 接收消息,那么如何找到 Broker 接收消息并进行处理的程序入口呢? 那么消息既然是从生产者开始发送,消息是有单条消息和批量消息之分的,那么消息肯定是有一个标识&#…

java中常用的加密算法总结

目前在工作中常用到加密的一些场景,比如密码加密,数据加密,接口参数加密等,故通过本文总结以下常见的加密算法。 1. 对称加密算法 对称加密算法使用相同的密钥进行加密和解密。在Java中,常见的对称加密算法包括&…

活动回顾丨迁飞之路主题艺术墙绘落地大坪大融城

重庆作为鹰飞之城,不仅是数十万猛禽迁飞的必经之路,也是其他珍稀鸟类的家园。守护飞羽精灵,领略迁飞之美,2023年12月19日,传益千里携手重庆工商大学艺术学院党员服务站的志愿者们一起走进大坪大融城开展迁飞之路生态艺…

软件测试工程师,“我“从月10k到月30k进阶自动化测试之路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 作为手工测试&…

Likeshop单商户高级版商城的二次开发之路

一、产品介绍 likeshop单商户高级版是一款适用于B2C、单商户、自营商城场景的商城系统。它完美契合私域流量变现闭环交易使用,拥有丰富的营销玩法、强大的分销能力,支持DIY多模板,前后端分离。无论您是想要进行商城运营还是二次开发&#xf…

聚观早报 |xPad2 Pro系列学习机发布;华为Mate X5典藏版实力过硬

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 12月21日消息 xPad2 Pro系列学习机发布 华为Mate X5典藏版实力过硬 iQOO Neo9系列标配芯片Q1 亚马逊云科技自研芯…

CentOS 宣布停更3年后,服务器操作系统何去何从?

“CentOS 要停止更新了?” 盯着电脑,某大型企业数字化部门的负责人彭素素看到这个消息,不仅在心里发出了一声惊呼。 2020年,CentOS 停止更新的消息,不仅彭素素所在的企业,对于不少正在使用 CentOS 的厂商…

搞懂这6 个持续集成工具,领先80%测试人!

开发人员喜欢把写的代码当成自己的孩子,他们会被当成艺术品一样呵护。作为家长,总是会认为自己的孩子是最好的,也会尽全力给自己的孩子最好的,就算有时候会超出自己的能力范围。 最终,孩子会走出去,和其他…

【笔试强化】Day 6

文章目录 一、单选1.2.3.4.5.6.7. 二、不定项选择1.2.3. 三、编程1. 把字符串转换成整数解法:代码: 2. 不要二解法:代码: 一、单选 1. 正确答案:D2. 正确答案:B3. 正确答案:D4. 正确答案&#…

Python编程技巧 – 使用正则表达式

Python编程技巧 – 使用正则表达式 Python Programming Skills – Using Regular Expression By JacksonML Python以其强大的功能高居全球编程软件的榜首。它易于学习和使用,使其成为初学者绝佳语言。此外,Python还用于各种应用程序,包括We…

Java Swing学生成绩管理系统期末大作业

1.且看界面 (1)登录页(可记住账号密码) (2)注册弹窗页 (3)登录弹窗 (4)还有账号密码错误3次需等待30秒 (5)成绩展示页面(…

【Spring】15 ApplicationContextAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动 4. 应用场景总结 Spring 框架提供了许多回调接口,用于在 Bean 的生命周期中执行特定的操作。ApplicationContextAware 接口是其中之一,它允许 Bean 获取对 A…

无代码API集成助力电商平台,提升味分享营销系统效率

无代码开发的革命 在数字化转型的浪潮中,无代码开发正在成为企业提升效率和灵活性的重要工具。特别是在电商领域,高效的客户关系管理(CRM)系统和客户服务系统对于保持竞争力至关重要。无代码API集成方案如何实现电商系统的优化和…

存在重复元素

题目链接 存在重复元素 题目描述 注意点 无 解答思路 根据Set无法存储相同元素的特点判断nums中是否存在重复元素 代码 class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set new HashSet<Integer>();for (int x : nums) {if …

广州华锐互动:VR元宇宙技术为汽车行业带来革命性变化

随着科技的飞速发展&#xff0c;VR元宇宙技术已经深入影响到我们生活的方方面面&#xff0c;汽车行业更是深受其益。这一新兴技术的出现&#xff0c;为汽车行业带来了前所未有的变化。广州华锐互动将VR技术应用于汽车行业&#xff0c;研发了VR汽修培训、3D汽车展厅、特种车辆3D…

JVM内存结构Java内存模型Java对象模型

导图&#xff1a; https://naotu.baidu.com/file/60a0bdcaca7c6b92fcc5f796fe6f6bc9 1.JVM内存结构&&Java内存模型&&Java对象模型 1.1.JVM内存结构 1.2.Java对象模型 Java对象模型表示的是这个对象本身的存储模型,JVM会给这个类创建一个instanceKlass保存在方…

【powershell】Windows环境powershell 运维之历史文件压缩清理

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&am…

什么是文件包含漏洞?文件包含漏洞利用方法及防御技巧

文章目录 文件包含漏洞文件包含漏洞利用方法如何预防文件包含漏洞文件包含漏洞防御技巧网安学习路线 文件包含漏洞 文件包含漏洞是指在程序执行过程中&#xff0c;将外部文件的内容作为程序代码或数据的一部分来执行或使用&#xff0c;从而导致程序行为异常。攻击者可以利用文…

ansible的脚本---playbook剧本

ansible的脚本---playbook剧本 playbook组成部分 1、tasks任务&#xff1a;包含要在目标主机上执行的操作&#xff0c;使用模块定义这些操作&#xff0c;每个任务都是一个模块的调用 2、varlables变量&#xff1a;存储和传递数据&#xff0c;变量可以自定义&#xff0c;可以…