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 的语法。
  • 引号使用:当值包含特殊字符(如冒号、空格等)时,要用引号,避免解析错误。

在这里插入图片描述


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


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

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

相关文章

JavaScript_02 表单

表单常用演示: 1.图片 结果失真了... 2.切换图片 切换结果 3.表单:

快速提升网站收录:利用网站日志分析

本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/31.html 利用网站日志分析是快速提升网站收录的有效手段之一。以下是一些关键步骤和策略,指导你如何利用网站日志分析来优化网站并提升收录速度: 一、收集与整理网站…

使用Navicat Premium管理数据库时,如何关闭事务默认自动提交功能?

使用Navicat Premium管理数据库时,最糟心的事情莫过于事务默认自动提交,也就是你写完语句运行时,它自动执行commit提交至数据库,此时你就无法进行回滚操作。 建议您尝试取消勾选“选项”中的“自动开始事务”,点击“工…

android获取EditText内容,TextWatcher按条件触发

android获取EditText内容,TextWatcher按条件触发 背景:解决方案:效果: 背景: 最近在尝试用原生安卓实现仿element-ui表单校验功能,其中涉及到EditText组件内容的动态校验,初步实现功能后&#…

一文了解性能优化的方法

背景 在应用上线后,用户感知较明显的,除了功能满足需求之外,再者就是程序的性能了。因此,在日常开发中,我们除了满足基本的功能之外,还应该考虑性能因素。关注并可以优化程序性能,也是体现开发能…

认知神经科学0-----关于心智的生物学(2011年第三版)

译者序 人类的科学事业所面临的挑战之一-就是认识意识与物质或心灵(智慧)与大脑的关系。从古希腊哲学先贤或更早的时代开始,人类对这一-古 老问题就有了大量的探讨或臆测;但仅仅是在近代和现代,人们才真正在科学的意义上探索心智与大脑的关系。脑…

星际战争模拟系统:新月的编程之道

星际战争模拟系统:新月的编程之道 作为一名在 25 世纪星际时代成长起来的科学家和军事战略家,我对编程和人工智能的热爱始于童年。我的父亲是一位著名的物理学家,母亲是一位杰出的生物工程师。在他们的影响下,我从小就对科学和技术…

从零搭建一个Vue3 + Typescript的脚手架——day3

3.项目拓展配置 (1).配置Pinia Pinia简介 Pinia 是 Vue.js 3 的状态管理库,它是一个轻量级、灵活、易于使用的状态管理库。Pinia 是 Vue.js 3 的官方状态管理库,它可以帮助开发者更好地管理应用的状态。Pinia 是一个开源项目,它有丰富的文档…

网络攻防实战指北专栏讲解大纲与网络安全法

专栏 本专栏为网络攻防实战指北,大纲如下所示 进度:目前已更完准备篇、HTML基础 计划:所谓基础不牢,地动山摇。所以下一步将持续更新基础篇内容 讲解信息安全时,结合《中华人民共和国网络安全法》(以下简…

[答疑]DDD伪创新哪有资格和仿制药比

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 远航 2025-1-24 10:40 最近的热门话题仿制药,想到您经常批评的伪创新,这两者是不是很像? UMLChina潘加宇 伪创新哪有资格和仿制药比。 仿制药的…

【2】阿里面试题整理

[1]. 说一下Java与C的区别。 Java和C是两种在软件开发领域应用非常广泛的语言,但它们的设计理念和应用场景有所不同。 Java是一种基于JVM的解释型语言,具有跨平台性,使用自动垃圾回收机制,这使得开发者可以更专注于业务逻辑&…

线性调整器——耗能型调整器

线性调整器又称线性电压调节器,以下是关于它的介绍: 基本工作原理 线性调整器的基本电路如图1.1(a)所示,晶体管Q1(工作于线性状态,或非开关状态)构成一个连接直流源V和输出端V。的可调电气电阻,直流源V由60Hz隔离变压器(电气隔离和整流&#…

拦截器快速入门及详解

拦截器Interceptor 快速入门 什么是拦截器? 是一种动态拦截方法调用的机制,类似于过滤器。 拦截器是Spring框架中提供的,用来动态拦截控制器方法的执行。 拦截器的作用:拦截请求,在指定方法调用前后,根…

1561. 你可以获得的最大硬币数目

1561. 你可以获得的最大硬币数目 题目链接&#xff1a;1561. 你可以获得的最大硬币数目 代码如下&#xff1a; class Solution { public:int maxCoins(vector<int>& piles) {sort(piles.begin(), piles.end());int res 0;for (int i piles.size() / 3;i < pil…

一文掌握ADB的安装及使用

文章目录 一、什么是ADB&#xff1f;二、 安装ADB2.1 下载ADB2.2 配置环境变量 三、连接Android设备四、 常用ADB命令五、ADB高级功能5.1 屏幕截图和录制5.2 模拟按键输入5.3 文件管理5.4 系统设置管理5.5 系统操作指令5.6 日志操作指令5.7 APK操作指令5.8 设备重启和恢复 六、…

【Redis】Redis入门以及什么是分布式系统{Redis引入+分布式系统介绍}

文章目录 介绍redis的引入 分布式系统单机架构应用服务和数据库服务分离【负载均衡】引入更多的应用服务器节点 单机架构 分布式是什么 数据库分离和负载均衡 理解负载均衡 数据库读写分离 引入缓存 数据库分库分表 引入微服务 介绍 The open source, in-memory data store us…

springboot使用rabbitmq

使用springboot创建rabbitMQ的链接。 整个项目结构如下&#xff1a; 1.maven依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>3.4.1</version> </dependency>application.y…

Codeforces Round 987 (Div. 2)题解 A~D

A- Penchick and Modern Monument 由于给定的数是非递增的&#xff0c;所以 h [ i ] ≥ h [ i 1 ] h_[i]\geq h[i1] h[​i]≥h[i1]&#xff0c;如果 h [ i ] > h [ i 1 ] h[i]>h[i1] h[i]>h[i1] 那么二者至少要改其一。因为最终要求的数是非递减的&#xff0c;所…

论文阅读(九):通过概率图模型建立连锁不平衡模型和进行关联研究:最新进展访问之旅

1.论文链接&#xff1a;Modeling Linkage Disequilibrium and Performing Association Studies through Probabilistic Graphical Models: a Visiting Tour of Recent Advances 摘要&#xff1a; 本章对概率图模型&#xff08;PGMs&#xff09;的最新进展进行了深入的回顾&…