从小白到大神之路之学习运维第62天--------Ansible自动化运维工具(playbook配置深入了解2.0)

第三阶段基础

时  间:2023年7月17日

参加人:全班人员

内  容:

playbook配置深入了解2.0

目录

一、角色

实验案例:(安装Mariadb)

二、变量

(一)在playbook中使用自定义变量:

(二)查看内置变量

三、Template模板

四、基于Playbook部署Nginx综合案例


一、角色

    将多种不同的tasks的文件集中存储在某个目录下,则该目录就是角色。

    角色一般存放在/etc/ansible/roles/目录中,可通过ansible的配置文件来调整默认的角色目录。

/etc/ansible/roles目录下有很多的子目录,其中每一个子目录对应一个角色。每个角色也有自己的目录结构。

/etc/ansible/roles/为角色集合,该目录下有自定义的各个子目录:

mariadb:mysql角色

apache:httpd角色

nginx:nginx角色

每个角色的定义,以特定的层级目录结构进行组织。

以Mariadb(mysql角色)为例

file:存放copy或script等模块调用的文件;

templates:存放template模块查找所需要的模板文件的目录,如mysql配置文件等模板;

tasks:任务存放目录;

handlers:存放相关触发执行器的目录;

vars:变量存放的目录;

meta:用于存放此角色元数据;

default:默认变量存放目录,文件中定义了此角色使用的默认变量。

    上述目录中tasks,handlers,vars,meta,default至少应该包含一个main.yml,该目录下也可以有其他的yml文件,但是需要在main.yml文件中用include指定将其他.yml文件包含进来。

有了角色之后,可以直接在yaml文件中(playbook配置文件)中调用角色示例如下:

- hosts: test01

  remote_user: root

  roles:

    - mysql #调用角色名

    - httpd #调用角色名

     可以只调用一个角色,也可以调用多个角色,当定义了角色后,用ansible-playbook PLAYBOOK文件执行即可,此时ansible会到角色集合的目录(/etc/ansible/roles)去找mysql和httpd目录,然后依次运行mysql目录和httpd目录下的所有代码。

实验案例:(安装Mariadb)

 下面通过一个实例配置数据库角色,要求被管理主机自动安装Mariadb,安装完成后上传提前准备好的配置文件到远端主机。重启服务,然后新建testdb数据库,并允许test用户对其拥有所有权限。

服务器配置:

IP地址

角色

主机名

192.168.59.137

Ansible

huyang1

192.168.59.138

Client

huyang2

192.168.59.140

Client

huyang3

环境配置:(关闭防火墙、配置免密登录)

1. 被管理端配置yum源

【huyang2/3】cd /etc/yum.repos.d/

backup  CentOS-Media.repo

yum clean all

2. 配置数据库角色

mkdir -p

/etc/ansible/roles/mariadb/{files,tasks,handlers}

创建需要的文件路径 注意不要写错

3、配置主引导文件

cd /etc/ansible/

vim /etc/ansible/mariadb.yml

配置如下:

4、修改任务配置文件

cd /etc/ansible/roles/mariadb/

vim tasks/main.yml

配置如下:

  

--- #固定开头格式

- name: install mariadb #指定任务名称安装mariadb数据库

  yum: name=mariadb-server state=present #执行yum模块安装mariadb

- name: move config file #指定任务名称移除原有配置文件

  shell: "[ -e /etc/my.cnf ] && mv /etc/my.cnf /etc/my.cnf.bak" #判断有就移除

- name: provide a new config file #创建一个新的配置文件

  copy: src=my.cnf dest=/etc/my.cnf #src源会自动到files文件去找my.cnf文件

- name: reload mariadb #指定任务名称为重启mariadb

  shell: systemctl restart mariadb #shell模块重启

- name: create database testdb #按要求添加执行如下sql语句

  shell: mysql -u root -e "create database testdb;grant all privileges on testdb.* to 'test'@'192.168.200.%' identified by 'test123';flush privileges;"

  notify: #配置触发器

  - restart mariadb #为重启mariadb

...

5、修改触发器配置文件

vim handlers/main.yml

配置如下:

  

---

- name: restart mariadb #引用上面配置的触发器

  service: name=mariadb state=restarted #触发后重启mariadb

...

6、修改存放模块调用文件

cd files/

cp /etc/my.cnf ./

ls

my.cnf

保持不变,使用默认配置不进行修改

7、达到的目标

8、预执行

ansible-playbook -C /etc/ansible/mariadb.yml

9、测试:

ansible-playbook /etc/ansible/mariadb.yml

验 证:

【huyang1】

ansible hu -m shell -a 'mysql -u root -e "show databases;"'

【huyang2】

【huyang3】

二、变量

(一)在playbook中使用自定义变量

vim /etc/ansible/test_vars.yml

配置如下:

预测试:

#这里提示,name是一个保留的内置变量,我们在自定义时不能用

修改name内置变量

vim /etc/ansible/test_vars.yml

配置如下:

预测试:

   当设置的不是内置变量时,则不会出现警告

测 试:

获得如下的信息

(二)查看内置变量

使用ansible all -m setup | more查看ansible内置变量

例:vim /etc/ansible/test_setupvars.yml

配置如下:

预测试:

测试:

三、Template模板

