考慮播放設置,如下所示:怎樣包括很多瓦爾進入Ansible角色
- name: Provision the stage platform
hosts: my-stage-host
vars_files:
- ../../env_vars/base.yml
- ../../env_vars/stage.yml
roles:
- {role: 'some.ThirdpartyRole'}
- {role: 'My.Role', name: 'app1', somevar: 'var2', dict: {'var1': 'var2'}, list: [{'var1': 'var2'}]}
- {role: 'My.Role', name: 'app2', somevar: 'var2', dict: {'var1': 'var2'}, list: [{'var1': 'var2'}]}
這種設置是罰款和預期(雖然我真的不喜歡的數據結構)中的所有的作品。 。問題是My.Role有許多角色實例特定的變量,列表和字典等等,遺憾的是它們不能在defaults/main.yml
中設置(因爲它們是特定於當前角色實例的),並且因爲我希望能夠使用它在一臺服務器上多次作用我需要隔離變量。
,我將能夠..
roles:
- My.Role
include: ../../varsA.yml
就像使用任務..但是從我的文檔和論壇至今讀,那是不可能的......
目前,我有我的角色有以下不理想的設置工作:
文件:group_vars /我-host.yml
apps:
name: 'something'
someList:
- item
...
someDict:
item: item
itemsList:
- item
...
name: 'somethingElse'
someList:
- item
...
someDict:
item: item
itemsList:
- item
...
文件:劇本/我-play.yml
...
roles:
- some.ThirdpartyRole
- My.Role
正如你可以看到它需要它的所有瓦爾從我group_vars定義的字典,並在角色中的每個任務使用with_items: myDict
,這使得子列表(除其他事情)有點噩夢的,是這樣的:
with_subelements:
- myDict
- subList
,我不能檢查的mydict.subList
的存在,而不是我到處都需要定義空瓦爾。
我希望我已經正確地解釋了我自己,我想知道是否有人在角色中使用很多角色的任何經驗,他們需要在劇本中多次使用,或角色/ var佈局上的任何其他指針。