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成功

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DRF从入门到精通二(Request源码分析、DRF之序列化组件)

文章目录 一、Request对象源码分析区分原生request和新生request新的request还能像原来的reqeust一样使用吗源码片段分析总结: 二、DRF之序列化组件序列化介绍序列化步骤序列化组件的基本使用反序列化基本使用反序列化的新增反序列化的新增删除单条 反序列化的校验 …

天猫数据分析(天猫查数据工具):2023年天猫平台假发行业市场销售数据分析报告

如今,由于人们工作和生活的压力较大,居民脱发问题严重,且脱发群体倾向于80后和90后,逐渐向低龄化发展。除脱发外,在颜值经济的背景下,人们越来越注重外貌和形象,假发作为一种改善发型的工具&…

Graylog配置日志保留策略

找了半天没找到说的清楚的,只能抠官方文档 graylog的归档(日志持久化)只有付费版才能用,所以日志只能存在es中 1.理解官方给出的几个概念 轮转策略 (Index Rotation Strategy): 轮转策略定义了何时创建新的索引以及何时关闭旧的索…

ssm基于vue技术的绿色蔬菜销售管理系统+vue论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本绿色蔬菜销售管理就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

网络技术基础与计算思维实验教程_2.2_单交换机实验_重制版

实验内容 实验目的 实验原理 关键命令说明 开始实验 构建 选择交换机 选择终端--台式机 放置四台终端 直通线连接 依次连接pc0到pc3 终端配置Ip地址和子网掩码 完成了交换机和终端连接以后,为每一个终端配置Ip地址和子网掩码 单击pc0 在选择桌面选项卡中选择Ip配置使用程序 …

快速从图中提取曲线坐标数据的在线工具WebPlotDigitizer

快速从图中提取曲线坐标数据的在线工具WebPlotDigitizer 1 介绍2 WebPlotDigitizer在线版的使用2.1 上传图像2.2 点击横纵坐标点:2.3 选择曲线 3 查看数据参考 1 介绍 写论文时要对比别人曲线图、点图、柱形图的数据,但是只有图没有原始数据怎么办&…

【51单片机系列】C51中的中断系统扩展实验

本文是关于51单片机中断系统的扩展实验。 文章目录 一、 扩展实验一:使用外部中断0控制蜂鸣器,外部中断1控制直流电机二、扩展实验二:修改定时器初值,设定3秒钟的定时时间让LED模块闪烁三、扩展实验三:使用定时器1和数…

基于NestJS 和 TypeORM 实现 CURD RESTful API接口

前言 对于服务端项目而言,对外如何提供合格规范的HTTP接口,对内如何优雅的操作数据存储,比如mysql、mongodb。 本文是NestJS服务端开发的基础入门教程,我会根据成熟的解决方案,给大家详细介绍如何基于NestJS实现开发…

【RTOS学习】源码分析(信号量和互斥量 事件组 任务通知)

🐱作者:一只大喵咪1201 🐱专栏:《RTOS学习》 🔥格言:你只管努力,剩下的交给时间! 目录 🍓信号量和互斥量🍅创建🍅Take🍅Give &#x…

中国激光雷达的2023:倔强的笨小孩

作者 |David 编辑 |王博 现在回头来看,从2007年莱万多夫斯基和大卫霍尔在硅谷骑着摩托车四处兜售激光雷达开始,到2023年仅中国车载市场出货量接近60万,覆盖了市面上40%以上搭载高阶智驾的新车型,激光雷达一直在用有力的数据回应着…

华为atlas300安装教程

1、安装包位置: /data/ai_install_packages 2、添加HwHiAiUser用户: groupadd -g 1000 HwHiAiUser useradd -g HwHiAiUser -u 1000 -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash 3、安装驱动: ./Ascend-hdk-310p-npu-driver_6.0.0_l…

HashMap扩容是2倍的原因(全网博客几乎都解释错了)

零、前言 最近在写博客时,突然又想起来哪个经常出现在面试题里的问题: HashMap扩容为什么是原来的2倍? 因为看过源码,我觉得这个问题并不难。在我之前的通俗解释equals和hashCode的关系和作用里也说过这个原因。但为了博客的严谨…

DesignDoll使用方法

选择材质球 取消网格线 控制手部动作-设置左右手 - 手部运动 控制身材 控制身高 比例

第三节TypeScript 基础类型

1、typescript的基础类型 如下表: 数据类型 关键字 描述 任意类型 any 生命any的变量可以赋值任意类型的值 数字类型 number 整数或分数 字符串类型 string 使用单引号(‘’)或者双引号(“”)来表示字符串…

RESTful简介与C/C++实现

一、RESTful简介 RESTful,全称为Representational State Transfer,是一种软件架构风格和设计理念,而不是一种标准。它主要用于Web服务的设计和开发,强调资源的状态表示和状态转移。RESTful风格的设计使得Web服务更加简洁、清晰和…

页面菜单,通过get请求一个url后,跳转另外一个页面,+丢失问题

业务场景描述: 在A系统,菜单点击跳B系统这个操作。 A系统菜单是get请求到B系统的一个缓冲页面,然后这个缓冲页面获取到url中的accessToken后,在这个页面中通过post请求后端接口。 问题描述: 当accessToken中包含了…

MongoDB 单机安装部署

文章目录 说明1. 下载安装包2. 安装数据库3. 配置 systemctl4. 创建 root 用户 说明 本篇文章介绍 MongoDB 二进制安装的步骤,整个过程还是比较简单。 1. 下载安装包 进入 MongoDB 官网,获取安装包的下载链接: https://www.mongodb.com/tr…

Leetcode—179.最大数【中等】

2023每日刷题&#xff08;六十五&#xff09; Leetcode—179.最大数 算法思想 实现代码 其中sort的lambda自定义排序策略参考自官方文档 class Solution { public:string largestNumber(vector<int>& nums) {string ans;vector<string> strs;for(auto num: …

mysql创建用户和赋权

1.创建用户 CREATE USER new_userlocalhost IDENTIFIED BY user_password; “localhost"只允许本地连接&#xff0c;而”%"允许所有IP地址都可以连接到服务器。 2.赋权 GRANT ALL PRIVILEGES ON database_name.* TO new_userlocalhost; FLUSH PRIVILEGES; 3.给…

Uniapp + Vue3 封装请求工具挂载全局

新建request.js工具类 const http {// baseUrl 地址baseUrl: http://localhost:8080,// 请求方法request(config) {// config&#xff1a;请求配置对象&#xff0c;具体参照uniapp文档config beforeRequest(config)// 请求地址拼接config.url this.baseUrl config.url// 异…