在 Ansible 中创建已安装软件包的报告

2024-02-16

我正在尝试制作一份包含几台机器上已安装的软件包及其版本的报告。

该报告必须在执行 playbook 的计算机上创建。

这是我当前的剧本


---
- name: main
  hosts: all
  gather_facts: no
  become: true
  tasks:
  - setup:
        gather_subset:
         - '!all'

  - name: Gather rpm packages
    package_facts:
          manager: auto
    ignore_errors: true

  - name: Create the result file
    local_action:
     module: copy
     content: |
          {% for h in groups.all %}
          {{h}}; OS: {{hostvars[h]['ansible_distribution']|default('N/A')}}; Release: {{hostvars[h]['ansible_distribution_version']|default('N/A')}}

          List of instaled packages:.......
          #==============================================
          {% for k,v  in  hostvars[h].ansible_facts.packages.iteritems() %}
          package {{ k.rjust(24) }}      version {{ v[0].version }}
          {%endfor%}
          #==============================================
          {%endfor%}
     dest: '/reports/OS_info.txt'

哪个运行的是

ansible-playbook -i rh_inventory  -u ansuser02  os_extract_info.yml

Now, if all主机可访问,则会创建报告,但是,如果一台或多台主机无法访问 剧本执行失败并显示:

致命:[INFRA-116]:失败! => {“msg”:“该任务包含一个带有未定义变量的选项。错误是:'dict object'没有属性'packages'

我不知道解决这个问题的最佳方法是什么。


你必须申请一个default过滤该事实,就像您对其他信息所做的那样:

hostvars[h].ansible_distribution | default('N/A')

在这种情况下,由于您想要循环字典的键/值对,因此您可以默认packages对于任何空的事实:

{% for k, v in (hostvars[h].packages | default({})).items() %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Ansible 中创建已安装软件包的报告 的相关文章

随机推荐

  • HTML5 Canvas 改变所有线条的颜色[重复]

    这个问题在这里已经有答案了 我用 HTML5 画布制作了一个简单的绘图应用程序 您单击两个不同的位置以从一个点到另一个点绘制一条线 我还有两个文本输入框 您可以在其中更改线条粗细和颜色 问题是 当我改变线条的颜色时 它会改变all之前画的线
  • 为 SQL Server 表自动生成 INSERT 语句的最佳方法是什么?

    我们正在编写一个新的应用程序 在测试时 我们将需要一堆虚拟数据 我通过使用 MS Access 将 excel 文件转储到相关表中来添加该数据 我们经常需要 刷新 相关表 这意味着将它们全部删除 重新创建它们 然后运行保存的 MS Acce
  • 可以在 Scala 中隐藏方法吗?

    昨晚 在某个不愉快的时刻 我们庆祝了第五次因以下行为而追踪到错误的实例 String split 例如在 output split n map processRow 问题是如果output是空的 split会给你一行空字符串 process
  • 带有 base64 字符串的 HTML 图像标签(数据 URI)

    我大约每 50 200 毫秒从一系列 httprequests 获取 jpeg 图像的二进制数据 我将此数据转换为 base64 字符串 并使用 javascript 将字符串插入到 img 标记中 var img document get
  • HTML5可以访问手机上的NFC芯片吗

    我对 HTML5 不太熟悉 所以有人知道 HTML5 是否能够访问移动设备内置的 NFC 芯片吗 或者 有人可以建议另一种方法来使用其他方法来做到这一点吗 我的目标是制作一个跨平台 HTML5 Web 应用程序 可以在配备 NFC 的手机上
  • Julia JIT 编译、@time 和分配数量

    我刚刚开始评估 Julia 版本 0 6 0 并且测试了如何调整大小 和尺寸提示 可能会影响性能 我使用 time宏 文档说 运行一次进行 JIT 编译 但如果我们检查分配数量 运行一次似乎还不够 module Test function
  • 子集约束在 UML 类图中意味着什么

    有subset在部门类和人员类之间 但我不知道比是什么意思 家庭作业机会 查看由子集约束链接的两个关系 每个部门有多名成员 每个部门设经理一名 子集表示这两者之间的约束 如果后一个关系的元素是第一个关系的子集 那么你会如何描述其含义 EDI
  • 无法在反应挂钩中单击按钮时绑定单选按钮和复选框数据

    我有一个表单 当我提交数据时 它将发送到服务器并在表格中显示数据 在表中我有编辑按钮 当单击编辑按钮时 数据应该绑定到表单 在这里 我无法绑定输入字段 但不能绑定单选按钮和复选框 const Form gt const data setda
  • 如何在烧瓶应用程序中初始化时加载文件

    我有一个大文件 我们称之为 machine learning model hdf5 每次点击发布请求端点时 我都会将其加载到我的应用程序中 伪代码如下所示 def post self model load model machine lea
  • Cloud Explorer - 无法访问开发 Blob 容器

    我正在使用 VS2015 在本地使用 Azure 存储进行开发 我创建并访问了我的开发存储 blob 容器 效果很好 我上传了三张图像 并有代码来计算图像的大小 由于某些未知原因 我无法再在 Cloud Explorer 中展开 Blob
  • UWP:是否可以创建自己的网络文件(类似于 Onedrive)?

    我正在查看文档确定 Microsoft OneDrive 文件的可用性 https learn microsoft com en us windows uwp files quickstart determining availabilit
  • React Hooks 错误:只能在函数组件体内调用 Hooks

    我在使用时收到此错误useState钩 我有它的基本形式 看看反应文档 https reactjs org docs hooks reference html usestate供参考 但我仍然收到此错误 我已经准备好迎接掌脸时刻了 expo
  • 防止 Access 在切换到设计模式时弄乱它无法理解的查询

    在做了很长时间的其他事情后回到 Access 有一件事确实让我烦恼 那就是如果您无意中在设计模式下打开一个查询 设计器无法表示 sql 即使它是有效的 设计师将为您 更正 您的查询 并且无法撤消 有没有解决这个问题的方法 或者我至少可以让它
  • 如何区分SQLAlchemy IntegrityError的原因?

    SQLAlchemy 似乎只是抛出一个一般IntegrityError当事务存在数据完整性问题时 当然 确切的查询和错误消息包含在异常中 这足以供人调试程序 然而 在为异常编写错误处理代码时 据我所知 似乎没有一个好的方法来检查哪个表上的哪
  • 为什么 ComboBox 是下拉结果整个应用程序性能非常慢?

    我有一个wpf应用程序 有一个奇怪的事情 只要我按下鼠标 ComboBox下拉箭头就会变得所有UI响应都很慢 无论ComboBox是否有项目 烦人的情况只出现在某些计算机上 期待答复 我查看了您可以在互联网上找到的提示 我发现没有任何问题
  • 如何修复“未找到自定义操作文件的安装项目”异常?

    我正在尝试为 Windows 服务创建一个安装项目 我已按照以下指示进行操作http support microsoft com kb 816169 http support microsoft com kb 816169轻松创建安装项目
  • 向ggplot添加水平线

    我想使用 ggplot2 在一个图中绘制多条不同颜色的线 然后添加一条单独的水平线 我的代码如下 在我运行最后一行之前它运行良好p geom hline yintercept 400 所有线条都变成黑色 右侧的图例消失 有谁知道如何解决这个
  • 通过使用显式构造函数将相同的参数传递给每个元素来构造元组

    以下内容在 Visual C 2015 Update 2 上运行良好 请注意A是不可复制的并且A A is explicit include
  • 有没有办法“持久”地将 git 存储库与 SVN 同步?

    从我在网上找到的信息来看 似乎使用git svn不是 坚持 意思是 如果我git svn clone一个存储库 然后推送到 master 并在单独的文件夹中重新拉取一个新副本 该新副本根本不知道 svn 并且无法在不重新应用的情况下用于与
  • 在 Ansible 中创建已安装软件包的报告

    我正在尝试制作一份包含几台机器上已安装的软件包及其版本的报告 该报告必须在执行 playbook 的计算机上创建 这是我当前的剧本 name main hosts all gather facts no become true tasks