自动化运维(二十四)Ansible 实战查找插件和策略插件

 Ansible 支持多种类型的插件,这些插件可以帮助你扩展和定制 Ansible 的功能。每种插件类型都有其特定的用途和应用场景。今天我们一起学习查找插件和策略插件。

一、查找插件(Lookup Plugins)

Ansible 查找插件允许用户从外部数据源或在 Ansible 环境内部查询数据。它们通常用在任务中以动态地获取数据,例如从文件、数据库、键值存储或环境变量中提取信息。查找插件可以在 playbook 的任何地方使用,通过 lookup 关键词调用。

主要用途

  1. 获取外部数据:从文件、API 或其他数据源动态获取信息。
  2. 密码管理:从安全存储如 Vault 中提取敏感信息。
  3. 环境配置:根据环境变量或配置文件设置参数。
  4. 数据处理:处理数据列表或生成特定的数据结构。

示例:使用几种常见的查找插件

1. 文件查找插件

从本地文件系统中读取文件内容。

示例 Playbook

- hosts: localhosttasks:- name: Read content from a filedebug:msg: "{{ lookup('file', '/path/to/your/file.txt') }}"

在这个例子中,file 查找插件用于读取指定路径的文件内容,并在 debug 任务中显示这些内容。

2. 环境变量查找插件

从执行 Ansible 播放书的环境中获取环境变量的值。

示例 Playbook

- hosts: localhosttasks:- name: Get environment variabledebug:msg: "The value of HOME is {{ lookup('env', 'HOME') }}"

这个任务使用 env 查找插件来获取环境变量 HOME 的值,并显示出来。

3. 密码从 Vault 查找插件

从 HashiCorp Vault 中检索密码或其他秘密。

示例 Playbook(假设已配置 Vault):

- hosts: localhosttasks:- name: Retrieve secret from Vaultdebug:msg: "The secret is {{ lookup('hashi_vault', 'secret=my_secrets/data/api_key url=http://myvault:8200 token=s.1234567890abcdef') }}"

在这个任务中,hashi_vault 查找插件用于从 HashiCorp Vault 获取名为 api_key 的秘密。这里需要提供 Vault 的 URL 和访问令牌。

注意事项

  • 使用查找插件时,可能需要处理敏感数据,确保在使用这些数据时采取适当的安全措施。
  • 查找插件在使用外部服务(如数据库、API、Vault)时可能需要网络连接,确保网络配置正确无误。
  • 有些查找插件可能需要额外的库支持,确保这些依赖被正确安装。

查找插件为 Ansible 提供了极大的灵活性和强大的数据处理能力,使其能够轻松集成和使用各种数据源,从而在自动化任务中实现高度动态的配置和操作。

二、策略插件(Strategy Plugins)

Ansible 的策略插件允许用户自定义任务的执行方式。这些插件影响任务在主机间的执行顺序和方式,从而提供对并发级别和错误处理策略的精细控制。策略插件在复杂的自动化环境中尤为重要,可以优化性能和响应性。

主要用途

  1. 并行与串行控制:决定任务是并行执行还是按顺序串行执行。
  2. 错误处理:定义如何处理执行中的错误,比如是否继续执行其他任务。
  3. 任务循环:处理循环任务的执行方式,例如在多台机器上循环执行同一任务。
  4. 自定义逻辑:允许开发者根据特定需求实现自定义的执行逻辑。

示例:使用几种常见的策略插件

1. 线性策略插件(linear)

默认策略,按照 playbook 的顺序逐个执行每个任务,并在所有主机上按顺序执行。

示例 Playbook:

- hosts: allstrategy: lineartasks:- name: Install a packageansible.builtin.yum:name: httpdstate: present

在这个例子中,所有主机会依次执行安装 httpd 的任务,一个主机完成后再执行下一个。

2、自由策略插件(free)

允许每台主机尽快独立完成其任务,不需要等待其他主机。

示例 Playbook:

- hosts: allstrategy: freetasks:- name: Check disk usageansible.builtin.command: df -h

这里每台主机将独立执行 df -h 命令,不互相等待,从而快速完成整个任务。

3、调试策略插件(debug)

一种用于开发和测试的策略,每执行完一个任务就会暂停,等待用户输入。

示例 Playbook:

- hosts: allstrategy: debugtasks:- name: Echo a messageansible.builtin.command: echo "Hello, Ansible"

使用 debug 策略时,任务执行将在每个步骤后暂停,允许开发者检查或修改执行状态。

注意事项

  • 性能影响:选择合适的策略插件可以提高效率,但某些策略(如 free)可能会导致资源竞争或过载。
  • 错误依赖:错误处理策略需要谨慎设计,以避免因个别主机的失败而影响整体任务。
  • 自定义插件开发:开发自定义策略插件需要深入理解 Ansible 的内部机制,确保兼容性和稳定性。

通过这些策略插件,Ansible 为自动化任务执行提供了灵活的控制方式,帮助用户根据具体的运维需求优化自动化策略。

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

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

相关文章

我企业的业务需要制作企业网站吗?11个支持的理由以及5个反对的理由!

如果你的企业经营得还不错,你可能会找出很多理由,说明为什么一个高效的网站对你来说并不那么重要。确实,你明白企业需要在互联网上有一定的存在感,但你可能并不认为一个高效的网站会对你的特定业务产生太大的影响——尤其是当你已…

【Linux】Socket编程接口 | 实现简单的UDP网络程序

文章目录 一、预备知识理解源IP地址和目的IP地址理解源mac地址和目的mac地址认识端口号理解源端口号和目的端口号理解“端口号(PORT)”和“进程ID(PID)” 认识TCP和UDP协议TCP协议UDP协议 网络字节序为什么网络字节序采用的是大端…

循环单链表算法库

学习贺老师数据结构 数据结构之自建算法库——循环单链表_循环单链表 csdn-CSDN博客​​​​​​ 整理总结出的循环单链表算法库 v1.0 : 基本实现功能 v2.0(2024.4.6): 修复Delete_SpecificLocate_CyclicList()删除节点函数bug,添加验证删除节点是否超范围判断 目录 1.主要功能…

react17中配置webpack:使用@代表src目录

在vue的项目中可以使用表示src目录,使用该符号表示绝对路径,那么在react中想要使用怎么办呢? 在react中使用表示src目录是需要在webpack中配置的,在核心模块node_modules-》react-scripts-》config-》webpack.config.js中搜索找到…

【数据结构与算法】之8道顺序表与链表典型编程题心决!

个人主页:秋风起,再归来~ 数据结构与算法 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 目录 1、顺序表 1.1 合并两个有序数组 1.2 原地移除数组中所有的元素va…

51-37 由浅入深理解 Stable Diffusion 3

2024年3月5日,Stability AI公开Stable Diffusion 3论文,Scaling Rectified Flow Transformers for High-Resolution Image Synthesis。公司像往常一样承诺后续将开源代码,开源之光!!! 在LDW潜在扩散模型论文…

​​​​网络编程学习探索系列之——广播原理剖析

hello !大家好呀! 欢迎大家来到我的网络编程系列之广播原理剖析,在这篇文章中, 你将会学习到如何在网络编程中利用广播来与局域网内加入某个特定广播组的主机! 希望这篇文章能对你有所帮助,大家要是觉得我写…

c#中怎么自动下载软件

以下是一个简单的 C# 示例,演示如何使用 WebClient 类下载软件: using System; using System.Net; class Program { static void Main(string[] args) { // 要下载的文件 URL string fileUrl "https://example.com/path/to/file"; // 本地保…

Leetcode算法训练日记 | day24

一、组合问题 1.题目 Leetcode:第 77 题 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4…

java中的Optional类和线程

Optional类&#xff1a; public static <T> Optional<T> of(T value) Returns an Optional describing the given non-null value. 通过非null值构建一个Optional容器&#xff0c;注意value不能为null&#xff0c;否则抛出异常 public static <T> Optional&…

