Ansible最佳实践之 AWX 启用facts缓存和模板问卷调查

news2024/11/23 22:04:50

写在前面


  • 分享一些 AWX 启用facts缓存和模板问卷调查的笔记
  • 博文内容涉及:
    • 启动facts缓存相关配置Demo
    • 启用模板调查来设置变量demo
  • 食用方式: 需要了解 Ansible
  • 理解不足小伙伴帮忙指正

傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波


通过事实缓存提高性能

事实缓存

Ansible Facts 是 Ansible 在受管主机上自动检测到的变量。包含主机的特定信息,这些信息可以像常规变量一样使用。通常,每个剧本都会在执行第一个任务之前自动运行setup模块,以便从剧本中主机模式匹配的托管主机中收集事实。

  1. 这确保了该剧本具有当前事实,但收集事实会带来明显的性能后果,尤其是在托管主机数量庞大的情况下。如果您在剧中不使用任何事实,则可以在剧本中设置关闭自动事实收集,加快执行速度。如果您在剧中使用事实,则关闭自动事实收集将导致剧本无法执行。
  2. 剧本还可以引用其他主机的事实(ansible使用任务委派)。例如,在托管主机servera上运行的任务可以通过引用变量hostvars[serverb],['ansible_facts']['default_ipv4']['address']访问serverb的变量,仅当通过此剧本或同一Playbook中较早任务已从serverb收集了事实时,此方法才有效。

一个 Playbook 可以为清单中的所有主机收集事实并缓存这些事实,以便后续 Playbook 可以在不收集事实或手动运行 setup 模块的情况下使用它们。

在 AWX 中启用事实缓存

Red Hat AWX 支持Fact Caching功能。 AWX 启动作业时,将作业中每个托管主机的所有 ansible_facts 注入到内存中。完成工作后,从内存中检索特定主机的所有记录,然后将时间更新的事实存储到数据库中。

全局设置

AWX 中有一个全局设置,用于控制每个主机的事实到期时间。在下图中的作业设置中

在这里插入图片描述

以秒为单位,控制收集到的Ansible事实缓存效时间。存储的 Ansible 事实自上次修改后被视为有效的最长时间(以秒为单位)。只有有效且未过时的事实才会被 playbook 访问。注

意,这不会影响从数据库中删除 ansible_facts。默认值设置为0,使用 0 值表示不应用超时。如果您未定期收集事实来更新缓存,则可能会因为托管主机动态变更而导致事实不是最新值。

在这里插入图片描述

作业模板设置

AWX 作业模板启用事实缓存Use Fact Cache选项,作业模板中的任务才会使用事实缓存中的事实。

在这里插入图片描述

以下步骤演示如何在 AWX 中启用事实缓存:

  1. 单击左侧导航栏中的 Templates。
  2. 选择适当的作业模板,再单击其名称以编辑设置。
  3. 在页面的 OPTIONS 部分中,选中 Use Fact Cache 旁边的复选框。
  4. 单击 SAVE 以保存修改后的作业模板配置。

当启用了Use Fact Cache选项的模板运行新作业时,该作业都将使用事实缓存。

如果Ansible Playbookgather_facts变量也设置为yes,当前facts没有缓存,该作业将收集事实,检索它们,并将它们存储在事实缓存中。

这里我们测试下,手工创建一个项目,只用于收集事实

在项目文件加下面新建项目文件

┌──[root@vms81.liruilongs.github.io]-[~/ansible]
└─$kubectl exec -it awx-demo-65d9bf775b-hc58x -c awx-demo-task  -- bash
bash-5.1$ cd /var/lib/awx/projects/
bash-5.1$ ls
_6__demo_project  _6__demo_project.lock  _9__ansible_role_keepalived  _9__ansible_role_keepalived.lock  liruilong_manual  liruilong_manual.lock
bash-5.1$ mkdir gather_gacts
bash-5.1$ cd gather_gacts/;touch task.yaml
bash-5.1$ vim task.yaml
bash: vim: command not found
bash-5.1$ vi task.yaml
bash-5.1$ ls -l
total 4
-rw-r--r-- 1 awx root 66 Oct 22 04:27 task.yaml
bash-5.1$ cat /var/lib/awx/projects/gather_gacts/task.yaml
---
- name: 事实缓存学习
  hosts: all
  gather_facts: true

bash-5.1$
bash-5.1$ exit
exit
┌──[root@vms81.liruilongs.github.io]-[~/ansible]
└─$

在 AWX UI 面板中创建对应的项目
在这里插入图片描述

创建项目对应的作业模板
在这里插入图片描述

执行测试
在这里插入图片描述

然后我们可以在主机的事实中看到缓存的数据
在这里插入图片描述

