ansible——playbook

一、playbook定义

  Ansible Playbook是设定自动化任务的一种蓝图,可在无需人工干预或有限干预的前提下执行复杂的IT操作。Ansible Playbook对一组或一类共同构成 Ansible 清单的主机执行。

  Ansible Playbook本质上是一些框架,是一些预先编写的代码,开发人员可以用作临时模板或起始模板。Ansible Playbook常被用于自动化IT基础架构(例如,操作系统和Kubernetes平台)、网络、安全系统,以及开发人员角色(例如:Git)。

  Ansible Playbook可以帮助IT人员进行应用、服务、服务器节点或其他设备的编程,无需花费人力去从头创建所有事物。Ansible Playbook及其中的条件、变量和任务,都可以无限期保存、分享或重复使用。

  ansible-playbook一种定义的任务方式,在编写playbook时可以使用变量来传数据

二、playbook核心组件

  • ansible(主体):ansible的核心程序,提供一个命令接口给用户对ansible进行管理操作

  • host inventory(主机清单):为ansible定义管理主机的策略

  • core modules(核心模块):ansible执行命令的功能模块,多数为内置的核心模块

  • custom modules(扩展模块):如果ansible本身的要求无法满足需求,用户可以选择自定义模块

  • playbook(剧本):编排定义ansible任务集的配置文件,由ansible顺序依次执行,通常是JSON格式YML文件

  • api:供第三方程序的应用程序编程接口

三、实战实例

  3.1 前期准备

IP地址
管控端192.168.10.7
被管控端1192.168.10.8
被管控端2192.168.10.10

 

  3.2 基础实例

  3.2.1 编写YAML文件

  3.2.2 运行playbook

  3.2.2.1 检查yaml文件的语法是否正确

  3.2.2.2 检查tasks任务

  3.2.2.3 检查生效的主机

  3.2.2.4 运行playbook

  3.2.2.4.1 报错解决

  3.2.2.4.2 删除yum进程号

  3.2.2.5 网页测试

  3.2.2.6 被监控端查看信息

  3.3  定义、引用变量

  3.3.1 编辑YAML文件

  3.3.2 命令行里定义变量运行playbook

  3.3.3 被监控端查看

  3.4 指定远程主机sudo切换用户

  3.4.1 编译yml文件

  3.4.2 在/etc/ansible/hosts文件修改内容

  3.4.3 运行playbook

  3.4.4 被监控端查看

  3.5 when条件判断

    在Ansible中,提供的唯一一个通用的条件判断是when指令,当when指令的值为true时,则该任务执行,否则不执行该任务

    when一个比较常见的应用场景是实现跳过某个主机不执行任务或者只有满足条件的主机执行任务

  3.5.1 编辑yaml文件

  3.5.2 运行yaml文件

  3.5.2.1 修改报错

    修改被监控端的端口号

  3.6 迭代

    Ansible提供了很多种循环结构,一般都命名为with_items,作用等同于loop循环。通常指持续地对ansible playbook进行修改(更改)和改进的过程

  3.6.1 编辑YAML文件

  3.6.2 运行playbook

  3.6.3 被监控端查看

  3.7 迭代(二)

  3.7.1 运行yaml文件

  3.7.2 被监控端查看

  3.8 迭代(三)

  3.8.1 编辑YAML

  3.8.2 运行playbook

  3.9 Templates模块

    template是一种创建配置文件的工具。在配置文件中,会有一些数据动态地改变,如:IP地址、主机名、端口、用户、页面路径

    template模块就是将变量和动态文件结合起来最终生成一个配置文件(你需要动态改变)

    文件配置使用jinjia2模版语言去编写结尾后缀一定是j2(xxx.j2)

  3.9.1 复制http配置文件

  3.9.2 编辑刚刚复制的配置文件

  3.9.3 编辑hosts配置文件 

  3.9.4 编辑YAML文件

  3.9.5 运行playbook

  3.9.6 在被监控端查看端口是否有

  3.10 tags

    tags是一种标记任务或者一系列的任务功能,通过任务1或者一个命名的任务列表上定义标记,可以在运行playbook时去选择你需要执行的任务.

    tags可以在一个playbook中为某个或某些任务定义“标签”,在执行此playbook时通过ansible-playbook命令使用--tags选项能实现仅运行指定的tasks。
    playbook还提供了一个特殊的tags为always。作用就是当使用always当tags的task时,无论执行哪一个tags时,定义有always的tags都会执行。

  3.10.1 编辑YAML文件

  3.10.2 运行playbook

  3.10.3 被监控端查看

  3.11 Roles

    Ansible为了层次化、结构化地组织Playbook,使用了角色(roles),roles可以根据层次型结构自动装载变量文件、task以及handlers等。简单来讲,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们。roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。

    roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们。

  3.11.1 创建三个全局目录

  3.11.2 创建三个局部目录

  3.11.3 创建main.yml文件

  3.11.4 查看结构

  3.11.5 编辑hosts配置文件

  3.11.6 实现远程面密登陆

  3.11.7 编辑LNMP文件

  3.11.8 运行playbook

  3.11.9 编辑mysql

  3.11.11 编辑httpd

  3.11.12 编辑PHP

  3.11.13 再次运行LNMP

  3.11.14 在三台机器上查看是否安装

