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: John
  age: 30

1.2. 注释

在 YAML 里,使用#来添加注释,#之后同一行的内容都会被视作注释。
示例:

# 这是一个注释
person:
  name: John  # 人的姓名
  age: 30     # 人的年龄

1.3. 列表

列表以-开头,后面跟列表元素,每个元素占一行。
示例:

fruits:
  - apple
  - banana
  - orange

1.4. 字典

字典由键值对构成,键和值之间用冒号:分隔。
示例:

person:
  name: John
  age: 30
  address:
    city: New York
    street: 123 Main St

二、Ansible 中 YAML 的应用

2.1. Ansible 剧本(Playbooks)

Ansible 剧本是用 YAML 编写的,用于定义一系列要在远程主机上执行的任务。
示例:

---
- name: 安装并启动Apache服务
  hosts: web_servers  # 指定目标主机组
  become: yes  # 使用root权限执行任务
  tasks:
    - name: 安装Apache
      apt:
        name: apache2
        state: present  # 确保Apache已安装
    - name: 启动Apache服务
      service:
        name: apache2
        state: 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_servers
  become: yes
  vars_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: John
  age: 30
  city: New York

2.6. 引用变量

在 Ansible 的 YAML 文件里,可通过{{ variable_name }}引用变量。

- name: Print a variable
  debug:
    msg: "The value of my_variable is {{ my_variable }}"

注意事项

  • 语法检查:可使用ansible-playbook --syntax-check playbook.yml命令检查 Playbook 的语法。
  • 引号使用:当值包含特殊字符(如冒号、空格等)时,要用引号,避免解析错误。

在这里插入图片描述


人的脆弱和坚强都超乎了自己的想象。
有时候可能脆弱的一句话就泪流满面,
有时候你发现自己咬着牙已经走过了很长的路…


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

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

相关文章

springboot集成钉钉,发送钉钉日报

目录 1.说明 2.示例 3.总结 1.说明 学习地图 - 钉钉开放平台 在钉钉开放文档中可以查看有关日志相关的api,主要用到以下几个api: ①获取模板详情 ②获取用户发送日志的概要信息 ③获取日志接收人员列表 ④创建日志 发送日志时需要根据模板规定日志…

Node.js下载安装及环境配置教程 (详细版)

Node.js:是一个基于 Chrome V8 引擎的 JavaScript 运行时,用于构建可扩展的网络应用程序。Node.js 使用事件驱动、非阻塞 I/O 模型,使其非常适合构建实时应用程序。 Node.js 提供了一种轻量、高效、可扩展的方式来构建网络应用程序&#xff0…

ProfiNet转CANopen应用于汽车总装生产线输送设备ProfiNet与草棚CANopen质量检测系统

ProfiNet转CANopen协议转换网关模块,广泛应用于汽车行业。可替代NT 100-RE-CO和AB7658/7307产品功能 项目概述 在汽车总装生产线的末尾环节,汽车总装生产线输送设备起着关键的搬运作用,其基于 ProfiNet 协议运行,精准控制车辆在各…

「全网最细 + 实战源码案例」设计模式——桥接模式

核心思想 桥接模式(Bridge Pattern)是一种结构型设计模式,将抽象部分与其实现部分分离,使它们可以独立变化。降低代码耦合度,避免类爆炸,提高代码的可扩展性。 结构 1. Implementation(实现类…

Attention--人工智能领域的核心技术

1. Attention 的全称与基本概念 在人工智能(Artificial Intelligence,AI)领域,Attention 机制的全称是 Attention Mechanism(注意力机制)。它是一种能够动态分配计算资源,使模型在处理输入数据…

DeepSeek能执行程序吗?

1. 前言 大过年的,继续蹭DeepSeek的热点,前面考察了DeepSeek能否进行推理(DeekSeek能否进行逻辑推理),其实似乎没有结论,因为还没有到上难度,DeepSeek似乎就纠结在一些与推理无关的事情上了&am…

5.3.2 软件设计原则

文章目录 抽象模块化信息隐蔽与独立性衡量 软件设计原则:抽象、模块化、信息隐蔽。 抽象 抽象是抽出事物本质的共同特性。过程抽象是指将一个明确定义功能的操作当作单个实体看待。数据抽象是对数据的类型、操作、取值范围进行定义,然后通过这些操作对数…

STM32 TIM编码器接口测速

编码器接口简介: Encoder Interface 编码器接口 编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度 每个高级定…

四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)

