ansible copy或模板编号的var文件

时间:2016-03-19 12:34:57

标签: templates ansible

我试图将文件模板化到远程系统。应该调用该文件:

 app_healthcheck-{{ var }}.sh.

其中{{ var }}是编号值,例如01,02,03。

假设远程系统已经有这些文件:

app_healthcheck-01.sh
app_healthcheck-02.sh
app_healthcheck-03.sh

我希望ansible在模板化下一个文件时使用下一个可用的数字,即04。 Ansible需要查看目标中存在的文件,并选择要使用的下一个值。如果它是第一个文件,则选择01。

任何想法,我怎么能做到这一点?

1 个答案:

答案 0 :(得分:0)

虽然Ansible可以肯定这一点,但我认为使用Ansible任务执行此操作会变得过于复杂。相反,我建议用您喜欢的语言编写脚本,然后使用脚本模块执行它。该脚本检测下一个ID,然后:

  • 回复它,然后您可以在复制/模板任务中使用
  • 直接写文件
  • 复制以前写的临时文件

执行第一个选项的简单bash脚本可能如下所示:

#!/bin/bash

path=/tmp
name=app_healthcheck

i=1
while : ; do
  j="00${i}"
  j="${j: -2}"
  if [ ! -f $path/$name-$j.sh ]; then
    break
  fi
  let i++
done

echo $j

这简单地回应01,02,...,99无论下一个号码是免费的。

使用脚本模块运行它。

- script: myScript.sh
  register: nextNumber

然后将结果用作{{ nextNumber.result }}