四、roles编写lnmp分布式剧本

  4.1 编辑tasks/main.yml

  4.2 编辑tasks/init.yml

  4.3 编辑vars/main.yml

  4.4 编辑role_lnmp.yml

  4.5 安装maridb

  4.6 运行role_lnmp

    注意:在后面加上-C 

  4.7 编写nginx

  4.7.1 复制httpd并改名

  4.7.2 编写default配置文件

  4.7.3 编辑files/nginx.repo

  4.7.4 编辑handlers/main.yml

  4.7.5 编辑tasks/main.yml

  4.7.6 编辑vars/main.yml

  4.7.7 编辑role_lnmp.yml

  4.7.8 运行playbook

  4.8 编写php

  4.8.1 编辑files/index.php

  4.8.2 编辑files/www.conf

  4.8.3 编辑handlers/main.yml

  4.8.4 编辑tasks/main.yml

  4.8.5 编辑main.yml

  4.8.6 编辑role_lnmp.yml文件

  4.8.7 运行role_lnmp.yml

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

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

相关文章

OrangePi Zero2 全志H616开发学习文档、基础IO蜂鸣器、超声波测距、舵机PWM基础开发

一.平台介绍 OrangePi开发板不仅仅是一款消费品,同时也是给任何想用技术来进行创作创新的人设计的。它是一款简单、有趣、实用的工具,你可以用它去打造你身边的世界。 特性 CPU 全志H616四核64位1.5GHz高性能Cortex-A53处理器GPU MaliG31MP2 Supports…

【树】简要理解树的概念

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 目录 1、树的概念2、树的相关概念3、结语 1、树的概念 树是一种非线性的数据结构,它…

[FSCTF 2023]ez_php1

一共有三小关 第一关&#xff1a;md5加密 第二关&#xff1a;反序列化 重点 单个字符串序列化 unserialize($str) "$KEY" <?php $KEY"YES I love";echo serialize($KEY); s:10:"YES I love"; 第三关&#xff1a; 反序列化 把a的地址赋给…

【SpringBoot】 什么是springboot(二)?springboot操作mybatisPlus、swagger、thymeleaf模板

文章目录 SpringBoot第三章1、整合mybatsPlus1-234-67-10问题 2、整合pageHelper分页3、MP代码生成器1、编写yml文件2、导入依赖3、创建mp代码生成器4、生成代码5、编写配置类扫描mapper类6、编写控制器类 4、swagger1、什么是swagger2、作用3、发展历程4、一个简单的swagger项…

Hexo博客重新部署与Git配置

由于电脑重装了一次&#xff0c;发现之前Hexo与NexT主题版本过于落后&#xff0c;重新部署了下。 1 Node.js与git安装 这一块安装就不赘述了。去两个官网找安装文件安装即可。 node.js git 打开git以后配置的几个关键命令行。 git config --global user.name "你的gi…

ArcGIS水文水环境数据编辑、管理、处理与分析;ArcGIS水文分析及流域特征提取;湖泊水库水环境监测及评价;河道水污染预测与水环境容量计算等案例实践

目录 专题一 ArcGIS&#xff1a;数据管理 专题二 ArcGIS&#xff1a;数据转换 专题三 ArcGIS&#xff1a;地图制作 专题四 水文水环境数据编辑与管理 专题五 水文水环境数据处理与分析 专题六 ArcGIS水文分析及流域特征提取 专题七 湖泊水库水环境监测及评价 专题八 河…

java学习之zip炸弹攻击

一、概述 Zip炸弹是一种特殊类型的Zip文件&#xff0c;它包含了大量的无用数据。Zip文件格式允许使用压缩算法来减小文件的大小&#xff0c;但是如果Zip文件中的某些内容被重复压缩&#xff0c;就会导致文件大小急剧增加。Zip炸弹利用这个特性&#xff0c;将一些无用的数据多次…

