Ansible 如何创建可重复使用的“;功能“;由具有不同参数/变量的剧本中可以多次调用的任务组成?

Ansible 如何创建可重复使用的“;功能“;由具有不同参数/变量的剧本中可以多次调用的任务组成?,ansible,Ansible,我有一系列的任务,我发现自己经常在我的剧本中重复 假设我有一组三个任务,需要按顺序执行多次,但使用不同的参数或变量。必须先完成第一个变量的任务,然后才能运行第二个变量的任务,依此类推。大概是这样的: #为Var 1运行三个任务 -名称:变量1的任务1 外壳:| -名称:变量1的任务2 外壳:| -名称:变量1的任务3 外壳:| #对Var 2再次执行相同的任务 -名称:Var 2的任务1 外壳:| -名称:Var 2的任务2 外壳:| -名称:Var 2的任务3 外壳:| 如何将这三个任务集绑

我有一系列的任务,我发现自己经常在我的剧本中重复

假设我有一组三个任务,需要按顺序执行多次,但使用不同的参数或变量。必须先完成第一个变量的任务,然后才能运行第二个变量的任务,依此类推。大概是这样的:

#为Var 1运行三个任务
-名称:变量1的任务1
外壳:|
-名称:变量1的任务2
外壳:|
-名称:变量1的任务3
外壳:|
#对Var 2再次执行相同的任务
-名称:Var 2的任务1
外壳:|
-名称:Var 2的任务2
外壳:|
-名称:Var 2的任务3
外壳:|
如何将这三个任务集绑定为一个类似函数的东西,可以使用不同的参数或变量多次调用

使用我通过
include_role
调用的角色是否可以最好地实现这一点


看来,
import\u role
是错误的解决方案,因为它是在运行剧本时解析的,对吗?

您可以使用
include\u role
调用公共函数和
vars
为公共角色提供参数。如果有条件地需要,您也可以使用
when
条件调用函数。此外,要公开任务中创建的寄存器,以便进一步执行剧本,您可以在包含角色时使用
public:yes

下面是一个调用名为
common\u role
的角色的示例,该角色使用两个参数
argument\u 1
argument\u 2
,这两个参数将始终被调用(
true
),寄存器将在整个播放过程中公开

-name:“调用公共角色”
包括以下角色:
名称:公共_角色
公众:是的
变量:
论点1:“foo”
论点2:“酒吧”
时间:对
现在可以使用不同的参数集再次调用相同的角色(
common\u role

-name:“调用公共角色”
包括以下角色:
名称:公共_角色
公众:是的
变量:
论点1:“嘿”
论点2:“那里”
时间:对

更多阅读:

谢谢您的回答。我不确定我是否理解的一部分是关于使用
public
公开“寄存器”的部分。在这种情况下,我不熟悉术语“寄存器”。“寄存器”是否指角色可用的变量集?默认情况下,它们是否为角色专用,以便设置
vars
不会对包含的角色产生影响,除非
public
设置为“yes”?如果正确,寄存器就像变量一样。默认情况下,如果您在寄存器中存储了某些内容,则它们的作用域仅限于该角色。现在,如果您试图在下一个角色或游戏的剩余部分访问这些变量/寄存器,那么它们将不可用。这就是图中出现的
public:true
。您可以在官方文档中阅读更多内容,网址为