2017-01-23 94 views
0

我試圖評估role_path變量的值,以便在其他角色中將其用作參考點。但問題是,當我的變量用於另一個角色時,它具有另一個角色的價值,而不是何時聲明它。Ansible - 如何評估role_path變量

我通過使用當前變量值的echo命令並按照以下注冊輸出來解決此問題。

- name: get ansible base path from current role_path 
    command: echo {{ role_path }}/../../ 
    register: ansible_base_path_out 

- name: save ansible base path variable for future use 
    set_fact: 
    ansible_base_path: "{{ ansible_base_path_out.stdout }}" 

這是做到這一點的最佳方式還是有更好的雄辯解決方案?

+0

@techraf - 變量是'role_path',而不是'roles_path'。角色的末尾沒有's'。 'roles_path'給出一個列表,'role_path'只給出當前角色的路徑。 –

+0

@techraf我懇求不同 - 而'roles_path'給出一個列表,'role_path'只給出當前角色的路徑。 –

+0

我正在投票關閉這個問題作爲題外話,因爲「如何改善一個工作代碼」 - 問題是在StackOverflow的話題,而不應該發佈在代碼審查SE – techraf

回答

5

您可以放心地使用set_fact。在任務執行期間評估通過set_fact分配的變量(事實)。收縮你的代碼只有一個任務:

- name: save ansible base path variable for future use 
    set_fact: 
    ansible_base_path: "{{ role_path }}/../../" 

首先應用此角色,你會得到ansible_base_path其實貫穿整個劇本的執行不變。

+1

謝謝你,正在腦中褪色! –