Ansible自动运维工具之playbook

一.inventory主机清单

1.定义

Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。

2.变量

(1)主机变量
[webservers]
192.168.10.14 ansible_port=22 ansible_user=root ansible_password=abc1234
(2)组变量
[webservers:vars]			#表示为 webservers 组内所有主机定义变量
ansible_user=root
ansible_password=abc1234[all:vars]					#表示为所有组内的所有主机定义变量
ansible_port=22
(3)组嵌套
[nginx]
192.168.10.20
192.168.10.21
192.168.10.22[apache]
192.168.10.3[0:3][webs:children]		#表示为 webs 主机组中包含了 nginx 组和 apache 组内的所有主机
nginx
apache

二.playbook基本内容

1.组成

(1)Tasks: 任务,即调用模块完成的某操作
(2)Variables: 变量
(3)Templates: 模板
(4)Handlers: 处理器,当某条件满足时,触发执行的操作
(5)Roles: 角色

2.基本语法

(1)大小写敏感
(2)使用缩进表示层级关系
(3)缩进时不允许使用tab键、只允许使用空格
(4)缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
hosts定义节点,可以是组
remote_user是你以什么用户身份进行登陆
tasks是你的任务
become:yes表示切换用户
become_user: mysql表示切换到mysql用户,配合上一条使用
- name:为下面执行的操作起名

3.数据结构

(1)对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes)/ 字典(dictionary)
(2)数组:一组按次序排列的值,又称为序列(sequence)/ 列表(list)
(3)纯量:单个的、不可再分的值

三.playbook示例

ansible-playbook xxx.yaml --syntax-check   			   		 #检查yaml文件的语法是否正确
ansible-playbook xxx.yaml --list-task     					 #检查tasks任务
ansible-playbook xxx.yaml --list-hosts     					 #检查生效的主机
ansible-playbook xxx.yaml --start-at-task='xxx'			     #指定从某个task开始运行- hosts: webserver   #指定主机组,可以是一个或多个组remote_user: root 	 #指定远程主机执行的用户名
参数说明
-k(-ask-pass)用来交互输入ssh密码
-K(-ask-become-pass)用来交互输入sudo密码
-u指定用户
-e引入变量值

1.为每个任务定义远程执行用户

cd /opt
vim 1.yaml- hosts: mysqlremote_user: roottasks:- name: test connectionping:remote_user: mysql  ansible mysql -m user -a 'name=mysql'
ansible mysql -m shell -a 'echo 123123 | passwd --stdin mysql'
ansible-playbook 1.yaml -k
123123

2.指定远程主机切换用户执行剧本

vim 2.yaml- hosts: mysqlremote_user: rootbecome: yes         become_user: mysql   tasks:- name: copy textcopy: src=/etc/fstab dest=/home/mysql/fstab.bakansible-playbook 2.yaml

3.tasks忽略错误,强制返回成功

(1)Play的主体部分是task列表,task列表中的各任务按次序逐个在hosts中指定的主机上执行,即在所有主机上完成第一个任务后再开始。在运行playbook时 (从上到下执行),如果一个host执行task失败, 整个tasks都会停止。
(2)每一个task必须有一个名称 name,这样在运行playbook时,从其输出的任务执行信息中可以很好的辨别出是属于哪一个task的。

错误示例:遇到错误task自动停止,apache服务不会继续安装

vim 3.yaml- hosts: webserverremote_user: roottasks:- name: stop selinuxcommand: '/usr/sbin/setenforc 0'- name: install httpdyum: name=httpd- name: start httpdservice: name=httpd state=startedansible-playbook 3.yaml

加入ignore_errors: True 忽略错误,报错后继续执行

vim 3.yaml- hosts: webserverremote_user: roottasks:- name: stop selinuxcommand: '/usr/sbin/setenforc 0'ignore_errors: True- name: install httpdyum: name=httpd- name: start httpdservice: name=httpd state=startedansible-playbook 3.yaml                       

