0
所有文件被Ansible劇本只添加角色依存變量
# roles/a/defaults/main.yml
test: Role A
# roles/a/tasks/main.yml
- name: Things I dont want to run
debug: msg="Not expected"
# hosts
host-1 host-1 ansible_connection=local test=Override
# test.yml
- hosts: all
roles:
- a # I only need the variable
tasks:
- name: action
debug: var=test # Expected Override
我怎樣才能做到這一點?
我想過這個
roles/
a-var # only include defaults variable definition
a # depends on a-var
b # depends on a-var, but do not run role a's task
的繁瑣類,但我認爲這可能是唯一的方式來解決。
爲什麼我想這是我不希望用戶關心太多的文件(group_vars,host_vars,extra_vars
),他們不知道可行的,我必須儘可能簡單地部署我們的系統,他們需要的唯一的東西在乎的是清單文件,這樣
host-1
host-2
[a]
host-1 port=1234
[b]
host-2 # use default port defined in role
[all:vars]
install_path=/opt # override the default path
但爲了加載變量是
- 角色默認
- 庫存瓦爾
- 庫存group_vars
- 庫存host_vars
- 劇本group_vars
- 劇本host_vars
- 主機事實
- 註冊瓦爾
- set_facts
- 發揮瓦爾
- 發揮vars_prompt
- 發揮vars_files
- 角色,包括瓦爾
- 塊瓦爾(僅適用於塊任務)
- 任務瓦爾(僅適用於任務)
- 額外的增值經銷商(總是贏優先)
這是很難爲這個組織,因爲我無法做到這一點,var文件將擊敗庫存配置。
- host: b
var_files:
# I hope this is just default and not take over inventory config
- roles/a/defaults/main.yml
tasks:
- debug: var=install_path # become default not custom's
我也得到了很多默認瓦爾像'A = 1,B =「{{ }}/{{a}}「',我會嘗試'when:False',並使用'default'過濾器替換一些默認值,謝謝。 – wener
我可以在'角色依賴關係中執行'錯誤'嗎? – wener
從來沒有嘗試過,但我不明白爲什麼這不應該工作。 – udondan