0
我正在研究一個Ansible操作手冊,在模板中,我需要用一個字典列表來替換一個變量。Ansible模板中的值替換
任務文件如下:
vars:
locations:
- context: "/rest"
server: "http://locahost:8080;"
- context: "/api"
server: "http://localhost:9090;"
tasks:
- name: testing the template
template:
src: ./conf.j2
dest: /tmp/test.conf
with_items: '{{ locations }}'
我需要替換locations
在模板中。因此,模板如下:
location /rest
proxy_pass http://localhost:8080
location /api
proxy_pass htpp://localhost:9090
,但我有在獲得替代正確的硬盤時,任何人可以在指出幫我在哪裏:
{% for location in item %}
location {{ location['context'] }}
proxy_pass {{ location['server'] }}
{% endfor %}
如下我所期待的輸出犯了錯誤。
我得到的錯誤是
failed: [127.0.0.1] (item={u'context': u'/rest', u'server':
u'http://localhost:9090;'}) => {"failed": true, "item": {"context":
"/rest", "server": "http://localhost:8080;"}, "msg":
"AnsibleUndefinedVariable: 'context' is undefined"}
failed: [127.0.0.1] (item={u'context': u'/api', u'server':
u'http://locahost:8080;'}) => {"failed": true, "item": {"context":
"/api", "server": "http://locahost:9090;"}, "msg":
"AnsibleUndefinedVariable: 'context' is undefined"}
在標題和第一段中提到的「替代」到底在哪裏?我在這裏看不到任何替代品。另外,你得到了什麼結果,以及在你的預期結果中分號發生了什麼? – techraf
抱歉,混亂,替換是在模板中。我在期待輸出如問題中提到的那樣,經過多次調整代碼後,我沒有得到正確的輸出。要麼執行中出現錯誤,要麼模板中的值不會被替換 – Bidyut
根據SO規則,您應該發佈確切的錯誤消息或描述。在這種形式下,問題應該被關閉。 – techraf