Ansible自动化运维实战--yaml的使用和配置(7/8)
文章目录
- 一、YAML 基本语法
- 1.1. 缩进
- 1.2. 注释
- 1.3. 列表
- 1.4. 字典
- 二、Ansible 中 YAML 的应用
- 2.1. Ansible 剧本(Playbooks)
- 2.2. 变量定义
- 2.3. 角色(Roles)
- 2.4. Inventory 文件
- 2.5. 数据类型
- 2.6. 引用变量
在 Ansible 里,YAML(YAML Ain’t Markup Language)是一种常用的数据序列化格式,主要用来编写 Ansible 的剧本(playbooks)、角色(roles)和变量文件。下面为你详细讲解 Ansible 中 YAML 的相关知识。
一、YAML 基本语法
1.1. 缩进
YAML 依靠缩进来表示数据的层次结构,通常采用空格进行缩进,而不能使用制表符。缩进的空格数量并不固定,但同层级的元素必须保持相同的缩进量。
示例:
# 一个简单的字典结构
person:name: Johnage: 30
1.2. 注释
在 YAML 里,使用#来添加注释,#之后同一行的内容都会被视作注释。
示例:
# 这是一个注释
person:name: John # 人的姓名age: 30 # 人的年龄
1.3. 列表
列表以-开头,后面跟列表元素,每个元素占一行。
示例:
fruits:- apple- banana- orange
1.4. 字典
字典由键值对构成,键和值之间用冒号:分隔。
示例:
person:name: Johnage: 30address:city: New Yorkstreet: 123 Main St
二、Ansible 中 YAML 的应用
2.1. Ansible 剧本(Playbooks)
Ansible 剧本是用 YAML 编写的,用于定义一系列要在远程主机上执行的任务。
示例:
---
- name: 安装并启动Apache服务hosts: web_servers # 指定目标主机组become: yes # 使用root权限执行任务tasks:- name: 安装Apacheapt:name: apache2state: present # 确保Apache已安装- name: 启动Apache服务service:name: apache2state: started # 确保Apache服务已启动
解释:
- – -:YAML 文件的起始标志。
- name:剧本或任务的描述信息。
- hosts:指定要执行任务的目标主机组。
- become:表示使用 root 权限执行任务。
- tasks:包含一系列要执行的任务。
- apt 和 service:Ansible 的模块,分别用于管理软件包和服务。
2.2. 变量定义
在 Ansible 中,可以在 YAML 文件里定义变量,然后在剧本中引用这些变量。
示例:
# vars.yml
web_package: apache2
# playbook.yml
---
- name: 安装Web服务hosts: web_serversbecome: yesvars_files:- vars.yml # 引入变量文件tasks:- name: 安装Web服务apt:name: "{{ web_package }}" # 引用变量state: present
解释:
- vars_files:用于引入包含变量定义的 YAML 文件。
- {{ web_package }}:使用双花括号引用变量。
2.3. 角色(Roles)
Ansible 角色是组织和复用剧本的一种方式,角色的文件结构和配置通常也使用 YAML 文件。
示例角色目录结构:
roles/└── web_server/├── tasks/│ └── main.yml # 角色的主要任务├── handlers/│ └── main.yml # 角色的处理程序├── vars/│ └── main.yml # 角色的变量└── defaults/└── main.yml # 角色的默认变量
roles/web_server/tasks/main.yml 示例:
- name: 安装Web服务apt:name: "{{ web_package }}"state: present
注意事项
- YAML 对大小写敏感,所以要保证键和值的大小写一致。
- 编写 YAML 文件时,要注意缩进的正确性,否则会导致解析错误。
- 在引用变量时,使用双花括号 {{ }} 来包裹变量名。
2.4. Inventory 文件
Inventory 文件定义了 Ansible 管理的主机和主机组,也能用 YAML 格式编写。
all:children:web_servers:hosts:web1.example.com:web2.example.com:db_servers:hosts:db1.example.com:
解释:
- all:表示所有主机的顶级组。
- children:定义子组。
- hosts:列出属于该组的主机。
2.5. 数据类型
- 字符串:可不用引号,若包含特殊字符则需引号。
string1: Hello, World!
string2: "Hello, 'World'!"
- 数字:直接写数字,整数或浮点数都行。
integer: 42
float: 3.14
- 布尔值:用true或false表示。
is_active: true
- 列表:用短横线加空格开头表示列表元素。
fruits:- apple- banana- orange
- 字典:键值对集合。
person:name: Johnage: 30city: New York
2.6. 引用变量
在 Ansible 的 YAML 文件里,可通过{{ variable_name }}引用变量。
- name: Print a variabledebug:msg: "The value of my_variable is {{ my_variable }}"
注意事项
- 语法检查:可使用ansible-playbook --syntax-check playbook.yml命令检查 Playbook 的语法。
- 引号使用:当值包含特殊字符(如冒号、空格等)时,要用引号,避免解析错误。
人的脆弱和坚强都超乎了自己的想象。
有时候可能脆弱的一句话就泪流满面,
有时候你发现自己咬着牙已经走过了很长的路…
相关文章:

Ansible自动化运维实战--yaml的使用和配置(7/8)
文章目录 一、YAML 基本语法1.1. 缩进1.2. 注释1.3. 列表1.4. 字典 二、Ansible 中 YAML 的应用2.1. Ansible 剧本(Playbooks)2.2. 变量定义2.3. 角色(Roles)2.4. Inventory 文件2.5. 数据类型2.6. 引用变量 在 Ansible 里&#x…...
kamailio-5.8.4-centos9编译
安装必要的依赖包 在开始编译之前,你需要安装编译 Kamailio 所需的一些基础依赖包: dnf install -y make gcc gcc-c flex bison libxml2-devel openssl-devel sqlite-devel mysql-devel pcre-devel libcurl-devel下载并解压 Kamailio 源码包 假设你已经…...
单例模式 - 单例模式的实现与应用
引言 单例模式(Singleton Pattern)是设计模式中最简单且最常用的模式之一。它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式常用于需要全局唯一对象的场景,如配置管理、日志记录、线程池等。 本文将详细介…...