配置文件如果使用copy模块去下发的话,那么所有主机的配置都是一样的; 如果下发的配置文件里有可变的配置,需要用到template模块。

利用template模块下发可变的配置文件

例:配置模版

配置模板文件

预测试:

测试:

验证:

【huyang2】

【huyang3】

    可以发现,虽然定义了同样的信息,但是呈现出的是不一样的结果。

四、基于Playbook部署Nginx综合案例

【huyang1】

1、创建目录结构

mkdir -pv   /etc/ansible/roles/nginx/{files,handlers,tasks,templates,vars}

2、定义一个主调用文件

vim /etc/ansible/nginx.yaml

配置如下:

达到的要求:

3、files:存储由copy或script等模块调用的文件

4、配置触发器handlers下main.yaml文件

配置如下:

5、配置tasks下main.yaml文件

6、配置templates下main.yaml文件

7、配置vars下main.yaml文件

8、预测试:

9、测试

验证:(验证成功)

【huyang1】

【huyang2】

【huyang3】

网页访问:

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32芯片型号命名规则

意法半导体STM32和STM8系列的芯片可以通过下面一张图来确定芯片的各项参数,帮助选型。 STM32型号的说明:以STM32F103RBT6这个型号的芯片为例,该型号的组成为7个部分,其命名规则如下: ![在这里插入图片描述](https:…

文心一言 VS 讯飞星火 VS chatgpt (61)-- 算法导论6.4 5题

文心一言 VS 讯飞星火 VS chatgpt (61)-- 算法导论6.4 5题 五、证明:在所有元素都不同的情况下,HEAPSORT 的时间复杂度是 Ω (nlgn)。 文心一言: 要证明在所有元素都不同的情况下,HEAPSORT 的时间复杂度是 Ω(n log…

青岛大学_王卓老师【数据结构与算法】Week05_14_队列的顺序表示和实现2_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享, 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础…

科研创新服务平台性能分析案例

前言 信息中心老师反应,用户反馈科研创新服务器平台有访问慢的情况,需要通过流量分析系统来了解系统的运行情况,此报告专门针对系统的性能数据做了分析。 信息中心已部署NetInside流量分析系统,使用流量分析系统提供实时和历史原…

走进人工智能|机器人技术 人机协作新纪元

前言: 机器人技术为人类提供协助、增强生产力,改善生活质量,并推动科技进步和社会发展。 文章目录 序言背景核心技术支持人机协作新纪元目前形式领跑人困难和挑战 总结 机器人技术作为现代科技领域的重要研究方向,已经在各个领域展…

TCP/IP网络编程 第十五章:套接字和标准I/O

标准I/O函数的优点 标准I/O函数的两个优点 将标准I/O函数用于数据通信并非难事。但仅掌握函数使用方法并没有太大意义,至少应该 了解这些函数具有的优点。下面列出的是标准I/O函数的两大优点: □标准I/O函数具有良好的移植性(Portability) □标准I/O函数可以利用缓…

LabVIEW将彩色图像转换到灰度图像

LabVIEW将彩色图像转换到灰度图像 在LabVIEW中使用许多图像处理工具的必要步骤之一是将其从彩色转换为单色。介绍一个开发的应用程序,用于基于LabVIEW软件环境,在所有支持的色彩空间(RGB、HSI、HSV和HSL)中自动将彩色图像转换为灰…

Python爬虫学习笔记(五)————JsonPath解析

目录 1.JSONPath —— xpath在json的应用 2.JSONPath 表达式 3.jsonpath的安装及使用方式 4.jsonpath的使用 5.JSONPath语法元素和对应XPath元素的对比 6.实例 (1)商店案例 (2) 解析淘票票的“城市选择”数据 1.JSONPath…

LCD-液晶显示中英文-9.液晶显示变量程序(整数_浮点数_居中显示等)

目录 液晶显示变量程序(整数_浮点数_居中显示等) 前言 程序 bsp_ili9341_lcd.h bsp_ili9341_lcd.c fonts.h fonts.c main.c 实验现象 液晶显示变量程序(整数_浮点数_居中显示等) 前言 C语言输出printf里面%*d是什么意思&…

list最常用的遍历五种方式以及使用场景

目录 遍历方式的适用场景对比 迭代器遍历 列表迭代器 增强for遍历 Lambda表达式 lambda表达式简介 普通for遍历 集合中通用的并且常用的六种方法 遍历方式的适用场景对比 迭代器遍历 :在遍历过程中需要删除元素,请使用迭代器 列表迭代器&#xff1…

ADB初识

ADB是Android Debug Bridge,是一个命令行程序。abd可以从计算机上通过USB控制Android手机设备。可以使用ADB复制文件、安装和卸载应用程序,运行shell命令等。 ADB的下载配置 Windows版本:https://dl.google.com/android/repository/platform…

EMC学习笔记(十六)射频PCB的EMC设计(三)

射频PCB的EMC设计(三) 1.布线1.1 阻抗控制2.2 转角1.3 微带线布线1.4 微带线耦合器1.5 微带线功分器1.6 微带线基本元件1.7 带状线布线1.8 射频信号走线两边包地铜皮 2.其他设计考虑 1.布线 1.1 阻抗控制 PCB信号走线的阻抗与板材的介电常数、PCB结构、…