ansible(第四天)

news2024/12/23 20:15:56

 三:编写playbook

1.Ansible playbook

临时命令可以作为一次性对一组主机运行简单的任务。不过,若要真正发挥Ansible的力量,需要了解如 何使用playbook可以轻松重复的方式对一组主机执行多项复杂的任务。

play是针对对清单中选定的主机运行一组有序任务。playbook是一个文本文件,其中包含有一个或者多 个按特定顺序运行的play组成的列表。

play可以让您将一系列冗长而复杂的手动管理任务转变为可轻松重复的例程,并且具有可预测的成果。 在playbook中,您可以将play内的任务序列保存为人类可读并可立即运行的形式。根据任务的编写方 式,任务本身记录了部署应用或者架构所需的步骤。

2..yaml 标记语言 YAML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、 Python、Perl以及电子邮件格式RFC2822等。Clark Evans在2001年在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者,目前很多软件中采有此格式的文件,如:ubuntu, anisble,docker,k8s等

YAML:YAML Ain’t Markup Language,即YAML不是XML。不过,在开发的这种语言时,YAML的意思 其实是:"Yet Another Markup Language"(仍是一种标记语言)

YAML 语言特性

YAML的可读性好

YAML和脚本语言的交互性好

YAML使用实现语言的数据类型

YAML有一个一致的信息模型

YAML易于实现

YAML可以基于流来处理

YAML表达能力强,扩展性好

1.1YAML的三种数据结构

对象: 键值对的集合,又称为映射、哈希、字典 name: username

数组: 一组按次序排列的值,又称为序列/列表

纯量: 单个的、不可再分的值

1.2YAML语法格式

- name:

 1.3playbook结果语法检测

 1.4 yaml注释

#this is YAML

Same data # This is also a YAML comment

1.5yaml字符串 和多行字符串表示方式

(1)单行字符串中间有空格可以不放在引号中。字符串也可以通过单引号或者双引号括起来

(2)编写多行换行操作可以通过|竖线保留字符串中的换行符

(3) >表示换行字符转换成空格并且行内的引导空白将被删除。这种方法通常用于将很长的字符串在空格 字符处断行,使他们跨占多行来提高可读性。

 重要:

只有空格字符作为缩进不能用制表符,如果您使用vi编辑器可以在$HOME/.vimrc文件中添加一下行以便 更轻松的编辑playbook,以下配置实现的是在按下Tab键是执行一个双空格缩进,并在换行后自动缩进 后续行。

autocmd FileType yaml setlocal ai ts=2 sw=2 et

四、管理变量与事实

1.变量

1.1变量命名

变量名称必须是以字母开头,并且只能含有字母、数字和下划线。

1.2变量优先级(高--低)

(1)全局范围:从命令行或ansible配置设置的变量

(2)play范围:在play和相关结构中设置的变量

(3)主机范围:由清单、事实收集或注册的任务,在主机和个别主机上设置的变量 命令行定义变量--> 主机清单中单独定义主机变量--->主机清单公共变量--->系统内置变量

1.3 命令行引用

 1.4 引用playbook中的变量

1.5主机变量

 

 1.6使用数组作为变量

数组(Array)是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。 组成数组的各个变量称为数 组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各 个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序 的形式组织起来的一种形式。 这些有序排列的同类数据元素的集合称为数组。

数组是用于储存多个相同类型数据的集合。

 1.7系统变量register

使用register已注册变量捕获命令输出

管理员可以使用register语句捕获命令输出,输出保存在

一个临时变量中,稍后再playbook中可用于调试用途或者达成其他目的。

 2.使用ansible vault加密文件

ansible可能需要访问密码或者API秘钥等敏感数据,以便能配置受管主机。通常,此信息可能以纯文 本形式存储在清单变量或其他ansible文件中。但若如此,任何有权访问ansible文件的用户或存储这些 ansible文件的版本控制系统都能访问如此敏感数据。这显然存在安全风险。

使用ansible随附的ansible vault 可以加密和解密任何由ansible使用的结构化数据文件。若要使用 ansible vault,可通过一个名为ansible-vault的命令行共计创建、编辑、加密、解密和查看文件。Ansible vault可以加密任何由ansible使用的结构化数据文件。这可能包括清单变量、playbook中含有的变量文 件、在执行playbook时作为参数传递的变量文件,或者ansible角色中定义的变量。

注:ansible-vault并不实施自有的加密函数,而是使用外部python工具。文件通过利用AES256的对称 加密(将密码用作机密秘钥)加以保护,这种方式并未得到第三方正式审核。

1.创建加密文件

 2.使用文件权限和其他方式来严密保护文件(创建密码文件存储vault密码)

 3.查看加密文件

#ansible-vault view secret1.yml

4.编辑现有的加密文件(edit命令始终重写文件,所以查看不该文件信息用view)

#ansible-vault edit secret1.yml

5.加密已存在文件

