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------------------------执行剧本文件

总结

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

相关推荐
A小辣椒2 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao3 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334663 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush44 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5204 天前
Linux 11 动态监控指令top
linux
网络研究院4 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展