2014-11-21 54 views
0

我的方案包括兩個劇本的:是否可以使用可靠的角色來設置_passed_變量值?

  • 劇本P1採用兩個角色A和B,
  • 劇本P2僅使用作用A.

現在,角色A和B的需要執行幾個額外的步驟,執行相同的操作,但導致不同的變量。例如:

# role A 
- name: get the current_path 
    shell: pwd 
    register: A_path_variable 

# role B, in a separate file 
- name: get the current_path 
    shell: pwd 
    register: B_path_variable 

所需的操作是相同的 - 但結果變量名稱是不同的。

Ansible中是否有一些人告訴角色使用特定的變量?例如:可以將「shell:pwd」分隔爲一個新角色,然後要求它使用「specific_variable」來註冊最終結果。

回答

0

經過調查 - 事實證明,變量解析只是基於字符串。

角色A和B在單個劇本中執行,都調用角色UTIL,期望它寫入不同的變量。角色UTIL應處理一些數據並將結果寫入變量。

角色答:

... 
vars: 
    output_var_name: my_variable_A 
roles: 
    - UTIL 

角色B:

... 
vars: 
    output_var_name: my_variable_B 
roles: 
    - UTIL 

UTIL,到底

- name: output result 
    set_fact: 
    "{{ output_var_name }}={{ local_variable }}" 

結果:my_variable_B和my_variable_A都相應地設置。我的理解是,「變數」在「角色」之前被執行,因此它可以在適當的時候改變,正確的價值。

0

您可以使用角色參數:

角色/ UTIL:

- shell: pwd 
    register: util_output 

劇本:

roles: 
    - util 
    - { role: role_a, my_variable_a: "{{util_output}}" } 
    - { role: role_b, my_variable_b: "{{util_output}}" } 
相關問題