#ansible-vault encrypt secret2.yml secret3.yml

--output 以其他名称保存加密文件,使用该选项只能使用一个输入文件

6.解密现有文件

#ansible-vault decrypt secret2.yml --output=secret.decrypt.yml

7.更改加密文件密码

#ansible-vault rekey secret.yml

8.使用密码文件更改方式--new-vault-password-file

#ansible-vault rekey --new-vault-password-file=NEW_FILE_PASSWD secret2.yml

9.运行ansible-paybook命令提供加密密码 --vault-id @prompt (交互式输入密码)

#ansible-playbook --vault-id @prompt secret.yml

#ansible-play --vault-id one@prompt --vault-id two@prompt secret.yml

10.运行ansible-playbook提供密码文件 vault-password-file

#ansible-playbook --vault-password-file=/root/vault-pass secret1.yml

ansible变量文件以及加密vault文件的管理格式(在playbook级别上创建目录通常包含名称与他们所应 用的主机组匹配的变量文件。)

 3.管理事实

3.1描述ansible事实

ansible事实是ansible在受管主机上自动检测到的变量。事实中含有主机相关的信息,可以像play中 的常规变量、条件、循环或者依赖于受管主机收集的任何其他语句那样使用。(收集的系统属性)

受管主机的事实有(主机名称、内核版本、网络接口、ip地址、操作系统版本、各种变量、CPU数 量、提供的或可用的内存、可用磁盘等)

借助事实我们可以方便检索主机的状态,并根据状态确定要执行的操作。

例如:

1.根据不同的内核版本事实运行条件任务,以此来重新启动服务。

2.根据事实报告的可能内存情况来定义mysql配置文件。

3.可根据事实的值设置配置文件中使用的ipv4的地址。

3.2受管主机收集事实的方式

 3.2json语法表示

playbook中以JSON格式显示ansible_facts变量内容,作为变量的散列/字典

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧 洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁 和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生 成,并有效地提升网络传输效率。

用JSON表示如下:

 3.3ansible事实实例

在Ansible2.5之前,事实是作为前缀为字符串ansible_的单个变量注入,而不是作为 ansible_facts变量的一部分注入

ansible_facts['distribution']事实会被称为ansible_distribution

 ansible事实的事例

 3.4事实案例

 3.5 关闭事实收集

 

 3.6创建自定义事实

 默认情况下setup模块从受管主机的/etc/ansible/facts.d目录下的文件和脚本中加载自定义事实。各个文 件名必须以.fact结尾才能使用。动态自定义事实脚本必须输出JSON格式的事实,而且必须是可执行文 件。

INI和JSON格式编写的静态自定义事实文件。INI格式的自定义事实文件包含由一部分定义的顶层值,后 跟用于待定义事实的键值对。

 3.7使用魔法(magic)变量

一些变量并非事实或通过setup模块配置,但也由Ansible自动设置。这些魔法变量也可用于获取与特定 受管主机相关的信息

常用的魔法变量**

 示例:

 

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

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

相关文章

汽车电子系统网络安全组织管理

声明 本文是学习GB-T 38628-2020 信息安全技术 汽车电子系统网络安全指南. 下载地址 http://github5.com/view/764而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 汽车电子系统网络安全组织管理 6.1 组织机构设置 组织应高度重视网络安全&#xff0c…

基于Prometheus+Grafana搭建监控平台(Windows/Linux环境exporter部署)

1. 介绍 1.1 Prometheus是什么?Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会…

【从零开始学习深度学习】43. 算法优化之Adam算法【RMSProp算法与动量法的结合】介绍及其Pytorch实现

Adam算法是在RMSProp算法基础上对小批量随机梯度也做了指数加权移动平均 【可以看做是RMSProp算法与动量法的结合】。 目录1. Adam算法介绍2. 从零实现Adam算法3. Pytorch简洁实现Adam算法--optim.Adam总结1. Adam算法介绍 Adam算法使用了动量变量vt\boldsymbol{v}_tvt​和RMS…

LVGL官方UI设计软件——SquareLine Studio micropython 使用简单测评

经常去LVGL官网逛的人一定都知道这个软件,作为官方的亲儿子,使用体验如何呢,我简单体验了一周左右,简单做个测评,本测评仅代表我个人意见,并且仅限micropython的使用体验! 首先是价格&#xff0…

TCP报文段(segment)首部格式

TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment)。 IP传给链路层的数据单元称作IP数据报(IP datagram)。 通过以太网传输的比特流称作帧(Frame)。 逐层封装: 源端口号发送端端口号,字段长16位(2字节&…

计算机网络第二章

物理层的基本概念物理层的作用:物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的主要任务:确定与传输媒体接口有关的一些特性 🔜本质:定义一些固定标准物理层的四大特性&a…

Word怎么转PDF?8个Word转PDF工具分析

Word 到 PDF 转换工具是用于将 Microsoft Word(DOC 或 DOCX)文档转换为 PDF 格式的程序。根据操作模式,它可以是在线或离线软件。当然,考虑到市场上充斥着此类工具,获得最好的 DOCX 到 PDF 转换器可能会让人头疼。正是…

MySQL基础篇第12章(MySQL数据类型)

1. MySQL中的数据类型 常见的数据类型的属性: 2. 整数介绍 2.1 类型介绍 整数类型一共有 5 种,包括 TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT。 它们的区别如下表所示: 2.2 可选属性 整数类型的可选…

javaweb-异步请求AjaxaxiosJSON

1,Ajax 1.1 概述 AJAX (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。 我们先来说概念中的 JavaScript 和 XML,JavaScript 表明该技术和前端相关;XML 是指以此进行数据交换。而这两个我们之前都学习过。 ####…

JavaWeb基础——从入门到超神(笔记,持续更新)

day00综述 需要学习SpringBoot,但是JavaWeb是基础,来补一下 JavaWeb就是将数据库中的数据用好看的样式在网页上呈现出来 day01MySQL基础 接下来就是MySQL的安装什么的 mysqld --initialize-insecure mysqld -install net start mysql至此我的电脑上已…

【蓝桥杯-筑基篇】基础入门

🍓系列专栏:蓝桥杯 🍉个人主页:个人主页 目录 1.数位翻转 2.三个数求最大值的写法 3.两数交换的几种方法 4.身份证第18位合法性校验 5.黑洞数(陷阱数) 1.数位翻转 如: 整数 12345 返回结果为整数: 54321 当第一次看到这个题…

【零基础】学python数据结构与算法笔记7

文章目录前言41.查找排序部分习题42.查找排序习题143.查找排序习题244.查找排序习题345.查找排序习题4总结前言 学习python数据结构与算法,学习常用的算法, b站学习链接 41.查找排序部分习题 选题部分来自leetcode 42.查找排序习题1 242. 有效的…

蓝桥杯备赛Day6——链表

目录 数组的缺点 链表 单向链表 双向链表 Python链表的实现 手写链表 数组的缺点 1)需要占用连续的空间 若某个数组很大,可能没有这么大的连续空间给它用。 2〉不方便删除和插入 例如删除数组中间的一个数据,需要把后面所有的数据往前挪填补这个空…

CODESYS开发教程7-字符串及其基本操作

今天继续我们的小白教程,老鸟就不要在这浪费时间了😊。 前面一期我们介绍了CODESYS的关键字及变量。这一期主要介绍CODESYS的字符串类型,以及如何利用字符串操作函数来实现字符串的查找、插入、替换、连接、分割、删除等相关操作。注意本文介…

Realsense相机的RGB与depth图像的对齐

第三部分 将RGB图像和Depth图像对齐 文章目录第三部分 将RGB图像和Depth图像对齐前言一、创建对齐的cpp文件1.用vim创建C文件二、使用CMake构建C工程1.创建并编写CMakeList.txt文件2.编译CMakeLists.txt总结前言 将RGB图像和深度图像对齐有两种方式,一种是将深度图…

音视频开发-第一章-H264编解码

目录参考原文一、概述二、封装格式2.1、视频文件封装格式2.2、音视频编码方式2.2.1、视频编码方式2.2.2、音频编码方式三、H264相关概念3.1、H264基本单元3.2、帧类型3.3、GOP(画面组)3.4、IDR 帧四、H264压缩方式4.1、H264压缩方式4.2、H264压缩方式说明五、H264分层结构5.1、…

【websocket】前端websocket 实时通信

前端websocket 实时通信 文章目录前端websocket 实时通信什么是websocket为什么传统的http协议不能做到websocket实现的功能websocket前后端所用到的事件对比WebSocket.readyState代码什么是websocket websocket是HTML5开始提供的一种网络通信协议,它诞生的目的是在…

60条小妙招帮助你开车更省油

1、把备胎和千斤顶,工具,都放在家里,不跑长途不带这些,省油。2、说明书上说92号或以上标号,那么加95号油省油。如果是95或以上的标注,那就加98省油。3、驾驶中尽量减少急加速 急刹车,省油。4、驾…

Java——多态

好久不见啊,兄弟们!!这不将近期末考试了吗,阿涛平日里课听的不多,所以最近都在疯狂补课,祖宗之法也可变,阿涛的学校终于不是二十周校历了!!希望从今往后我们的生活都能够…

[oeasy]python0041_ 转义字符_转义序列_escape_序列_sequence

转义序列 回忆上次内容 上次回顾了5bit-Baudot博多码的来历从 莫尔斯码 到 博多码 原来 人 来 收发电报 现在 机器 来 收发电报 输入方式 从 电键改成 键盘 输出方式 从 纸带变成 打印纸张 后来 电传打字机ASR-33成为 初代 经典终端 除了 \n 和 \r 之外 还有什么 特殊字符 吗…