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.mzph.cn/news/836917.shtml

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

相关文章

windows和Linux卸载移动磁盘

文章目录 Linux卸载磁盘target is busy.window卸载磁盘打开事件查看器 Linux卸载磁盘target is busy. #查看有哪些进程访问挂载点 lsof /media/lei/repository/#杀死进程 pkill node window卸载磁盘 #提示 #该设备正在使用中. 请关闭可能使用该设备的所有程序或窗口,然后重试…

Vue 局部布局 Layout 内部布局 [el-row]、[el-col]

之前的布局容器是一个整体的框架,layout里面的布局其实就是el-row和el-col的组合。 基础布局 使用单一分栏创建基础的栅格布局。 通过 ​row ​和 ​col ​组件,并通过 ​col ​组件的 ​span ​属性我们就可以自由地组合布局。 这种最简单,…

2024年可以做的网上兼职有哪些?10个正规赚钱软件平台分享

在数字化浪潮席卷全球的今天,兼职工作早已不再局限于传统的线下模式。只要有一部手机或电脑,你就能轻松开启兼职之旅,实现躺着也能赚钱的梦想! 接下来,就让我们一起看看2024年那些靠谱又有趣的网上兼职项目吧&#xff…

STK12 RPO模块学习 (1)

一、背景介绍 在STK12中,在Astrogator的模块上开发了新的模块(Rendezvous and proximity operations)。轨道交会接近通常来说是一个很复杂的过程。RPO实现需要对轨道动力学有一个清晰的理解,并且对于Astrogator模块具备很强的背景和经验&…

2024最新软件测试【测试理论+ Linux】面试题(内附答案)

一、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段:需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的 SE 会把需求文档给我们自己先去了解一到两天这样,之后我们会有一个需求澄清会议, …

Kaspa是潜力金吗?那么如何获取,以bitget钱包为例

$KAS 这个币比较小众,华语区知道的不多,目前挖这个币的矿工也不多,但是大家都有一个默契,就是尽量不要宣传,先建设生态,自私的心理就是:自己先多挖些币。 简单介绍一下 #KASPA 这个项目&#x…

[算法][BFS][leetcode]994. 腐烂的橘子

题目地址 https://leetcode.cn/problems/rotting-oranges/description/ 错误解法 class Solution {public int orangesRotting(int[][] grid) {//层序遍历int ans 0;for (int i 0;i<grid.length;i) {for(int j 0;j<grid[0].length;j){boolean flag false;if(grid[i][j…

【光线重塑技术】小姐姐,美得不可方物——lllyasviel/ic-light

在英伟达自18年宣布光追技术之后&#xff0c;RTX显卡也成了目前Steam游戏的常客。就连 AMD、Intel 和 Apple Silicon 都宣布要在GPU上支持光追算法。这次我要介绍的是huggingface上比较火的relight技术—— ic-light 介绍 IC-Light 是一个操纵图像照明的项目。 IC-Light &qu…

媒体宣发:多元宣发方式的方式有哪些

在信息爆炸的今天&#xff0c;媒体宣发被广泛地运用在各个领域&#xff0c;对于产品宣传、企业形象塑造等都起着至关重要的作用。多样化的媒体宣发方式越来越受到企业的重视&#xff0c;那么常见的媒体宣发方式有哪些呢&#xff1f; 首先&#xff0c;新闻发布是最传统也是最直…

3分钟,学会一个 Lambda 小知识之【流API】

之前给大家介绍的 Lambda 小知识还记得吗&#xff1f;今天再来给大家介绍&#xff0c; 流API 的相关知识要点。 流API Stream是Java8中处理集合的关键抽象概念&#xff0c;它可以指定你对集合的&#xff0c;可以执行查找、过滤和映射等数据操作。 Stream 使用一种类似用 SQ…

使用sqlmodel实现唯一性校验2,插入之前检查是否已存在

虽然之前添加唯一性校验的方法能够解决数据唯一的问题&#xff0c;但是如果忘了处理异常&#xff0c;则可能会导致程序崩溃。 在此基础上&#xff0c;我们可以在插入数据之前检查该数据是否已存在。 原来的代码&#xff1a; from sqlmodel import Field, Session, SQLModel,…

【opencv】图像处理(一)

实验环境&#xff1a;anaconda、jupyter notebook 实验用到的包&#xff1a;numpy,matplotlib,opencv 一、opencv安装 最好使用python3.6&#xff08;我之前用的3.9安装opencv3.4.1.15会失败&#xff09; conda create -n cv python3.6安装opencv3.4.1.15&#xff08;3.4.2版…

DS高阶:B树系列

一、常见的搜索结构 1、顺序查找 时间复杂度&#xff1a;O(N) 2、二分查找 时间复杂度&#xff1a;O(logN) 要求&#xff1a;&#xff08;1&#xff09;有序 &#xff08;2&#xff09;支持下标的随机访问 3、二叉搜索树&#xff08;BS树&#xff09; 时间复杂…

【Linux】文件描述符和重定向

目录 一、回顾C文件 二、系统文件I/O 2.1 系统调用 open 2.2 标志位传参 2.3 系统调用 write 2.4 文件描述符fd 2.5 struct file 2.6 fd的分配规则 2.7 重定向 2.7.1 基本原理&#xff1a; 2.7.2 系统调用 dup2 2.8 标准错误 一、回顾C文件 文件 内容 属性 对…

leetcode刷题:买卖股票的最佳时机

题目 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大…

文件操作IO网络编程网络原理

​ 文件操作—IO 文件在计算机中可以代表很多东西 在操作系统中, 文件主要是指硬盘文件 硬盘主要分为机械硬盘和固态硬盘。机械硬盘通过磁头在旋转的磁盘上读取数据&#xff0c;适合顺序读取。而固态硬盘则使用闪存芯片来存储数据&#xff0c;没有机械部件&#xff0c;因此读…

省公派访学|社科老师赴世界名校牛津大学开展研究

F老师已获某省公派出国访学半年的资助&#xff0c;希望落实的学校尽量知名。但因为F老师只是硕士毕业而无博士学位&#xff0c;专业方向又是社科类&#xff0c;所以申请到世界知名高校有一定难度。经过努力&#xff0c;最终我们获得了世界顶尖高校-英国牛津大学的访问学者邀请函…

html5的一些新特性

最近总是碰到html5特性这种问题,虽然简单,但是也是自己平时不关注的东西,趁今天时间充裕,那就来总结一下吧 HTML5新特性包括新增了部分标签、表单元素增强、支持视频和音频、支持canvas绘图、提供web存储、提供地理定位功能、提供web workers机制、提供web socket协议、提供CS…

《intel开发手册卷3》读书笔记1

1、CPU工作模式 1&#xff09;实模式&#xff1a;8086的寄存器只有16位&#xff0c;我们也习惯于称8086的工作模式为16位模式。后续的CPU为了保持兼容性&#xff0c;在芯片上了电以后&#xff0c;还必须运行于16位模式之下。这种模式还有个正式的名字叫做实模式。在实模式下&am…

【游戏引擎】unity

目录 Unity入门教程&#xff1a;从零到英雄的旅程前言第一步&#xff1a;下载和安装Unity第二步&#xff1a;创建你的第一个Unity项目第三步&#xff1a;熟悉Unity界面第四步&#xff1a;创建一个简单的游戏对象第五步&#xff1a;编写脚本赋予游戏对象生命第六步&#xff1a;运…