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

news2025/2/22 9:03:38

目录

配置文件

基本语法规则:

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.coloradmin.cn/o/1670503.html

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

相关文章

QT函数整理

目录 1. 适应高分辨率函数 1. 适应高分辨率函数 自动适应调整设备安装QT的UI分辨率: QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); 加载位置:

主机扫漏:Apache Tomcat 环境问题漏洞(CVE-2023-46589)

文章目录 引言I 修复此安全问题see also引言 Apache Tomcat存在环境问题漏洞,该漏洞源于存在不正确的输入验证漏洞,可能会导致将单个请求视为多个请求,从而在反向代理后面出现请求走私。 Tomcat did not correctly parse HTTP trailer headers. A specially crafted traile…

2024版有审图号的SHP行政区划

我们之前分享过一些行政区划数据,但都没有审图号。 今天为大家分享一个2024版且有审图号的行政区划,文件格式为SHP且坐标无偏移。 如果你需要该数据,请在文末查看获取方法。 全国省级行政区划 全国共23个省,5个自治区&#xf…

【消息队列】消息中间件介绍

目录 电商系统引发的思考实现支付业务时使用串行操作(同步)串行操作存在的问题根据上述的几个问题,在设计系统时可以明确要达到的目标 消息中间件【MQ(Message Queue)】使用场景1.应用解耦2.异步提速3.流量削峰举个栗子…

ROS控制器插件及机器人模型

ROS中的控制器插件 ros_control 1、ROS为开发者提供的机器人控制中间件 2、包含一系列控制器接口、传动装置接口、硬件接口、控制器工具箱等 3、可以帮助机器人应用功能包更快速落地,提高开发效率 一、控制器管理 提供一种通用的接口来管理怒同的控制器 二、控…

GIAT: 蛋白质结构预测的新利器

瑞典Karolinska研究院在瑞典政府赞助下由Ben Murrell等研究团队在AlphaFold 3最新报告后提出这篇论文提出了一种非常有趣和创新的方法来生成蛋白质骨架结构,称为生成式不变角度转换器(GIAT)。与现有的主要基于扩散模型和流匹配的方法不同,GIAT采用了类似于大型语言模型(如GPT)中…

DDOS攻击实战演示,一次DDOS的成本有多低?

DDoS攻击成本概览 分布式拒绝服务(DDoS)攻击以其低廉的启动成本和惊人的破坏力著称。攻击者通过黑市轻松获取服务,成本从几十元人民币的小额支出到针对大型目标的数千乃至数万元不等。为了具体理解这一成本结构,我们将通过一个简…

东芝移动硬盘数据恢复方法有哪些

谁能懂我此刻的心情啊!移动硬盘用起来真的超级方便,如今我的工作几乎都离不开它,用来存放各种重要文件。可是,让人头疼的事情发生了,昨天我发现移动硬盘里的部分数据竟然莫名其妙地消失了!这可咋整啊&#…

乡村振兴与乡村旅游深度融合:依托乡村自然和文化资源,发展乡村旅游产业,促进农民增收致富,打造特色美丽乡村

目录 一、引言 二、乡村振兴与乡村旅游的内在联系 三、依托乡村自然和文化资源发展乡村旅游产业 (一)挖掘乡村自然资源优势,打造特色旅游品牌 (二)挖掘乡村文化资源内涵,丰富旅游活动内容 四、促进农…

一年IF涨幅10.527,一跃4区变1区,这本IEEE低调,但实力不容小觑!

本周投稿推荐 SSCI • 2区社科类,3.0-4.0(社科均可) EI • 计算机工程类(接收广,录用极快) SCI&EI • 4区生物医学类,1.5-2.0(录用率99%) • 1区工程类&#…

四川易点慧电商抖音小店稳扎稳打,揭秘其成功背后的秘密武器

在数字经济风起云涌的今天,四川易点慧电子商务有限公司以其独特的商业洞察力和创新经营策略,在抖音小店平台上稳扎稳打,赢得了广大消费者的青睐。那么,这家公司究竟是如何在竞争激烈的电商市场中脱颖而出的呢?让我们一…

目标检测——YOLOv9算法解读

论文:YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information (2024.2.21) 作者:Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao 链接:https://arxiv.org/abs/2402.13616 代码:https://github.com/W…

项目总结(5月13号)

从做聊天室项目到现在,陆陆续续完成了部分项目的功能点。 下面是我的项目构思 这里介绍一下项目的关键功能点,私聊和群聊。 因为我用的是非阻塞io,所以聊天窗口不能多开,当只开一个窗口进行聊天时,可以实现聊天信息的…

✬✬✬宁波iso14001认证:环境保护的“绿色光环”加持✬✬✬

🍒宁波iso14001认证:💗环境保护的“绿色光环”加持🌵 🍓说到环境保护,😂我可是满满的热情啊!⌚最近,我们公司成功🚈获得了ISO14001认证,&#x1f…

研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理和基于Github的尝试

一、研究幽灵漏洞及其变种(包括但不限于V1-V5)的攻击原理 1.1 基本漏洞原理(V1) 幽灵漏洞的基本原理是由于glibc库中的gethostbyname()函数在处理域名解析时,调用了__nss_hostname_digits_dots()函数存在缓冲区溢出漏洞。 具体来说,__nss_hostname_digits_dots()使用一个固定…

铁路/党员干部网评该如何去投稿呢?

为了推动网宣工作的正常运行网宣文章还能够有所突破,那么写作出高质量的文章就成为了我们的坚韧利剑了,我们在写作的时候需要用到软文写作技巧的手法来进行写作。俗话说得好冰冻三尺非一日之寒,在网上能够写作出吸引人的文章作者都是有较长的…

前端动态旋转地球背景

效果图 贴下源码 <template><div class"map-bg"><div class"canvas" id"canvs"></div><canvas class"canvasxk" id"canv"></canvas></div> </template><script setup …

「网络流 24 题」星际转移【最大流、残余网络上加边、分层(分时)图】

「网络流 24 题」星际转移 1 ≤ n ≤ 13 , 1 ≤ m ≤ 20 , 1 ≤ k ≤ 50 1 \leq n \leq 13, 1\leq m \leq 20, 1 \leq k \leq 50 1≤n≤13,1≤m≤20,1≤k≤50 思路 我们用 s h i p [ i ] [ j ] ship[i][j] ship[i][j] 表示飞船 i i i 在时刻 T T T mod r i j r_i j ri​…

MATLAB R2017b安装的关键一步

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 MATLAB R2017b的安装文件比较庞大&#xff0c;由两个iso文件组成&#xff1a;R2017b_win64_dvd1.iso和R2017b_win64_dvd2.iso。安装时需要注意的是&#xff0c;首先使用DAEMON Tools Lite打开R2017b_win64_dvd1.iso&am…

力扣HOT100 - 118. 杨辉三角

解题思路&#xff1a; 每个数字等于上一行的左右两个数字之和。 class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> res new ArrayList<>();for (int i 0; i < numRows; i) {List<Integer> …