0
我正在使用group_vars這樣定義一個變量在Jinja2的模板文件中獲取變量 「ENV」 的價值:Ansible Jinja2的字符串比較
env: "{{ defined_variable.split('-')[0] }}"
env
可能的三個值可能是abc
,def
,xyz
。
在我想使用服務器的URL,其可能的值我已經內defaults/main.yml
定義爲這個值的基礎:
server_abc: https://xxxx.xxx.com
server_def: https://xxxxx.xxx.com
server_xyz: https://xxxx.xxx.com
在Jinja2的模板,我試圖做的事:
{% if 'abc' == "{{env}}" %}
serverURL: '{{ server_abc }}'
{% elif 'def' == "{{env}}" %}
serverURL: '{{ server_def}}'
{% elif 'xyz' == "{{env}}" %}
serverURL: '{{ server_xyz }}'
{% else %}
ServerURL: 'server Url not found'
{% endif %}
但是,即使env
的值爲abc
,def
或xyz
,它總是結束定義ServerURL = "server URL not found"
。
如果我試圖替換Jinja2的模板ENV(硬編碼),如下面的條件並不滿足於真:
{% if 'abc' == "abc" %}
serverURL: '{{ server_abc }}'
所以這意味着我的語法是正確的,但的"{{env}}"
在運行時的值未評估。
任何建議我能做些什麼來解決這個問題?
即使在從env中移除大括號之後,它仍然在服務器URL上找不到結果 –
如果我使用組vars中的任何其他變量,表達式在匹配條件下的計算結果爲true,但env變量的填充方式相同jinja teamplate文件的表達式爲: - env:「{{defined_variable.split(' - ')[0]}}」 –
如果'abc'==我可以通過將條件語句作爲 來達到目的if %== defined_variable.split(' - ')[0]%} serverURL:'{{server_abc}}' –