如何根据文件内容定义changed_when

问题描述 投票:0回答:1

我在我们的服务器和工作站上进行了一些安装,这些安装是通过专有的安装脚本执行的,例如 MATLAB。

保持幂等性我想分析在此过程中创建的日志文件。如何根据这些日志文件的内容定义

changed_when

例如,命令任务目前如下所示:

- name: Run MATLAB installer
  ansible.builtin.command:
    argv:
      - /mnt/matlabiso/install
      - -inputFile
      - /mnt/downloads/Software/MATLAB/R2024a/installer_input_linux.txt
  changed_when: false

因此,此命令会在 /tmp/ML2024.log 中创建一个日志文件,其中最后一行为“安装成功”,如果不成功则为“安装失败”。如果记住正确的话,命令本身通常不会失败。

如果我正确理解了我的linter,

changed_when: false
,那么读取日志文件的内容并通过调试进行打印并不是调用命令的真正幂等方式,因为更改已经通过命令完成了。

所以实际的问题:我是否错过了命令如何处理文件内容的方法,而无需创建自定义脚本,该脚本随后执行和设置并读取内容。

ansible
1个回答
0
投票

您可以编写自己的自定义模块,该模块将根据日志文件设置其值“已更改”。但这是很多工作。

正如您所说,命令本身大多会成功,并且您想要更广泛的“成功”概念。

你最好的选择似乎是将多个命令包装在一个中。

块允许您按顺序运行多个命令,并将该组命令视为成功或失败,以及在失败时可以执行一些清理步骤。

© www.soinside.com 2019 - 2024. All rights reserved.