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 |
| 被管控端1 | 192.168.10.8 |

被管控端2 192.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

相关推荐
辰海Coding7 小时前
MiniSpring框架学习笔记-解决循环依赖的简化IoC容器
笔记·学习
晓梦林7 小时前
cp520靶场学习笔记
android·笔记·学习
心中有国也有家8 小时前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
玄米乌龙茶1239 小时前
LLM成长笔记(三):API 开发基础
笔记
Upsy-Daisy9 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习
LuminousCPP10 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
一只机电自动化菜鸟11 小时前
一建机电备考笔记(40) 建筑机电施工—排水管道施工(含考频+题型)
经验分享·笔记·学习·职场和发展·课程设计
你干嘛?哎哟12 小时前
4月工作笔记
笔记
tom021812 小时前
软考中级《嵌入式系统设计师》全套备考资料(真题 + 教材 + 笔记)
笔记·嵌入式·软考·自学·电子技术·电子资料·变成
问心无愧051313 小时前
ctf show web入门156
笔记