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                   #远端执行用户身份为roottasks:                              #任务列表- 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                   #远程执行身份为roottasks:                              #任务列表- 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-groupremote_user: rootrolse:- 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.hqwc.cn/news/698376.html

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

相关文章

信创改造1---TongLINK/Q安装部署

1. 准备工作 创建用户和组权限 groupadd -g 600 tlq useradd -d /home/tlq -g 600 tlq chown tlq:tlq /home/tlq chmod 755 /home/tlq给自己创建的用户设置密码 passwd tlq根据自己的服务器上传对应的包并解压 2. 上传授权文件 上传license.bat文件到…

从ROS到数据库:用Python将ROS话题消息保存到数据库

观前提醒:本博客介绍如何使用Python订阅ROS话题,并将接收到的消息保存到SQL数据库中,包括MySQL和SQL Server两种情况。 使用Python订阅ROS话题并将消息保存至MySQL数据库 下面我们将详细介绍如何使用Python订阅ROS话题,并将接收的数据保存到MySQL数据库…

深入理解MVCC与Read View:并发控制的关键要素

MVCC MVCC的几个问题1.update、insert、select和delete如何在MVCC中维护版本链?2.select读取,是读取最新的版本呢?还是读取历史版本?3.当前读和快照读4.那为什么要有隔离级别呢?5.如何保证,不同的事务&…

Netty-面试题(中)(五十)

关于零拷贝和堆外内存 Java在将数据发送出去的时候,会先将数据从堆内存拷贝到堆外内存,然后才会将堆外内存再拷贝到内核态,进行消息的收发,代码如下: 所以,我们发现,假如我们在收发报文的时候使用直接内存&…

地产人的福音!VR全景分屏对比,让装修施工一目了然

现如今,VR全景已成为地产行业不可或缺的应用工具,从地产直播到楼市VR地图,从效果图到水电家装施工记录,可以说整个地产行业的上下游生态中都可以看到720云VR全景的身影。 以720云VR全景作为直播载体 VR全景高清矩阵地图等多种内容…

使用python开发的闭运算调试器

使用python开发的开运算调试器 简介效果代码 简介 用来调试闭运算效果的小工具,滑动条可以控制滤波核的大小,用来查看不同滤波核下的闭运算效果。 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayou…

为什么要用机架式液冷负载

机架式液冷负载是一种先进的散热技术,它通过将冷却液直接引入服务器的热源,实现对服务器内部组件的高效散热。与传统的空气冷却方式相比,机架式液冷负载具有更高的散热效率、更低的能耗和更长的设备寿命等优点。以下是使用机架式液冷负载的几…

Saas详解

1. 什么是Saas SaaS(Software-as-a-Service),简单点理解就是软件即服务,即通过网络提供软件服务。 在SaaS模型中,用户不需要在本地安装软件,而是通过网络(通常是浏览器)访问应用程…

ValueError: source code string cannot contain null bytes

导入pandas报如下错误: 解决: pandas好像只支持到3.8,我的python是3.10,改成3.7就能正常使用了

Spire.PDF for .NET【文档操作】演示:将多个 PDF 文件中的选定页面合并为一个

使用 Spire.PDF,您不仅可以将多个 PDF 文件合并为一个文件,还可以从源文件中选择特定页面并将它们合并为一个 PDF 文档。以下代码片段演示了相同的内容。 Spire.PDF for .NET 是一款独立 PDF 控件,用于 .NET 程序中创建、编辑和操作 PDF 文档…

高血压患者可以吃什么?不可以吃什么?

点击文末领取揿针的视频教程跟直播讲解 随着生活水平的提高,越来越多的人得上了“新四高”——高血压、高血脂、高血糖、高尿酸。 一旦惹上这些慢性病,那就得「管住嘴」了~但究竟什么能吃、什么不能吃,还是有很多人不清楚 高血压患者应该遵…

实在智能AI+RPA:引领数字化转型的超自动化智能体

引言 在数字化时代,企业面临着前所未有的挑战和机遇。数字化转型不仅是企业生存的需要,更是实现持续增长和创新的关键。AIRPA作为数字化转型的重要驱动力,正帮助企业实现业务流程的自动化和智能化,从而提升效率、降低成本、增强竞…