百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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

nanshan 2025-01-08 16:17 12 浏览 0 评论

写在前面

  • 分享一些 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》

相关推荐

Let’s Encrypt免费搭建HTTPS网站

HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入...

使用Nginx配置TCP负载均衡(nginx tcp负载)

假设Kubernetes集群已经配置好,我们将基于CentOS为Nginx创建一个虚拟机。以下是实验种设置的详细信息:Nginx(CenOS8Minimal)-192.168.1.50Kube...

Nginx负载均衡及支持HTTPS与申请免费SSL证书

背景有两台minio文件服务器已做好集群配置,一台是192.168.56.41:9000;另一台是192.168.56.42:9000。应用程序通过Nginx负载均衡调用这两台minio服务,减轻单点...

HTTPS配置实战(https配置文件)

原因现在网站使用HTTPS是规范操作之一,前些日子买了腾讯云服务,同时申请了域名http://www.asap2me.top/,目前该域名只支持HTTP,想升级为HTTPS。关于HTTPS的链接过程大...

只有IP地址没有域名实现HTTPS访问方法

一般来说,要实现HTTPS,得有个注册好的域名才行。但有时候呢,咱只有服务器的IP地址,没注册域名,这种特殊情况下,也能照样实现HTTPS安全访问,按下面这些步骤来就行:第一步,先确认公网...

超详解:HTTPS及配置Django+HTTPS开发环境

众所周知HTTP协议是以TCP协议为基石诞生的一个用于传输Web内容的一个网络协议,在“网络分层模型”中属于“应用层协议”的一种。在这里我们并不研究该协议标准本身,而是从安全角度去探究使用该协议传输数...

Godaddy购买SSL之后Nginx配置流程以及各种错误的解决

完整流程:参考地址:https://sg.godaddy.com/zh/help/nginx-generate-csrs-certificate-signing-requests-3601生成NGI...

Nginx从安装到高可用,一篇搞定(nginx安装与配置详解)

一、Nginx安装1、去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本2、上传nginx到linux系统3、安装依赖环境(1)安装gcc环境yuminstallgc...

阿里云免费证书申请,配置安装,使用tomcat,支持http/https访问

参数说明商品类型默认已选择云盾证书服务(无需修改)。云盾证书服务类型SSL证书服务的类型。默认已选择云盾SSL证书(无需修改),表示付费版SSL证书。如果您需要免费领取或付费扩容DV单域名证书【免费试...

你试过两步实现Nginx的规范配置吗?极速生成Nginx配置小工具

NGINX是一款轻量级的Web服务器,最强大的功能之一是能够有效地提供HTML和媒体文件等静态内容。NGINX使用异步事件驱动模型,在负载下提供可预测的性能。是当下最受欢迎的高性能的Web...

从零开始搭建HTTPS服务(搭建https网站)

搭建HTTPS服务的最初目的是为了开发微信小程序,因为wx.request只允许发起HTTPS请求,并且还必须和指定的域名进行网络通信。要从零开始搭建一个HTTPS的服务需要下面4...

群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问

安全第一步,群晖NAS使用官网域名和自己的域名配置SSL实现HTTPS访问【新手导向】NAS本质还是一个可以随时随地访问的个人数据存储中心,我们在外网访问的时候,特别是在公网IP下,其实会面临着很多安...

让网站快速升级HTTPS协议提高安全性

为什么用HTTPS网络安全越来越受到重视,很多互联网服务网站,都已经升级改造为https协议。https协议下数据包是ssl/tcl加密的,而http包是明文传输。如果请求一旦被拦截,数据就会泄露产生...

用Https方式访问Harbor-1.9版本(https访问流程)

我上周在头条号写过一篇原创文章《Docker-Harbor&Docker-kitematic史上最详细双系统配置手册》,这篇算是它的姊妹篇吧。这篇文章也将用到我在头条写的另一篇原创文章的...

如何启用 HTTPS 并配置免费的 SSL 证书

在Linux服务器上启用HTTPS并配置免费的SSL证书(以Let'sEncrypt为例)可以通过以下步骤完成:---###**一、准备工作**1.**确保域名已解析**...

取消回复欢迎 发表评论: