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

news2024/10/7 16:15:42

第三阶段基础

时  间: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.coloradmin.cn/o/771237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Microsoft Outlook 共享收发邮件的权限给其他人

点击File 点击Account Settings→DelegateAccess 点击Add

数据可视化自助式分析工具:jvs-bi数据扩展及函数配置说明

jvs-bi数据拓展节点 数据拓展是数据可视化加工过程中的重要工具,它核心的作用是对原有数据表进行加工扩展,实现功能如下图所示 函数配置操作过程 操作说明 1、拖动数据拓展字段,并将字段拓展与之前的历史节点连接起来,点击数据拓…

访问Liunx文件系统

访问Liunx文件系统 识别文件系统和设备 存储管理概念 Linux服务器上文件按文件系统层次结构访问。该文件系统层次结构测试由系统可用的存储设备所提供的文件系统组装而来。每个文件系统都是一个已格式化的存储设备,可用于存储文件。 文件系统和挂载点 要让文件系…

springboot sentinel 整合 规则详情和代码实现-分布式/微服务流量控制

文章目录 sentinel控制台安装目标版本说明sentinel 规则整合验证pom.xml配置注解拦截资源控制规则---内存模式测试controller客户端接入控制台 测试sentinel控制台接口调用 下一篇:配置持久化策略规则外传 sentinel控制台安装 下载地址:https://github.…

SpringCloud学习路线(6)—— 远程调用HTTP客户端Feign

一、Feign替代RestTemplate RestTemplate示例 String url "http://userservice/user/" order.getUserId(); User user restTemplate.getForObject(url, User.class);RestTemplate的缺陷: 代码可读性差,编码体验不统一。参数复杂URL难以维…

(位运算)2023年7月19日学习笔记

位运算符的优先级(从高到低):~、&、^、|【其中~(取反)的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方向都是自左至右,且优先级低于关系运算符】 声明一下关系运…

乔云监控tf卡格式化后数据恢复方法

您有没有使用过乔云牌监控设备呢?它通常里面会放置一个TF卡以存储录像,而TF卡长期高温高速运行,容易产生碎片,因此很多商家会建议大家一个月进行一次格式化。但是格式化后您有没有后悔过呢?在这个篇文章中,…

rt-thread构建含c++源码的工程

RT-Thread Components > C/C and POSIX layerscons构建项目会出错: vim libraries/SConscript ,删除 pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp(切记不要注释,要删除) 再次scons构建项目&#…

C++基础算法高精度篇

📟作者主页:慢热的陕西人 🌴专栏链接:C算法 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 主要讲解了高精度算法的四种常用的计算 文章目录 Ⅲ. 高精度Ⅲ. Ⅰ . …

Spring6.0 源码部署

环境依赖 Git JDK17 Gradle(版本号需要和Spring源码中的版本一致) 源码下载 官网地址 源码配置修改 maven { url "https://maven.aliyun.com/repository/central" }gradle-wrapper.properties #distributionUrlhttps\://services.gradle…

allure环境搭建

allure环境搭建 在搭建之前你应该有python、pycharm allure介绍 官网:https://docs.qameta.io/allure/ 英文介绍 Allure Framework is a flexible lightweight multi-language test report tool that not only shows a very concise representation of what have…

【Envi风暴】Envi5.6安装图文教程(附Envi5.6完整版下载)

文章目录 一、ENVI5.6安装过程二、ENVI5.6下载地址一、ENVI5.6安装过程 从文末网盘下载完整的ENVI5.6安装包,如下所示:双击envi56-win.exe,开始安装。 点击Next。 点击Next。 点击Next。 等待安装。 点击Finish。

行业追踪,2023-07-19,磷化工这板块放量,但rps强度还未够,可以关注参与下

自动复盘 2023-07-19 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…

Microsoft Outlook如何建立联系人组 ?

New Items→More Items→Contact Group 选择Add Members→From Address Book

为什么弹性内容交付网络是决定网站性能的关键

如今的用户对于所访问网站都对网站有自己的标准,他们期望访问的网站性能良好,具有快速的页面加载时间和易于访问、新鲜且动态的内容,同时他们还希望享受无缝且安全的体验,无需停机或内容访问受到限制。比如微博等平台每次在网络热…

案例拆解:教育行业平均一场视频号活动裂变3095人!

我们分析了几何裂变平台上视频号裂变工具6月份的活动数据,发现教育行业用的最多的玩法是【预约直播企业微信裂变】。 平均一场活动裂变3095人,裂变率平均为327%,即1个老用户能带来3.27个新用户预约直播添加企业微信。 今天为大家拆解下教育…

工厂模式+策略模式

UML: class: public interface IDeliveryService {/*** 创建第三方出货单* param obj 入参*/Object createThirdOrder(Object obj); } Service RequiredArgsConstructor public class DeliveryServiceImpl implements IDeliveryService {private final DeliverySt…

超声医疗高压功率放大器ATA-4315技术参数

超声波检查或超声诊断,是一种非侵入性的医学检查方法,它利用了声波的高频振动来观察和评估人体内部的器官和组织。它基于不同密度和组织结构中传播的原理。通过将ultrasound(超声波)传递到身体的特定区域,并记录反射回来的声波,我…

reggie优化05-前后端分离开发

1、YApi 2、Swagger 2.1 操作步骤 1、导入Maven <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</version></dependency>2、导入Knife4j相关配置&a…

Java读取Excel 单元格包含换行问题

Java读取Excel 单元格包含换行问题 需求解决方案 需求 针对用户上传的Excel数据&#xff0c;或者本地读取的Excel数据。单元格中包含了换行&#xff0c;导致读取的数据被进行了切片。 正常读取如下图所示。 解决方案 目前是把数据读取出来的cell转成字符串后&#xff0c;…