2015-11-19 92 views
0

的首要變量,我想知道什麼是定製在全球的裝機量Ansible角色(/etc/local/ansible)二手/壓倒一切的變量都組織衆多的劇本中使用的最佳實踐?Ansible - 全球安裝的角色

,這樣的角色可能包括defaults/main.yml以及在vars/變量。

需要在我的本地劇本全球安裝的角色後,它會自然地自定義這些變量。由於沒有直接訪問角色的目錄,我唯一的選擇是在group_vars/host_vars中覆蓋這些變量嗎?或者,也許直接在劇本中傳遞重要的變數,但這似乎不是一個好主意?

回答

0

諮詢docs on variable precedence。特別是,他們的狀態:

基本上,凡是進入「角色的默認值」(角色裏面的默認文件夾)是最可延展的覆蓋。角色的vars目錄中的任何內容都會覆蓋命名空間中該變量的以前版本。這裏要遵循的想法是,你在範圍內得到的越明確,命令行所帶來的優先級越高--e額外變量總是獲勝。主機和/或庫存變量可以贏得角色默認值,但不明確包括像vars目錄或include_vars任務。

因此,給定優先級列表,您應該找到變量,看起來最明智的地方。

注意優先規則Ansible版本1和2

0

角色瓦爾之間的差異並不意味着覆蓋。如果他們是,他們是(或應該)違約。變量只能由命令行傳遞的--extra-vars覆蓋。

0

你可以定義你想要在JSON/YAML文件覆蓋,並通過使用--extra-vars該劇本的變量。例如:ansible-playbook site.yml -i inventory --extra-vars @vars.json