ansible剧本编写(三)

文章目录

  • 前言
  • [一、迭代:使用 with_items 或 loop](#一、迭代:使用 with_items 或 loop)
    • [1.1 为什么要使用迭代](#1.1 为什么要使用迭代)
    • [1.2 迭代操作实例](#1.2 迭代操作实例)
  • [二、Templates 模块](#二、Templates 模块)
    • [2.1 templates模块作用](#2.1 templates模块作用)
    • [2.2 templates模块实操](#2.2 templates模块实操)
      • [2.2.1 环境配置](#2.2.1 环境配置)
      • [2.2.2 编辑ansible映射](#2.2.2 编辑ansible映射)
      • [2.2.3 编辑ansible.j2文件](#2.2.3 编辑ansible.j2文件)
      • [2.2.3 编写并执行剧本](#2.2.3 编写并执行剧本)
  • [三、Tags 模块](#三、Tags 模块)
    • [3.1 Tags 模块定义](#3.1 Tags 模块定义)
    • [3.2 tags实操](#3.2 tags实操)
  • [四、 Roles 模块](#四、 Roles 模块)
    • [4.1 Roles 模块概念](#4.1 Roles 模块概念)
    • [4.2 roles板块介绍](#4.2 roles板块介绍)
    • [4.3 roles实战操作](#4.3 roles实战操作)
      • [4.3.1 配置环境](#4.3.1 配置环境)
      • [4.3.2 创建七大板块目录和文件](#4.3.2 创建七大板块目录和文件)
      • [4.3.3 编写mysql文件](#4.3.3 编写mysql文件)
      • [4.3.4 编写php的安装与开启以及组和用户的创建](#4.3.4 编写php的安装与开启以及组和用户的创建)
      • [4.3.5 编写剧本与执行剧本](#4.3.5 编写剧本与执行剧本)
  • 总结

前言

本文接着上篇博客来写,本文详细补充了上篇博客没有介绍完的内容。

一、迭代:使用 with_items 或 loop

1.1 为什么要使用迭代

在现实环境中,就按目前所学知识来说,我们操作的命令都只能单个单个的进行,不能实现大批量的命令操作,而迭代可以实现大批量的操作,比如:批量创建目录或文件。一般便利的方式是loop或item。

1.2 迭代操作实例

第一步 编写剧本

第二步 执行剧本文件

ansible-playbook 5.yaml ------------------------------执行5.yaml剧本文件

二、Templates 模块

2.1 templates模块作用

Jinja是基于Python的模板引擎。Template类是Jinja的一个重要组件,可以看作是一个编译过的模板文件,用来产生目标文本,传递Python的变量给模板去替换模板中的标记。

简单来说,它可以将ansible映射文件与剧本文件中的值输入到目标文件,通过远程操作的方式编辑目标文件。

2.2 templates模块实操

2.2.1 环境配置

10.0.0.2 ------------------------ansible操控主机

10.0.0.5 ------------------------被操控主机(组名xjy)

httpd.conf ------------------------要编辑的文件

2.2.2 编辑ansible映射

vim /etc/ansible/hosts ------------------------------------编辑ansible映射

端口号变量值为:http_server

域名变量值为:www.xjy123.com

2.2.3 编辑ansible.j2文件

第一步 在ansible主机上准备一个httpd.conf文件

第二步 备份一个httpd.conf.j2文件,之后要在该文件上进行编辑

cp /opt/httpd.conf /opt/httpd.conf.j2 ------------------------备份一个j2文件

第三步 对j2文件进行编辑,将要修改的地方改为对应变量名

vim /opt/httld.conf.j2 ------------------------------编辑要编辑的j2文件

2.2.3 编写并执行剧本

vim /opt/playbook/6.yaml ------------------------------编辑剧本脚本

需要注意:这里做了一个自动执行的重启任务,因为服务配置文件在修改之后要重启。

ansible-playbook 6.yaml ------------------------------执行剧本

三、Tags 模块

3.1 Tags 模块定义

概念:tags就相当于一个任务标签,有的时候,我们只想执行某个剧本中的一个或多个任务,但又不想全部都执行,根据之前的知识内容,我们知到的方法就是注释掉不想要用的任务,或者重新再写一个剧本,tags就可以直接定义要执行的任务,对想执行的任务直接进行选择就可以。

特殊tags:

always ------------------------------------------不管有没有选择该标签都会这些该标签

3.2 tags实操

第一步 编写剧本

第二步 执行剧本

四、 Roles 模块

4.1 Roles 模块概念

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

简单来说:roles是用来将一个复杂的剧本简化为多个简单的剧本文件,将 Playbook 组织成模块化的结构,使其易于管理和重用。并且roles含有多个板块,每个板块都有不同的作用。

4.2 roles板块介绍

files: 用来存放由 copy 模块或 script 模块调用的文件。

templates: 用来存放 jinjia2 模板,template 模块会自动在此目录中寻找 jinjia2 模板文件。

tasks: 此目录应当包含一个 main.yml 文件,用于定义此角色的任务列表,此文件可以使用

include 包含其它的位于此目录的 task 文件。

handlers: 此目录应当包含一个 main.yml 文件,用于定义此角色中触发条件时执行的动作。

vars: 此目录应当包含一个 main.yml 文件,用于定义此角色用到的变量。

defaults: 此目录应当包含一个 main.yml 文件,用于为当前角色设定默认变量。

meta: 此目录应当包含一个 main.yml 文件,用于定义此角色的特殊设定及其依赖关系。

4.3 roles实战操作

4.3.1 配置环境

10.0.0.2:ansible操作机

10.0.0.5:被控制主机

10.0.0.9:被控制主机

关闭防火墙与网络增强服务

目标:在10.0.0.5主机中安装mysql并开启

在10.0.0.9主机中安装php并开启

在10.0.0.9主机中创建一个xxx用户和ttt组

4.3.2 创建七大板块目录和文件

mkdir -p /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} ------------------在mysql目录下创建七大板块目录

mkdir -p /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta}------------------在php目录下创建七大板块目录

touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml ------------------------在mysql目录下给每个板块创建一个配置文件

touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml

---------------------------在php目录下给每个板块创建一个配置文件

4.3.3 编写mysql文件

vim /etc/ansible/roles/mysql/tasks/mian.yaml ------------------------编写任务板块

(这里我们用来变量来表示服务名,因此变量板块也要进行编辑)

vim /etc/ansible/roles/mysql/vars/mian.yaml ------------------------编辑变量板块

4.3.4 编写php的安装与开启以及组和用户的创建

这里服务安装与开启的步骤大致相同,这里就不过多解释,直接上图吧。

到这里我们的目标完成了两个,还有一个是创建xxx用户与ttt组

目前为止三个任务已经写完,接下来就要分配每个任务的执行对象

4.3.5 编写剧本与执行剧本

touch /etc/ansible/剧本文件 ------------------------创建剧本文件(这里用xjy.yaml)

ansible-playbook xjy.yaml------------------------执行剧本文件

总结

本文接着上篇博客来写,本文详细补充了上篇博客没有介绍完的内容,希望本文内容对大家有所帮助,谢谢观看😜

相关推荐
ASS-ASH几秒前
快速处理虚拟机磁盘扩容问题
linux·数据库·vmware·虚拟机·磁盘扩容
AI_5678几秒前
零基础学Linux:21天从“命令小白”到独立部署服务器
linux·服务器·人工智能·github
乾元2 分钟前
如何把 CCIE / HCIE 的实验案例改造成 AI 驱动的工程项目——从“实验室能力”到“可交付系统”的完整迁移路径
大数据·运维·网络·人工智能·深度学习·安全·机器学习
不染尘.3 分钟前
Linux基本概述
linux·windows·centos·ssh
liulilittle6 分钟前
俄罗斯访问欧洲国际线路优化
开发语言·网络·信息与通信·ip·通信·俄罗斯·莫斯科
TTGGGFF7 分钟前
GLM-4V-9B 视觉多模态模型本地部署教程【保姆级教程】
linux·运维·服务器·图文对话
消失的旧时光-19439 分钟前
函数指针 + 结构体 = C 语言的“对象模型”?——从 C 到 C++ / Java 的本质统一
linux·c语言·开发语言·c++·c
郝学胜-神的一滴13 分钟前
Linux系统编程:深入理解读写锁的原理与应用
linux·服务器·开发语言·c++·程序人生
Larry_Yanan14 分钟前
Qt多进程(十一)Linux下socket通信
linux·开发语言·c++·qt
菜择贰22 分钟前
计算机网络课设
网络·计算机网络·智能路由器