#作者:张桐瑞

文章目录

  • 四、条件判断的实现
  • 五、循环的实现
  • 六、Jinja模板应用
    • 1、Jinja模板
    • 2、handlers组件
  • 七、角色 role
    • 1、角色介绍
    • 2、案例: 部署zabbix-agent

四、条件判断的实现

when: 条件

在这里插入图片描述

- hosts: appserveruser: roottasks:- name: create userAuser: name=userA state=presentwhen: ansible_default_ipv4["address"]  == "192.168.140.11"- name: create userBuser: name=userB state=presentwhen: ansible_default_ipv4["address"] == "192.168.140.12"- name: create userCuser: name=userC state=presentwhen: ansible_default_ipv4["address"] == "192.168.140.13"

五、循环的实现

1、loop关键字

- hosts: appserveruser: roottasks: - name: create userAA/BB/CCuser: name={{ item }} state=presentloop:- "userAA"- "userBB"- "userCC"

2、通过字典为item变量赋值

- hosts: appserveruser: rootgather_facts: falsetasks:- name: create user11/22/33user: name={{ item["username"] }} shell={{ item["sh_name"] }} state=presentloop:- { "username":"user11", "sh_name":"/sbin/nologin" }- { "username":"user22", "sh_name":"/bin/bash" }- { "username":"user3z3", "sh_name":"/bin/sync" }

案例: 部署nginx

- hosts: appserveruser: rootgather_facts: falsetasks:- name: push nginx installercopy: src=/opt/work/nginx-1.20.1.tar.gz dest=/tmp- name: install nginx deps yum: name={{ item }} state=presentloop:- gcc- openssl-devel- zlib-devel- pcre-devel - name: compile nginx shell: chdir=/tmp tar xf /tmp/nginx-1.20.1.tar.gz  && cd nginx-1.20.1 && ./configure --prefix=/usr/local/nginx && make && make install- name: start nginx daemonshell: /usr/local/nginx/sbin/nginx && sed -ri '$a \/usr/local/nginx/sbin/nginx' /etc/rc.d/rc.local && chmod a+x /etc/rc.d/rc.local- name: clean nginx installershell: rm -rf /tmp/nginx*

剧本角色方式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、Jinja模板应用

1、Jinja模板

支持在配置文件中调用变量{{ 变量名称 }}
增加配置文件灵活性
建议配置文件以.j2结尾
Jinja模板要使用template模块推送,触发变量替换

[appserver:vars]
mysql_port=3307[root@ansible ~]# sed -n '1,2p' /opt/work/my.cnf.j2
[mysqld]
port={{ mysql_port }}[root@ansible ~]# cat /opt/work/test5.yml
- hosts: appserveruser: roottasks:- name: copy my.cnftemplate: src=/opt/work/my.cnf.j2 dest=/etc/my.cnf

使用setup模块的状态数据定义配置文件

[mysqld]
bind-address={{ ansible_all_ipv4_addresses[0] }}
port={{ mysql_port }}

2、handlers组件

与tasks同级别组件, 默认情况 ,handers下定义的任务是不会自动执行的,只有在满足了一定的条件,由特定的条件触发其执行
应用场景
检测配置文件,自动重启服务加载配置

- hosts: appserveruser: roottasks:- name: copy my.cnftemplate: src=/opt/work/my.cnf.j2 dest=/etc/my.cnfnotify: restart MySQL daemon    // 触发handlers:- name: restart MySQL daemonservice: name=mariadb state=restarted

七、角色 role

1、角色介绍

本质上就是个目录
/etc/ansible/roles/
一个需求对应一个角色

  1. 创建角色
[root@ansible ~]# cd /etc/ansible/roles/
[root@ansible roles]# ansible-galaxy init nginx 
- Role nginx was created successfully
  1. 目录结构说明
[root@ansible ~]# tree /etc/ansible/roles/nginx/
/etc/ansible/roles/nginx/
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars└── main.yml

defaults-默认参数
files-普通文件、软件安装包
handlers-触发的操作
meta-元数据
tasks-常规任务、操作
templates-jinja模块
tests-剧本相关的测试代码
vars-定义变量

同一个角色中,相互引用数据时,不需要添加任何目录,直接调用即可

2、案例: 部署zabbix-agent

  1. 创建zabbixAgent角色
[root@ansible ~]# cd /etc/ansible/roles/
[root@ansible roles]# ansible-galaxy init zabbixAgent
- Role zabbixAgent was created successfully
  1. 准备zabbix-agent配置文件模板
