一、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