使用Job Template Surveys设置变量

管理变量

建议 Ansible 用户编写可在不同情况下重复使用的 Playbook,或者当部署到系统时应具有略微不同的行为、配置,或在不同环境中运行。处理此问题的⼀种简单方法是使用变量。

定义额外变量

在 AWX 中,可以通过两种方式使用作业模板来直接设置额外的变量:

在这里插入图片描述

  • 通过作业模板中的 EXTRA VARIABLES 变量 字段。
  • 如果为 EXTRA VARIABLES 变量字段选择了启动时提示 PROMPT ON LAUNCH,则系统将提示 AWX 用户在使用作业模板来启动作业时以交互方式式修改所使用的额外变量的列表。

在这里插入图片描述

如果生成的作业后来重新启动,则会再次使用相同的额外变量。在重新启动作业时,不能更改其额外变量。相反,应从原始作业模板启动作业,并设置不同的额外变量。

另一种即通过作业模板调查来实现

作业模板调查

作业模板调查允许作业模板在用于启动作业时显示简写形式,提示用户输入用于为额外变量设置值的信息。

在这里插入图片描述

提示用户输入与设置额外变量的其他方法相比具有多个优势。用户无需详细了解额外变量的运行方式或使用情况。他们也不需要了解 Playbook 所使用的额外变量的名称。

由于提示可以包含任意文本,因此可以选择对用户友好的措辞,并且易于那些可能并不详细了解 Ansible 的用户理解。

  • 用户友好的问题:调查允许使用自定义的问题对用户进行提示。与 PROMPT ON LAUNCH 方法相比,这种方式能够更加友好地提示用户输入额外变量值。
  • 回答类型:除了提供用户友好的提示之外,调查还可以定义用户输入的规则,并对其执行验证。用户对调查问题的回答可以
    限制为以下七种回答类型之⼀:

在这里插入图片描述

  • 答案长度:还可以为调查问题的用户回答定义大小规则。对于以下非列表答案类型,调查可以定义用户回答所允许的最小和最大字符长度:Text、 Textarea、Password、Integer 和 Float。

  • 默认回答:可以为问题提供默认回答。问题也可以标记为 REQUIRED,这表示必须为问题提供回答。
    创建作业模板调查过程略。

在这里插入图片描述

这里我们修改一下之前的剧本,测试如何使用

┌──[root@vms81.liruilongs.github.io]-[~]
└─$kubectl exec -it awx-demo-65d9bf775b-hc58x -c awx-demo-task  -- bash
bash-5.1$ cat /var/lib/awx/projects/liruilong_manual/test.yaml
---
- name: awx demo
  hosts: all
  tasks:
     - name: 调查问卷变量学习
       debug:
         msg: "{{ username  }}"
bash-5.1$ exit
exit
┌──[root@vms81.liruilongs.github.io]-[~]
└─$

这里添加完 问卷调查之后需要启动
在这里插入图片描述

在启动作业的时候会提示问卷信息
在这里插入图片描述

测试输出 我们输入的数据
在这里插入图片描述

博文参考


《DO447 Advanced Automation Ansible Best Practices》

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

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

相关文章

基础入门 - Spring Boot HelloWorld 第二节

简化配置 Spring Boot 把所有的配置都固定编写在 application.properties 里,文件名是固定写法,不能改 我们如果想更改配置,几乎所有的配置都在这里面更改就可以,而且,就算你不更改,不编写配置,…

计算机毕业设计java基于springboot医院急诊挂号系统

项目介绍 开发语言:Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:springbootvue 人难免会有生病的时候,尤其是当一些突发情况下,一旦发生一些疾病很可能会危及生命。这时候如果按照常规的方式进行挂号是很浪费时间…

SwiftUI 中的水平条形图

水平条形图以矩形条的形式呈现数据类别,其宽度与它们所代表的数值成正比。本文展示了如何在垂直条形图的基础上创建一个水平柱状图。 水平条形图不是简单的垂直条形图的旋转。在 Numbers 等应用程序中,水平条形图被定义为独立的图表类型,而不是垂直条形图。除了条形差异外…

Jsp基础了解(一)

文章目录JSP1,JSP 概述2,JSP 快速入门2.1 搭建环境2.2 导入 JSP 依赖2.3 创建 jsp 页面2.4 编写代码2.5 测试3,JSP 原理4,JSP 脚本4.1 JSP 脚本分类4.2 案例4.2.1 需求4.2.2 实现4.2.3 成品代码4.2.4 测试4.3 JSP 缺点5&#xff0…

实验模拟TCP连接的各种异常情况(三次握手丢包,两端异常)