四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用) 文章目录 四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)1. 有序集合 Zset(sorted set)2. zset 有序…

Spring AI 在微服务中的应用:支持分布式 AI 推理

1. 引言 在现代企业中,微服务架构 已成为开发复杂系统的主流方式,而 AI 模型推理 也越来越多地被集成到业务流程中。如何在分布式微服务架构下高效地集成 Spring AI,使多个服务可以协同完成 AI 任务,并支持分布式 AI 推理&#x…

使用Ollama和Open WebUI快速玩转大模型:简单快捷的尝试各种llm大模型,比如DeepSeek r1

Ollama本身就是非常优秀的大模型管理和推理组件,再使用Open WebUI更加如虎添翼! Ollama快速使用指南 安装Ollama Windows下安装 下载Windows版Ollama软件:Release v0.5.7 ollama/ollama GitHub 下载ollama-windows-amd64.zip这个文件即可…

EasyExcel写入和读取多个sheet

最近在工作中,作者频频接触到Excel处理,因此也对EasyExcel进行了一定的研究和学习,也曾困扰过如何处理多个sheet,因此此处分享给大家,希望能有所帮助 目录 1.依赖 2. Excel类 3.处理Excel读取和写入多个sheet 4. 执…

《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》

DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance)订阅 已识别 - 已识别问题,并且正在实施修复。 1月 29, 2025 - 20:57 CST 更新 - 我们将继续监控任何其他问题。 1月 28, 2025 - 22&am…

安卓(android)饭堂广播【Android移动开发基础案例教程(第2版)黑马程序员】

一、实验目的(如果代码有错漏,可查看源码) 1.熟悉广播机制的实现流程。 2.掌握广播接收者的创建方式。 3.掌握广播的类型以及自定义官博的创建。 二、实验条件 熟悉广播机制、广播接收者的概念、广播接收者的创建方式、自定广播实现方式以及有…

分享|借鉴传统操作系统中分层内存系统的理念(虚拟上下文管理技术)提升LLMs在长上下文中的表现

《MemGPT: Towards LLMs as Operating Systems》 结论: 大语言模型(LLMs)上下文窗口受限问题的背景下, 提出了 MemGPT,通过类操作系统的分层内存系统的虚拟上下文管理技术, 提升 LLMs 在复杂人物&#…

games101-作业3

由于此次试验需要加载模型,涉及到本地环节,如果是windows系统,需要对main函数中的路径稍作改变: 这么写需要: #include "windows.h" 该段代码: #include "windows.h" int main(int ar…

Spring Boot 日志:项目的“行车记录仪”

一、什么是Spring Boot日志 (一)日志引入 在正式介绍日志之前,我们先来看看上篇文章中(Spring Boot 配置文件)中的验证码功能的一个代码片段: 这是一段校验用户输入的验证码是否正确的后端代码&#xff0c…

【大厂AI实践】OPPO:大规模知识图谱及其在小布助手中的应用

导读:OPPO知识图谱是OPPO数智工程系统小布助手团队主导、多团队协作建设的自研大规模通用知识图谱,目前已达到数亿实体和数十亿三元组的规模,主要落地在小布助手知识问答、电商搜索等场景。 本文主要分享OPPO知识图谱建设过程中算法相关的技…

机器学习周报-文献阅读

文章目录 摘要Abstract 1 相关知识1.1 WDN建模1.2 掩码操作(Masking Operation) 2 论文内容2.1 WDN信息的数据处理2.2 使用所收集的数据构造模型2.2.1 Gated graph neural network2.2.2 Masking operation2.2.3 Training loss2.2.4 Evaluation metrics 2…

工具的应用——安装copilot

一、介绍Copilot copilot是一个AI辅助编程的助手,作为需要拥抱AI的程序员可以从此尝试进入,至于好与不好,应当是小马过河,各有各的心得。这里不做评述。重点在安装copilot的过程中遇到了一些问题,然后把它总结下&…