如何在 saltstack 最新版本或文件中进行符号链接

How to symlink in saltstack latest version or file

ln -fs /opt/app/$(ls -rt file-*.jar | tail -n1) /opt/app/file.jar

在bash中工作得很好

目录包含

file-1.jar
file-2.jar
file-3.jar

如何在盐栈状态 sls 公式中执行此操作?

要在 Saltstack 中实现这一点,我们大约需要两个步骤:

  1. 获取最新文件
  2. Link 文件

对于第一部分,我们可以使用一些盐模块,例如file.find,但我觉得使用ls -rt的现有逻辑更简单。

所以我们可以使用这个命令来获取最新的JAR文件到一个变量中。然后使用 Salt 状态 link 文件。

示例:

{% set latest_jar = salt.cmd.run('ls -rt /opt/app/file-*.jar | tail -n1') %}

link-latest-jar:
  file.symlink:
    - name: /opt/app/file.jar
    - target: {{ latest_jar }}

更新:

对于较新版本的 Saltstack,我们需要使用 salt.cmd.shell 来设置 latest_jar 变量。

{% set latest_jar = salt['cmd.shell']('ls -rt /opt/app/file-*.jar | tail -n1') %}

link-latest-jar:
  file.symlink:
    - name: /opt/app/file.jar
    - target: {{ latest_jar }}

适合我...感谢帮助