ansible -playbook运维工具、语法、数据结构、命令用法、触发器、角色

目录

配置文件

基本语法规则:

YAML支持的数据结构

 playbook核心元素

ansible-playbook用法:

触发器

特点:

角色:

习题:


配置文件

playbook配置文件使用yaml语法,YAML 是一门标记性语言,专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。yaml格式文件用于保存针对特定需求的任务列表。(应为逐条输入命令效率非常的低下,更有效的方案是在playbook配置文件中放置所有的任务代码,可以实现自动化运维)yaml文件的扩展名为.yaml或.yml

基本语法规则:

yaml语法和其他高级语言类似,其结构缩进来展示,通过 “ - ” 来代表项,通过冒号“ :”来分隔键和值,整个文件以 “---”开始并以“ …”结束(开始结束符号可以不写,只是表明一个文件的开始。可以直接以 - hosts:开头)

列表中的所有成员都开始于相同的缩进级别, 并且使用一个 "- " 作为开头(一个横杠和一个空格):

1.大小写敏感

2.使用缩进表示层级关系(每个任务之间的缩进必须严格要求,务必对齐!语法没有问题,缩进有问题一样不能执行。缩进问题ansible-playbook --syntax-check 命令检测不出来。

3.不允许使用TAB键来缩进只允许使用空格键来缩进!!!

4.缩进的空格数量不重要,空格数量要一致,建议使用两个空格

5.使用"#"来表示注释

YAML支持的数据结构

对象(字典):键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

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

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

- hosts: noe-group                     #对noe-group组的操作
   remote_user: root                   #远端执行用户身份为root
   tasks:                              #任务列表
    - name: adduser user               #任务名称
      user: name=user2 state=present   #执行user模块,创建用户
      tags:                            #创建tag标签
      - a                              #tag标签为a

所有的“一”和“:”后面均有空格,而且要注意缩进和对齐

 playbook核心元素

hosts:

任务的目标主机,多个主机用冒号分隔, 一般调用/etc/ansible/hosts 中的分组信息。

 remote_user:

 远程主机上,运行此任务的身份默认为root。

tasks:

任务,即定义的具体任务,由模块定义的操作列表。

handlers:

触发器,类似tasks, 只是在特定的条件下才会触发的任务。某任务的状态在运行后为 changed 时,可通过"notify" 通知给相应的 handlers 进行触发执行。

roles:

角色,将hosts剥离出去,由 tasks、handlers 等所组成的一种特定的结构集合。

ansible-playbook用法:

--syntax-check

检测 yaml文件的语法。

-C(--check)

预测试,不会改变目标主机的任何设置。

--list-hosts

列出 yaml 文件影响的主机列表。

-list-tasks

列出 yaml 文件的任务列表。

--list-tegs

列出 yaml 文件中的标签。

-t TAGS(--tags=TAGS)

表示只执行指定标签的任务。

--skip-tags=SKIP_TAGS

表示除了指定标签的任务,执行其他任务。

--start-at-task=START_AT

从指定的任务开始往下运行。

触发器

需要条件触发才能执行的任务,之前定义在 tasks 中的任务执行成功后,在此基础上触发其他的任务继续执行,就需要定义handlers。

特点:

handlers

 Ansible提供的条件机制之一。handlers  task 很类似,但是它只在被task 通知的

时候才会触发执行。

handlers

只会在所有任务执行完后执行。而且即使被通知了多次,它也只会执行一次。handlers

按照定义的顺序依次执行。

例如:

- hosts:not-group                    #针对not-group组进行的操作
  remote_user: root                   #远程执行身份为root
  tasks:                              #任务列表
    - name: modify port               #任务名称
      shell: sed -i 's/Listen\80/Listen\8080/g'  /etc/httpd/conf/httpd.conf
                                      #使用shell模块执行操作,修改端口
      notify:                        #配置触发条件
    - restart httpd server            #完成该任务后调用名为“restart httpd server”的触发器
   handlers:                          #配置触发器
   - name: restart httpd server       #指定触发器名称
     service:name=httpd state=restarted    #触发任务为重启httpd服务

角色:

将多种不同的 tasks  的文件集中存储在某个目录下,则该目录就是角色。角色一般存放在 /etc/ansible/roles/目录,可通过 ansible 的配置文件来调整默认的角色目录,/etc/ansible/roles/目 录下有很多子目录,其中每一个子目录对应一个角色,每个角色也有自己的目录结构。

/etc/ansible/roles/为角色集合,该目录下有自定义的各个子目录:

1、mariadb:mysql 角色。

2、Apache:httpd 角色。

3、nginx:nginx 角色。

每个角色的定义,以特定的层级目录结构进行组织。以Mariadb(mysql角色)为例

  1. 1、files,存放由 copy  script 等模块调用的文件。
  2. 2、templates:存放 template 模块查找所需要的模板文件的目录,如 mysql 配置文件等模板。 
  3. 3、tasks:任务存放的目录
  4. 4、handlers:存放相关触发执行器的目录
  5. 5、vars:变量存放的目录
  6. 6、meta: 用于存放此角色元数据。
  7. 7、default:默认变量存放的目录,文件中定义了此角色使用的默认变量。

上述目录中,taskshandlersvarsmetadefault 至少应该包含一个 main.yml 文件,该目录下也可以有其他.yml 文件,但是需要在main.yml 文件中用 include 指令将其他.yml 文件包含进来。 有了角色之后,可以直接在 yaml文件 (playbook 配置文件)中调用角色。

例如:

- hosts:not-group
  remote_user: root
   rolse:
   - mysql:                        #调用角色名
   - httpd:                        #调用角色名
  1. 可以只调用一个角色.也可以调用多个角色。当定义了角色后,用 ansible-playbook PLAYBBOOK 文件执行即可。此时 ansible会到角色集合的目录(/etc/ansible/roles)去找 mysql 和 httpd 目录,然后 依次运行 mysql 目录和 httpd目录下的所有代码。
  2. 下面通过一个实例配置数据库角色,要求被管理主机上自动安装 Mariadb,安装完成之后上传提 前准备好的配置文件至远端主机,重启服务,然后新建 testdb 数据库,并允许 test 用户对其拥有所有权限。

习题:

1.Ansible 根据角色划分为(    )三个部分。

A.  使用者     BAnsible 脚本   C.Ansible  工具集    D. 作用对象.

2. 下面属于Ansible 工具集的有(   ).

A.Inventory                  B.Modules      C.Plugins                      D.API

3.Ansible 中, Inventory 文件的默认路径是( ).

A./etc/ansible/Inventory        B./etc/ansible/Inventory.conf

C./etc/ansible/hosts           D./etc/ansible/hosts.conf

4.Ansible 中,角色默认位于(    )目录中.

A./var/ansible/roles                           B./etc/ansible/roles

C./etc/roles                                    D./opt/ansible/roles

5.Ansible 中, command 模块的作用是(    )

A. 执行 linux 命令                    B. 修改文件权限

C. 安装软件                            D. 复制文件

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

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

相关文章

目标检测——印度车辆数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

C++中的complex

在 C 中,std::complex 是一个模板类,用于表示和操作复数。这个类是标准模板库(STL)的一部分,包含在 头文件中。std::complex 提供了一套丰富的功能,包括基本的算术运算、比较运算、数学函数等,使…

【微信小程序开发】flex布局在小程序开发项目中的应用详解

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Hive JSON数据处理

Hive JSON数据处理 JSON(JavaScript Object Notation)文件格式是一种轻量级的数据交换格式,用于存储和传输结构化的数据。它基于JavaScript的语法,但是可以被多种编程语言所支持和解析,因此被广泛应用于各种场景。 J…

Spring Security 复盘

1、什么Spring Security? Spring Security 是一种强大的框架,它在 Spring 生态系统中扮演着保护应用安全的关键角色。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。 2、认证 和 授权 1.什么是认证&#xff1…

Python 全栈系列244 nginx upstream 负载均衡 踩坑日记

说明 最初是因为租用算力机(Python 全栈系列242 踩坑记录:租用算力机完成任务),所以想着做一个负载均衡,然后多开一些服务,把配置写在nginx里面就好了。 一开始租用了一个3080起了一个服务,后来觉得速度不够快,再起了…

如何解决IntelliJ IDEA中pom.xml依赖项引发的安全漏洞黄线警告问题

背景 在开发过程中,当我们在pom.xml文件中添加依赖项时,经常会发现IntelliJ IDEA报出黄色警告线条,提示存在潜在的安全漏洞。警告的具体展现形式如下: 解决方案 首先,打开设置菜单界面,接着选择编辑器选…

【图解计算机网络】http1.1,http2.0,http3.0

http1.1,http2.0,http3.0 http1.1长连接管道传输缺点 http2.0头部压缩二进制格式并发传输服务端推送缺点 http3.0无队头阻塞快速建立连接连接迁移 http1.1 长连接 在http1.0的时候,一次http请求就要建立一次TCP连接,这一次的htt…

Vue3项目Easy云盘(二):文件列表+新建目录+文件重命名+文件上传

一、文件列表 1.封装全局组件Table.vue 因为Main.vue等都会用到文件列表table&#xff0c;所以直接封装成组件。 src/components/Table.vue <template><!-- 表格 --><div><el-tableref"dataTable":data"dataSource.list || []":h…

基于AIoTedge+ThingsKit物联网平台,实现办公室人员进出AI统计

在AIoT时代&#xff0c;智能办公已成为提升企业效率的关键。本期文章将带你了解如何利用AIoTedge结合ThingsKit物联网平台&#xff0c;实现办公室人员进出的智能统计。这不是简单的技术堆砌&#xff0c;而是一场关于AI与IoT融合的实战演示。&#x1f31f; 提示&#xff1a;AIoT…

【Linux】Centos7安装部署unimrcp,搭建MRCP服务器

yum install libtool yum install libtool-ltdl-devel yum install libsofia-sip-ua find / -name libsofia-sip-ua.so.0 2>/dev/null # 设置环境变量&#xff1a;如果库文件存在但不在默认搜索路径中&#xff0c;你可以通过设置 LD_LIBRARY_PATH 环境变量来告诉系统在哪…

Github学习

1.Git与Github 区别: Git是一个分布式版本控制系统&#xff0c;简单的说就是一个软件&#xff0c;用于记录一个或若干个文件内容变化&#xff0c;以便将来查阅特点版本修订情况的软件。 Github是一个为用户提高Git服务的网站&#xff0c;简单说就是一个可以放代码的地方。Gi…

数字化社会的引擎:揭示Facebook的影响力

在当今数字化社会中&#xff0c;社交媒体平台扮演着至关重要的角色&#xff0c;而Facebook作为其中的巨头之一&#xff0c;其影响力不可忽视。本文将深入探讨Facebook的影响力&#xff0c;从多个角度揭示其在数字化社会中的引擎作用。 1. 社交互动的核心平台 Facebook作为社交…

使用Python递归重命名文件和文件夹

使用 Python 递归重命名文件和文件夹可以通过 os 模块和 os.path 模块来完成。下面是一个示例代码&#xff0c;演示如何递归地重命名文件和文件夹&#xff1a; 1、问题背景 在研究大型数字档案时&#xff0c;需要将这些档案复制到本地存储进行保存。这些档案通常存储在 USB 驱…

【机器学习】LoFTR:革命性图像特征批评技术等领跑者

LoFTR&#xff1a;革命性图像特征匹配技术的领跑者 一、引言二、LoFTR技术的创新之处三、LoFTR技术的实现原理四、LoFTR技术的代码实例五、结语 一、引言 在3D计算机视觉领域&#xff0c;图像特征匹配技术一直是研究的热点和难点。随着技术的不断发展&#xff0c;传统的特征检…

力扣:48. 旋转图像(Java)

目录 题目描述&#xff1a;输入&#xff1a;输出&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使…

图神经网络实战(10)——归纳学习

图神经网络实战&#xff08;10&#xff09;——归纳学习 0. 前言1. 转导学习与归纳学习2. 蛋白质相互作用数据集3. 构建 GraphSAGE 模型实现归纳学习小结系列链接 0. 前言 归纳学习 (Inductive learning) 通过基于已观测训练数据&#xff0c;建立一个通用模型&#xff0c;使模…

Maven:Maven基础

Maven apache旗下的一个开源项目,一款用于管理和构建java项目的工具 什么是Maven 一个项目管理和构建工具,基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建,报告和文档. Maven的作用 依赖管理 方便快捷的管理项目依赖的资源jar包,避免版本冲突问题 统一…

C++的数据结构(四):队列

在数据结构中&#xff0c;队列&#xff08;Queue&#xff09;是一种特殊的线性表&#xff0c;只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;进行插入操作。队列中没有元素时&#xff0c;称为空队列。队列的…

小程序的小组件

进度的组件 文字换行过滤 以及 排序 简单易懂 只为了记录工作 <template><div><ProgressBar :progress"progress" /><button click"increaseProgress">增加进度</button><view class"goods-name">12…