考虑播放设置,如下所示:怎样包括很多瓦尔进入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布局上的任何其他指针。