4.针对多个主机节点执行剧本

vim 4.yaml- hosts: webserverremote_user: roottasks:- name: remove httpdyum: name=httpd state=absent- hosts: mysqlremote_user: roottasks:- name: copy filecopy: src=/etc/fstab dest=/opt/haha.txt

5.Handlers概述 

Handlers也是一些task的列表, 和一般的task并没有什么区别。
是由通知者进行的notify,如果没有被notify,则Handlers不会执行,假如被notify了 ,则Handlers被执行不管有多少个通知者进行了notify,等到play中的所有task执行完成之后,handlers也只会被执行一次

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

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

相关文章

使用sqlmodel实现唯一性校验

代码: from sqlmodel import Field, Session, SQLModel, create_engine# 声明模型 class User(SQLModel, tableTrue):id: int | None Field(defaultNone, primary_keyTrue)# 不能为空,必须唯一name: str Field(nullableFalse, uniqueTrue)age: int | …

Flutter弹窗链-顺序弹出对话框

效果 前言 弹窗的顺序执行在App中是一个比较常见的应用场景。比如进入App首页,一系列的弹窗就会弹出。如果不做处理就会导致弹窗堆积的全部弹出,严重影响用户体验。 如果多个弹窗中又有判断逻辑,根据点击后需要弹出另一个弹窗,这…

大数据Scala教程从入门到精通第五篇:Scala环境搭建

一:安装步骤 1:scala安装 1:首先确保 JDK1.8 安装成功: 2:下载对应的 Scala 安装文件 scala-2.12.11.zip 3:解压 scala-2.12.11.zip 4:配置 Scala 的环境变量 在Windows上安装Scala_windows安装scala…

docker搭建代码审计平台sonarqube

docker搭建代码审计平台sonarqube 一、代码审计关注的质量指标二、静态分析技术分类三、sonarqube流程四、快速搭建sonarqube五、sonarqube scanner的安装和使用 一、代码审计关注的质量指标 代码坏味道 代码规范技术债评估 bug和漏洞代码重复度单测与集成 测试用例数量覆盖率…

node报错——解决Error: error:0308010C:digital envelope routines::unsupported——亲测可用

今天在打包vue2项目时,遇到一个报错: 最关键的代码如下: Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:80:19)百度后发现是node版本的问题。 在昨天我确实操作了一下node&…

Ansible——Playbook剧本

目录 一、Playbook概述 1.Playbook定义 2.Playbook组成 3.Playbook配置文件详解 4.运行Playbook 4.1Ansible-Playbook相关命令 4.2运行Playbook启动httpd服务 4.3变量的定义和引用 4.4指定远程主机sudo切换用户 4.5When——条件判断 4.6迭代 4.6.1创建文件夹 4.6.2…

[Linux][网络][TCP][四][流量控制][拥塞控制]详细讲解

目录 1.流量控制2.拥塞控制0.为什么要有拥塞控制,不是有流量控制么?1.什么是拥塞窗口?和发送窗口有什么关系呢?2.怎么知道当前网络是否出现了拥塞呢?3.拥塞控制有哪些算法?4.慢启动5.拥塞避免6.拥塞发生7.快…

劝退计算机?CS再过几年会没落!?

事实上,未来计算机不仅不会没落,国家还会大力发展 只不过大家认为的计算机就是什么Java web,真正的计算机行业是老美那样的,涉及到方方面面,比如: web,图形学,Linux系统开发&#…

2024DCIC海上风电出力预测Top方案 + 光伏发电出力高分方案学习记录

海上风电出力预测 赛题数据 海上风电出力预测的用电数据分为训练组和测试组两大类,主要包括风电场基本信息、气象变量数据和实际功率数据三个部分。风电场基本信息主要是各风电场的装机容量等信息;气象变量数据是从2022年1月到2024年1月份,…

Skywalking数据持久化与自定义链路追踪

