我有个关于盐中变量的问题。 我试图使用if语句创建更复杂的salt状态。
工作示例:
{% set old_stable = salt['cmd.run']('cd /home/project_name && ls -t|grep 2|grep -v tar.gz|tail -n +2|head -n 1') %}
{% set time_date = salt['cmd.run']('date +%Y%m%d%H%M') %}
{% if salt['cmd.run']('ls -lt /home/project_name/ | wc -l') == 2 %}
<STATE>
{% endif %}
所以,问题是: 我可以定义“/home/project_name/”之类的变量,比如{{old_stable},放在文件的顶部吗
在if语句中插入变量不起作用
示例(不工作)
{% set project = '/home/project_name' %}
{% if salt['cmd.run']('ls -lt {{ project }}') | wc -l') == 2 %}
<STATE>
{% endif %}
我的代码是
{% set project = 'test_web_tool' %}
{% if salt['cmd.run']('ls -lt /home/project-user/project 2>/dev/null| wc -l') != "0" %}
output:
cmd.run:
- names:
- echo "Rollback directory {{ project }}"
- cwd: /root
{% else %}
error_output:
cmd.run:
- names:
- echo "This is the last directory. Cant remove it"
- cwd: /root
{% endif %}
从jinja documentation:
因此,要使不起作用的示例起作用,您需要删除大括号,如下所示:
首先,你的代码片段是错误的,你没有考虑到单撇号的方式。注意你有一个少。
就单撇号而言,这是正确的版本:
其次,使用连接两个字符串的~运算符将变量值与命令连接起来。
以下是我在Jinja 2 2.7.2文档中发现的~operator:
所以这里是最终的正确版本:
您可能希望使用^{} operator 连接两个字符串:
相关问题 更多 >
编程相关推荐