据我所知,有三种方法可以调用另一个角色:
1)在包含role: rolename
的剧本中
2)在角色本身的 rolename / meta / main.yml 文件中,并带有
dependencies:
- { role: rolename2 }
3)
- import_role:
name: anotherrolename
我想我也知道这些区别: 2号(元方法)将在任务中指定的内容之前执行 rolname2 。 3号= https://docs.ansible.com/ansible/2.4/import_role_module.html
首先,我的问题不是这两种方法之间的区别(请随时告诉我们),但我想知道连接两个(或更多)角色的最佳实践是什么。方法1、2或3?
答案 0 :(得分:1)
如果您有一个非常简单的项目,希望在所有节点上以相同的顺序运行相同的角色,请继续并按顺序在剧本中对其进行调用。
如果您有一些更复杂的依赖关系,并且只想管理彼此依赖的角色,那么就我所知,meta依赖关系方法就可以了。
除非您需要 function PDF() {
SpreadsheetApp.flush();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var gid = sheet.getSheetId();
var pdfOpts = '&size=letter&fzr=false&portrait=true&fitw=false&gridlines=false&scale=1&top_margin=0.17&bottom_margin=0.17&left_margin=0.1&right_margin=0.1&printtitle=false&sheetnames=false&pagenum=UNDEFINED&attachment=false&gid='+gid;
var row2 = 66;
var printRange = '&c1=0' + '&r1=0' + '&c2=15' + '&r2='+row2; // B2:APn
var url = ss.getUrl().replace(/edit$/, '') + 'export?format=pdf' + pdfOpts + printRange;
var app = UiApp.createApplication().setWidth(300).setHeight(100);
app.setTitle('Print this sheet');
var link = app.createAnchor('Download PDF', url).setTarget('_new');
app.add(link);
ss.show(app);
};
的其他功能,例如在另一个任务列表中使用不同的参数多次运行角色,否则元数据依赖关系将是首选,因为{{ 1}}是在撰写in preview时。
答案 1 :(得分:0)
角色“依赖项” 是处理此问题的事实上的标准方法。
请参阅:https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#role-dependencies:
---
dependencies:
- role: wheel
vars:
n: 1
- role: wheel
vars:
n: 2
- role: wheel
vars:
n: 3
- role: wheel
vars:
n: 4
如果您需要较低级别的解释,请提供您的特定用例。