学习本篇文章之前首先要了解一下Sky walking的基础知识 分布式链路追踪工具Skywalking详解 一,Sky walking数据持久化 Sky walking提供了es,MySQL等数据持久化方案,默认使用h2基于内存的数据库,重启之后数据即会丢失。 在实际工…

【Git】Git学习-16:git merge,且解决合并冲突

学习视频链接: 【GeekHour】一小时Git教程_哔哩哔哩_bilibili​编辑https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780 1 创建分支dev,并用merge合并master分支,使dev分支合并上master分支中内容为…

【学习笔记】HarmonyOS 4.0 鸿蒙Next 应用开发--安装开发环境

开发前的准备 首先先到官网去下载Devco Studio 这个开发工具,https://developer.harmonyos.com/cn/develop/deveco-studio/#download 提供了WIndows和Mac的开发环境,我自己是Windows的开发环境。 所以下载之后直接点击exe进行安装即可。 如果之前安装过…

Eplan带你做项目——如何实现项目的交付

前言 Eplan作为一款专业的电气工程设计软件,不仅在设计阶段为电气工程师提供了强大的绘图、计算、仿真等功能,还具备丰富的数据管理与交换能力,能够便捷、准确地导出软件设计、生产制造所需的数据,实现电气设计与软件设计、生产制…

反汇编一个ARM64的机器码

文章目录 使用objdump直接阅读ARM64手册使用反汇编网站 有下面一个机器码:0x929ffee9,如何翻译成汇编呢? 下面介绍几种做法: 使用objdump 将这个机器码写到文件中,然后使用objdump去反汇编 创建一个二进制文件 dd…

Golang | Leetcode Golang题解之第67题二进制求和

题目&#xff1a; 题解&#xff1a; func addBinary(a string, b string) string {ans : ""carry : 0lenA, lenB : len(a), len(b)n : max(lenA, lenB)for i : 0; i < n; i {if i < lenA {carry int(a[lenA-i-1] - 0)}if i < lenB {carry int(b[lenB-i-1…

燃料电池发电系统详解

目录 前言 组成结构 系统参数 常见问题 参考资料 前言 见《氢燃料电池技术综述》 见《燃料电池工作原理详解》 组成结构 燃料电池发电系统&#xff0c;由多个子系统和子模块组成&#xff0c;示例如下&#xff1a; 燃料处理系统&#xff08;fuel processing system&#xf…

IOS离线打包uniapp的信息时报错如下的解决方法

IOS离线打包uniapp的信息时报错如下的解决方法 问题描述&#xff1a; Extract app intents metadata 0.1 seconds XExtractAppIntentsMetadata(in target HBuilder from project HBuilder-Hello)cd /Users/whb/space/vpt/vptios/HBuilder-Hello/Applications/Xcode.app/Conte…

什么是电脑监控软件?哪些监控软件好用?

电脑监控软件是一种用于监控和管理计算机系统和数据的工具。它可以对计算机的使用情况进行实时监控&#xff0c;记录用户的操作行为&#xff0c;并及时发出警报&#xff0c;以防止数据泄露、违规操作和其他安全问题的发生。在当今信息时代&#xff0c;保护企业和个人信息安全变…

OpenNJet 应用引擎:在 NGINX 基础上的云原生增强

目录 一、初识OpenNJet二、系统架构三、动手实践1.CentOS 编译环境配置1.1配置yum源&#xff1a;1.2.yum安装软件包1.3.创建符号连接 2.编译代码编译 OpenNJet执行 make 四、基本使用说明1.目录结构概述:2.常用命令: 五、部署 Web 应用程序配置文件修改启动 NJet 六、总结 一、…

【Unity】使用Resources.LoadAll读取文件的顺序问题

最近在做客户的一个项目&#xff0c;其中的一个模块使用到了照片&#xff0c;但是发现了一个很严重的问题。当你在使用Unity的时候&#xff0c;它竟然不按照顺序读取&#xff1f;这个机器人是不是逻辑有问题&#xff1f;如下图&#xff1a; 名字脱敏了哈。。。 照片比较多&…