[root@ansible roles]# cp /etc/zabbix/zabbix_agentd.conf /etc/ansible/roles/zabbixAgent/templates/zabbix_agentd.conf.j2[root@ansible roles]# vim /etc/ansible/roles/zabbixAgent/templates/zabbix_agentd.conf.j2
Server=192.168.140.10
ServerActive=192.168.140.10
Hostname={{ ansible_fqdn }}

setup模块找主机名

  1. 编写剧本
[root@ansible ~]# cat /etc/ansible/roles/zabbixAgent/handlers/main.yml
---
# handlers file for zabbixAgent- name: restart Zabbix-Agent daemonservice: name=zabbix-agent state=restarted[root@ansible ~]# cat /etc/ansible/roles/zabbixAgent/tasks/main.yml
---
# tasks file for zabbixAgent- name: zabbix repoyum_repository:name: zabbix44file: zabbix44description: zabbix44  YUM repobaseurl: https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/gpgcheck: noenabled: yes- name: install Zabbix-Agentyum: name=zabbix-agent state=present- name: copy zabbix-agent config filetemplate: src=zabbix_agentd.conf.j2 dest=/etc/zabbix/zabbix_agentd.confnotify: restart Zabbix-Agent daemon- name: start Zabbix-Agent daemonservice: name=zabbix-agent state=started enabled=yes

在这里插入图片描述
在这里插入图片描述
4) 执行角色/剧本

[root@ansible ~]# cat /opt/work/installZabbixAgent.yml
- hosts: appserveruser: rootroles:- zabbixAgent[root@ansible ~]# ansible-playbook /opt/work/installZabbixAgent.yml 

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

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

相关文章

LeetCode 100 -- Day6

1. 哈希:49、128(1)49 字母异位词分组 -- 字典from collections import defaultdict class Solution(object):def groupAnagrams(self, strs):"""创建字典{sorted_string:原str}"""resultsdefaultd…

多因素认证(MFA/2FA)实战指南:如何保护你的账号

一、MFA/2FA 基础认知 1. 概念辨析与演进 单因素认证(1FA)的局限性:仅依赖 “知识因素”(如密码),据 2024 年 Verizon 数据泄露报告,81% 的账户入侵源于密码泄露 —— 要么是用户使用弱密码&a…

vue3 字符 居中显示

在Vue 3中&#xff0c;要实现字符的居中显示&#xff0c;你可以使用多种方法&#xff0c;具体取决于你是想在HTML元素内居中文本&#xff0c;还是在CSS样式中实现。下面是一些常见的方法&#xff1a;1. 使用内联样式你可以直接在元素上使用style属性来实现文本的居中。<temp…

《Spring Boot 进阶:从零到一打造自定义 @Transactional》 ——支持多数据源、动态传播行为、可插拔回滚策略

《Spring Boot 进阶&#xff1a;从零到一打造自定义 Transactional》 ——支持多数据源、动态传播行为、可插拔回滚策略版本&#xff1a;Spring Boot 3.2.x JDK 17一、背景与痛点痛点默认 Transactional 限制多数据源只能绑定一个 DataSourceTransactionManager多租户无法在运…

open3D学习笔记