hadoop==docker desktop搭建hadoop
hdfs map readuce yarn https://medium.com/guillermovc/setting-up-hadoop-with-docker-and-using-mapreduce-framework-c1cd125d4f7b 清理资源 docker-compose down docker system prune -f...

zookeeper的介绍和简单使用
1 zookerper介绍 zookeeper是一个开源的分布式协调服务,由Apache软件基金会提供,主要用于解决分布式应用中的数据管理、状态同步和集群协调等问题。通过提供一个高性能、高可用的协调服务,帮助构建可靠的分布式系统。 Zookeeper的特点和功能…...

DiffuEraser: 一种基于扩散模型的视频修复技术
视频修复算法结合了基于流的像素传播与基于Transformer的生成方法,利用光流信息和相邻帧的信息来恢复纹理和对象,同时通过视觉Transformer完成被遮挡区域的修复。然而,这些方法在处理大范围遮挡时常常会遇到模糊和时序不一致的问题࿰…...
CentOS/Linux Python 2.7 离线安装 Requests 库解决离线安装问题。
root@mwcollector1 externalscripts]# cat /etc/os-release NAME=“Kylin Linux Advanced Server” VERSION=“V10 (Sword)” ID=“kylin” VERSION_ID=“V10” PRETTY_NAME=“Kylin Linux Advanced Server V10 (Sword)” ANSI_COLOR=“0;31” 这是我系统的版本,由于是公司内网…...

World of Warcraft [CLASSIC] Jewelcrafting Gemstone 2
World of Warcraft [CLASSIC] Jewelcrafting & Gemstone 2 珠宝加工与常用宝石列表(紫色史诗级): World of Warcraft [CLASSIC] Jewelcrafting & Gemstone_wlk宝石属性一览表-CSDN博客...

AI刷题-最小化团建熟悉程度和
目录 问题描述 输入格式 输出格式 解题思路: 状态表示 状态转移 动态规划数组 预处理 实现: 1.初始化: 2.动态规划部分: (1)对于已分组状态的,跳过: (2&…...

一文详解Filter类源码和应用
背景 在日常开发中,经常会有需要统一对请求做一些处理,常见的比如记录日志、权限安全控制、响应处理等。此时,ServletApi中的Filter类,就可以很方便的实现上述效果。 Filter类 是一个接口,属于 Java Servlet API 的一部…...

应用层协议 HTTP 讲解实战:从0实现HTTP 服务器
🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 HTTP 协议 🦋 认识 URL🦋 urlencode 和 urldecode 二:🔥 HTTP 协议请求与响应格式 🦋 HTTP 请求…...
DDD-全面理解领域驱动设计中的各种“域”
一、DDD-领域 在领域驱动设计(Domain-Driven Design,DDD)中,**领域(Domain)**指的是软件系统所要解决的特定业务问题的范围。它涵盖了业务知识、规则和逻辑,是开发团队与领域专家共同关注的核心…...

PHP防伪溯源一体化管理系统小程序
🔍 防伪溯源一体化管理系统,品质之光,根源之锁 🚀 引领防伪技术革命,重塑品牌信任基石 我们自豪地站在防伪技术的前沿,为您呈现基于ThinkPHP和Uniapp精心锻造的多平台(微信小程序、H5网页&…...

纯css实现div宽度可调整
<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>纯css实现div尺寸可调整</title><style…...
C# 中使用Hash用于密码加密
通过一定的哈希算法(典型的有MD5,SHA-1等),将一段较长的数据映射为较短小的数据,这段小数据就是大数据的哈希值。他最大的特点就是唯一性,一旦大数据发生了变化,哪怕是一个微小的变化࿰…...

如何建设一个企业级的数据湖
建设一个企业级的数据湖是一项复杂且系统化的工程,需要从需求分析、技术选型、架构设计到实施运维等多个方面进行综合规划和实施。以下是基于我搜索到的资料,详细阐述如何建设企业级数据湖的步骤和关键要点: 一、需求分析与规划 明确业务需…...

目标跟踪之sort算法(3)
这里写目录标题 1 流程1 预处理2 跟踪 2 代码 参考:sort代码 https://github.com/abewley/sort 1 流程 1 预处理 1.1 获取离线检测数据。1.2 实例化跟踪器。2 跟踪 2.1 轨迹处理。根据上一帧的轨迹预测当前帧的轨迹,剔除到当前轨迹中为空的轨迹得到当前…...
【java数据结构】HashMapOJ练习题
【java数据结构】HashMapOJ练习题 一、只出现一次的数字二 、随机链表的复制三 、宝石与石头四、坏键盘打字五、前K个高频单词 博客最后附有整篇博客的全部代码!!! 一、只出现一次的数字 只出现一次的数字 思路: 先遍历一遍数组…...
Nginx前端后端共用一个域名如何配置
在 Nginx 中配置前端和后端共用一个域名的情况,通常是通过路径或子路径将请求转发到不同的服务。以下是一个示例配置,假设: 前端静态文件在 /var/www/frontend/。 后端 API 服务运行在 http://127.0.0.1:5000。 域名是 example.comÿ…...

SpringBoot3+Vue3开发学生选课管理系统
功能介绍 分三个角色登录:学生登录,老师登录,教务管理员登录,不同用户功能不同! 1.学生用户功能 选课记录,查看选课记录,退选。选课管理,进行选课。通知管理,查看通知消…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...