福建单航次最大批量汽车“出海”

3月12日这一天&#xff0c;在福州海关的严密监管下&#xff0c;共有4000辆上汽名爵品牌的汽车被高效有序地装载到“安吉智慧”号滚装船上&#xff0c;这批车辆即将启程前往荷兰、埃及、英国等多个海外市场。在这批出口汽车中&#xff0c;新能源车型占据了显著的比例&#xff0c…

PostgreSQL高级sql积累

1&#xff1a;----查询postgresql数据中系统表与自己建立表结构做了个对比 select cl.relname,att.attname,att.atttypid,f.* from pg_class cl LEFT JOIN pg_attribute att on att.attrelid cl.oid LEFT JOIN td_f_field_info f on f.party_table_namecl.relname and f.fi…

[运维|GB28181] wvp-GB28181-pro+ZLMediaKit部署GB28181协议视频平台(windows)-个人笔记

相关软件下载地址 mysql下载地址 redis下载地址 vc运行库 linux安装说明 wvp-GB28181-proZLMediaKit部署GB28181协议视频平台全流程(ubuntu2204) wvp-GB28181-proZLMediaKit部署GB28181协议视频平台全流程(centos7) 若需要协助部署可私信我

OceanMind海睿思助力企业“数据入表”经济利益流入与生命周期管理

通过多年信息系统的建设与应用&#xff0c;企业积累了大量的数据。同时随着时间的推进&#xff0c;数据规模正以加速度快速增长。从国家到企业&#xff0c;都越来越关注所拥有的数据资源及其蕴含的深厚价值。很多企业已经逐渐认知到数据是重要的战略资源&#xff0c;数据资产化…

游标的定义和类型

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 游标的基本概念 游标从字面上理解为游动的光标&#xff0c;可以使用 Excel 表格来想象游标的作用&#xff0c;游标指向每一行&#xff0c;通过游标访问每行数据。 在 Orac…

UVA10391 Compound Words 复合词 解题报告

UVA10391 Compound Words 复合词 解题报告 题目链接 https://vjudge.net/problem/UVA-10391 题目大意 给出一个词典&#xff0c;找出所有的复合词&#xff0c;即恰好有两个单词连接而成的单词。输入每行都是一个由小写字母组成的单词。输入已按照字典序从小到大排序&#xf…

2024/4/5—力扣—字符串相乘

代码实现&#xff1a; 方法一&#xff1a;常规解法——超出整数表示范围 long long char_to_num(char *str) {long long num 0;for (int i 0; i < strlen(str); i) {num num * 10 (str[i] - 0);}return num; }char* multiply(char *num1, char *num2) {long long a cha…

“Python爬虫实战:高效获取网上公开美图“

如何通过Python创建一个简单的网络爬虫&#xff0c;以爬取网上的公开图片。网络爬虫是一种自动化工具&#xff0c;能够浏览互联网、下载内容并进行处理。请注意&#xff0c;爬取内容时应遵守相关网站的使用条款&#xff0c;尊重版权和隐私权。 ### 网络爬虫简介 网络爬虫&…

Git基础操作及其分支管理

目录 一、git的用处&#xff1f; 1.1 git也不是银弹 二、安装git 三、git基础操作 3.1 创建git本地仓库 3.2 配置Git 3.3 认识工作区、暂存区、版本库 3.4 添加文件 3.5 Git文件目录 3.6 版本回退 3.7 撤销修改 3.7.1 对于工作区的代码&#xff0c;还没有进行add操作…

react 组件:Suspense

允许在子组件完成加载前展示后备方案。 children&#xff1a;真正的 UI 渲染内容。如果 children 在渲染中被挂起&#xff0c;Suspense 边界将会渲染 fallback。 fallback&#xff1a;真正的 UI 未渲染完成时代替其渲染的备用 UI&#xff0c;它可以是任何有效的 React 节点。后…