这里写自定义目录标题 核心3D数据结构 1.1 PointCloud(点云) 最近邻搜索 (KNN/Radius) 与空间索引(KDTree/Octree) 法线估计 (Normal Estimation) 聚类分割 (基于欧氏距离的聚类) 1.2 TriangleMesh (三角形网格) 泊松表面重建 (Poisson Surface Reconstruction) 滚球法 (Ba…

gt_k_char设计模块

是不是再fiber或者gt设计中经常遇到接收数据没有对齐&#xff1f;是的。很多协议需要手动对齐设计。这不&#xff0c;它来了。下面是手动对齐代码设计&#xff0c;本人在很多工程和项目中应用过&#xff0c;现在共享出来&#xff0c;给大家使用。module gt_k_char (input …

网页版云手机怎么样

随着科技的不断发展&#xff0c;云手机这一新兴概念逐渐走入大众视野&#xff0c;而网页版云手机作为云手机的一种便捷使用方式&#xff0c;备受关注&#xff0c;下面从多个方面来探讨网页版云手机究竟怎么样。与传统的需要在本地设备安装专门APP的云手机使用方式不同&#xff…

XFile v2 系统架构文档

XFile v2 系统架构文档 1. 概述 XFile 是一个基于 Go 语言开发的分布式文件管理系统&#xff0c;提供本地文件存储、网络文件共享、安全认证和多种文件操作功能。该系统采用模块化设计&#xff0c;支持大文件分片存储、用户权限管理、双因素认证等高级功能。 XFile系统的核心特…

写一个天气查询Mcp Server

上篇文章&#xff0c;我们聊到了 MCP 的基本概念&#xff0c;带大家快速入门了 MCP。 说入门应该毫不夸张&#xff0c;对于科普性质的文章&#xff0c;只需要知道这件事情的诞生背景以及有什么作用就可以了。 但是&#xff0c;如果要开发给大模型调用的 Mcp Server&#xff0…

leecode-三数之和

思路 我的思路先顺序遍历一个变量,然后使用首尾双指针去遍历&#xff0c;根据结果去更新另外两个变量&#xff0c;如何和为零&#xff0c;将结果加入集合&#xff0c;但是这里要注意去重。 class Solution {public List<List<Integer>> threeSum(int[] nums) {// 排…

【数学建模】灰色关联分析的核心步骤

文章目录步骤一&#xff1a;读数据步骤二&#xff1a;指标正向化步骤三&#xff1a;数据标准化步骤三&#xff1a;数据标准化步骤四&#xff1a;结果处理步骤一&#xff1a;读数据 步骤一&#xff1a;读数据 X xlsread(‘blind date.xlsx’); % 读取Excel文件中的相亲数据 详…

基于高德地图的怀化旅发精品路线智能规划导航之旅

目录 前言 一、2025湖南旅发 1、关于旅发 2、精品路线发布 二、高德技术赋能 1、地理编码服务简介 2、地理编码服务参数介绍 3、自驾路径规划 4、自驾路径规划参数介绍 三、Java集成高德地图服务 1、业务调用时序 2、Java地理编码服务 3、Java路径规划 4、整体集成…

OpenCV实战1.信用卡数字识别

1. 任务说明 有如下几张信用卡&#xff0c;我们需要根据模板匹配出其中的数字&#xff0c;进行卡号的识别2. Debug源码 cursor的debug&#xff1a;launch.json&#xff1a; {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息&#xff0c;请…

Spring Security 深度学习(一): 基础入门与默认行为分析

目录1. 引言&#xff1a;为何选择Spring Security&#xff1f;2. 核心概念&#xff1a;认证 (Authentication) 与 授权 (Authorization)2.1 什么是认证 (Authentication)&#xff1f;2.2 什么是授权 (Authorization)&#xff1f;2.3 安全性上下文 (SecurityContext)3. Spring B…

数学建模--模糊综合评价法

一、概念 模糊综合评价法是一种基于模糊数学的综合评价方法。它针对评价过程中存在的模糊性&#xff08;如 “好”“较好”“差” 等模糊概念&#xff09;&#xff0c;通过建立模糊集合&#xff0c;将定性评价转化为定量评价&#xff0c;从而对具有多种属性的评价对象做出全面、…

科普 | 5G支持的WWC架构是个啥(2)?

为解决有线固定宽带与无线移动宽带融合问题&#xff0c;3GPP在5G中推出了WWC系统架构。它将两种接入类型统一融合到5G核心网络。这有助于运营商简化控制、简化管理并为终端用户提供一致服务&#xff1b;其中&#xff1a;一、5G核心组件包括&#xff1a;AMF(接入和移动性管理功能…

达梦数据库配置文件-COMPATIBLE_MODE

达梦数据库配置文件-COMPATIBLE_MODE 获取系统参数 SQL 语句: select distinct para_type from v$dm_ini;这句的意思是:从达梦数据库的参数视图 v$dm_ini 中,查询所有不同类型的参数分类(去重)。 ✅ 输出结果解析 行号 PARA_TYPE ---------- --------- 1 RE…

能源行业数据库远程运维安全合规实践:Web化平台的落地经验

背景&#xff1a;远程运维下的数据管理挑战在能源行业&#xff0c;企业通常在全国范围内部署分布式设施。每个电站或运维中心都有独立数据库&#xff0c;用于&#xff1a;记录设备状态、传感器数据和维护日志&#xff1b;存储实时生产指标和能耗统计&#xff1b;生成定期运维报…

数据结构Java--8

二叉搜索树像上图这样满足&#xff0c;任意一棵子树的左子树小于该子树的根结点&#xff0c;右子树大于该子树的根结点&#xff0c;满足这样的条件&#xff0c;则这种树就被称为二叉搜索树。public class BinarySearchTree {static class TreeNode {public int val;public Tree…

使用Spring Boot和EasyExcel导出Excel文件,并在前端使用Axios进行请求

在现代企业应用中&#xff0c;Excel文件的导出是一项常见且重要的功能。Spring Boot作为Java开发中的热门框架&#xff0c;结合EasyExcel这样的高效库&#xff0c;能够轻松实现Excel的导出功能。而在前端&#xff0c;使用Axios进行HTTP请求&#xff0c;可以方便地与后端进行数据…