实验模拟TCP连接的各种异常情况(三次握手丢包,两端异常) 环境搭建 秋招结束,闲来无事,正好把计算机网络一些协议实验过一遍,于是用vmware搭建了一个两机通信的环境,在建立环境的过程中遇到了一…

HTTP Mime-Type对照表

HTTP Mime-Type对照表 : Content-Type(Mime-Type) 文件扩展名 小贴士:CtrlF 快速查找 Mime-Type类型 文件扩展名Content-Type(Mime-Type)文件扩展名Content-Type(Mime-Type).*(二进制流,不知道下载文件类型&#xff09…

Java基础教程:多线程(4)-----线程的生命周期

任何对象都有生命周期,线程也不例外,它也有自己的生命周期。线程的整个生命周期分为六个阶段,分别是新建状态(New)、可运行状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、等待状态(Waiting)和死亡状态(Terminated),线程…

1 基础知识

基础知识 1 汇编语言产生 1.1 机器指令 机器语言是机器指令的集合。机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算。 每一种微处理…

r语言绘制动态统计图:绘制世界各国的人均GDP,出生时的期望寿命和人口气泡图动画动态gif图

使用的数据 nations.csv 来自世界银行指标的数据。warming.csv 有关1880年至2017年全球年平均温度 。 yearvalue 全球平均温度,与1900-2000年的平均温度相比。 simulations.csv美国国家航空航天局(NASA)对历史温度的模拟数据,估计…

NetSuite Plug-In 101

进入了我的学术休假季,开始做一些自己喜欢的题目。今天就来扒一扒一个NetSuite落满灰尘的功能--Plug-In。 大家可能听到过一个叫做Email Approval的应用场景,可以让用户在不登录NetSuite系统的情况下,跟NetSuite产生交互。例如,通…

ArcGIS基础:字段的别名和字段属性域设置

【1】别名设置: 别名设置时需要注意的是在SHP格式里,进行设置仅仅是临时存贮,关闭属性表后,属性的别名就会丢失,需要将其存储到地理数据库里才可以永久包括。 存放在地理数据库后,找到数据,右…

Replugin 插件中MutliDex 分多包 后加载插件报错的问题解决

Caused by: java.lang.ClassNotFoundException: Didn’t find class “com.qihoo360.replugin.Entry” on path: DexPathList[[zip file “/data/app/com.topdraw.replugintest2-1/base.apk”],nativeLibraryDirectories[/data/app/com.topdraw.replugintest2-1/lib/x86, /syst…

图论算法(2)—————拓扑排序

在几天前写了一篇最小生成树的文章 今天再讲解一下图论的另一个算法:拓扑排序 注:今天只讲解kahn算法,各位如果对dfs算法有需求可联系我进行讲解 说到拓扑排序,不得不先了解下拓扑是个什么东东 拓扑,它是一种结构 …

Elasticsearch 进阶

一、核心概念 1.1 索引(Index) 一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新…

[附源码]计算机毕业设计JAVA音乐交流平台

[附源码]计算机毕业设计JAVA音乐交流平台 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis M…

【数字逻辑】——逻辑函数及其简化(学习笔记)

📖 前言:1849年英国数学家乔治,布尔( George Boole )首先提出了描述客观事物逻辑关系的数学方法﹣布尔代数。1938年克劳德.香农( Claude E . Shannon )将布尔代数应用到继…

深度学习-BN(Batch Normalization)

1. 介绍 Batch Normalization是2015年一篇论文中提出的数据归一化\color{blue}{数据归一化}数据归一化方法,往往用在深度神经网络中激活层之前。其作用可以加快模型训练时的收敛速度,使得模型训练过程更加稳定,避免梯度爆炸或者梯度消失。并且…

postgresql 数据库导出和导入

简介 本篇文章主要介绍PostgreSQL库和表的导出和导入以及常用的数据库管理工具的使用 一、数据库的导出和导入 1. 使用pgAdmin导出和导入数据库 导出 导入 新建数据库,右键Restore 2. 使用Navicate导出和导入数据库 导出 选择要导出的数据库,点…

【小f的刷题笔记】(JS)数组 - 差分数组 LeetCode1109 LeetCode1094

【数组】 差分数组: 🌟 频繁对原始数组的某个区间的元素进⾏增减 ✔ 把每个数与前一个数的差值计算出来存在一个新数组里,区间的加减通过把新数组中区间开始下标的值加/减,区间结束下标对应的值减/加(反一下&#x…

软件工程笔记

软件工程软件工程:指导计算机软件系统开发和维护的工程学科:目的:有序,可控,可管理软件工程方法学要素:方法,工具,过程软件:程序数据文档软件分类:软件生命周期补充:软件工程方法:软件生命周期中使用的一整套技术评价标准:软件开发方法:软件工程:指导计算机软件系统开发和维护的…