配置接口的主从IP地址

组网需求 如图1所示&#xff0c;Router上只有一个空闲接口GE1/0/0&#xff0c;但该局域网中的计算机分别属于2个不同的网段10.16.1.0/24和10.16.2.0/24&#xff0c;要求通过Router可以实现一个接口接入两个不同的网段。 图1 配置IP地址示例 配置思路 配置主从IP地址的思路…

【C++】STL-list的使用

目录 1、list的使用 1.1 list的构造 1.2 list的遍历 1.3 list capacity 1.4 list element access 1.5 容量相关 list是一个带头双向循环链表 1、list的使用 1.1 list的构造 1.2 list的遍历 list只有两种遍历方式&#xff0c;因为没有operator[] 因为list的双向链表&am…

Docker复习

文章目录 基础Docker基础命令镜像操作命令容器操作命令 案例:安装MySql案例:查看DockerHub&#xff0c;拉取Nginx镜像&#xff0c;并运行容器 基础 Docker基础命令 启动Docker systemctl start docker镜像操作命令 从远程仓具下载镜像到本地 docker pull 镜像名称 无版本号…

高并发系统设计-系统的“三高“目标

目录 一、高并发 1.高并发相关指标 2.如何提高并发能力 二、高并发的目标 1.高性能 2.高可用 3.高扩展 一、高并发 高并发&#xff08;High Concurrency&#xff09;是互联网分布式系统架构设计中必须考虑的因素之一&#xff0c;它通常是指&#xff0c;通过设计保证系统能…

parallelsdesktop19密钥激活 PD19虚拟机完整图文安装教程

Parallels Desktop 19 &#xff08;简称 PD 19)是最新发布的 macOS 平台的 windows 虚拟机&#xff0c;本文是使用 Parallels Desktop 19 虚拟机安装 Windows 的详细图文破解安装教程。 一下载安装 Parallels Desktop 软件下载完成后打开&#xff0c;双击打开 安装.dmg Para…

1070: 邻接矩阵存储简单路径

解法&#xff1a; #include<iostream> #include<vector> using namespace std; int arr[100][100]; int n; int sta, des; vector<int> path; vector<vector<int>> res; void dfs(vector<int> &a,int i) {a[i] 1;path.push_back(i);…

【漏洞复现】osCommerce install.php存在远程代码执行漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

第5章 处理GET请求参数

1 什么是GET请求参数 表单GET请求参数是指在HTML表单中通过GET方法提交表单数据时所附带的参数信息。在HTML表单中&#xff0c;可以通过表单元素的name属性来指定表单字段的名称&#xff0c;通过表单元素的value属性来指定表单字段的值。当用户提交表单时&#xff0c;浏览器会将…

C# WinForm —— 16 MonthCalendar 介绍

1. 简介 可以选择单个日期&#xff0c;也可以选择一段日期&#xff0c;在选择时间范围上 比较适用&#xff0c;但不能跨月份选择日期范围 在直观上&#xff0c;可以快速查看、选择日期/日期范围 2. 常用属性 属性解释(Name)控件ID&#xff0c;在代码里引用的时候会用到,一般…

邮箱API发送邮件调试的方法?有哪些限制?

邮箱API发送邮件调试的好处&#xff1f;如何正确调试邮箱API&#xff1f; 使用邮箱API发送邮件是一个常见的需求。然而&#xff0c;当遇到发送失败、内容错误或格式问题时&#xff0c;如何进行有效的调试就显得尤为重要。本文将为您介绍一些邮箱API发送邮件调试的方法&#xf…

Leetcode-有效的括号

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/valid-parentheses/ 题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&…

MySql软件安装

1.打开mysql官网网址 MySQL :: Download MySQL Community Server 2.本次针对版本8的图形化界面安装&#xff0c;下载成功后接下来对MySQL进行安装 3.图形化下载后有一个MSI文件 4.我们安装典型即可&#xff0c;选择第一个 5.选择数据库信息存放的路径&#xff0c;我默认放在C盘…

Redis继续(黑马)

Redis持久化 RDB与AOF RDB记录是二进制数据&#xff0c;Redis停机时会触发保存&#xff0c;名称&#xff1a; dump.rdb 缺点&#xff1a;间歇式复制可能存在宕机数据更新丢失 AOF 记录的写操作命令&#xff0c;每秒记录一下&#xff0c;也存在数据更新丢失的可能&#xff0c;相…