2015-10-14 67 views
1

我Ansible任務自定義角色定義:如何將變量組合到新變量中?

- name: Connect to db 
    script: "shell.sh --url={{ db_conn }}" 

可變db_conn在劇本中定義:

vars : 
    db_host: "localhost" 
    db_port: 5432 
    db_conn: "http://{{ db_host }}:{{ db_port }}" 

Ansible終止與錯誤:

A variable inserted a new parameter into the module args. Be sure to quote variables if they contain equal signs (for example: "{{var}}").

+0

我似乎無法使用您所展示的內容重現此操作。你是如何設置你的劇本和角色的?你使用什麼版本的Ansible? – ydaetskcoR

+0

@ydaetskcoR同樣也有同樣的問題:) –

+0

1.9.3在mac os,node - CentOS 7 – Vyacheslav

回答

2

這是一個問題variable precedence。我猜你在你的角色的vars/main.yaml文件中定義了db_conn變量? 如果是,則db_conn被認爲是一個作用可變,並且具有更高的優先級比劇本瓦爾(不會被劇本被覆蓋瓦爾)。

當您想要覆蓋的變量創建角色時,請確保它們被定義爲defaults,以確保它們不僅被覆蓋,而且與其他人清楚地溝通,意圖讓他們被覆蓋。

爲防萬一你的文檔不夠用,here is the source code which defines variable precedence from github