如何在ansible中将列表转换为列表列表
我有一个列表并将拆分为列表列表,请查找以下示例如何在ansible中将列表转换为列表列表,ansible,Ansible,我有一个列表并将拆分为列表列表,请查找以下示例 List: ['sk','bk', 'ab','4',,'5',6','ku','in'] Expected output: [ [sk','bk', 'ab','4'], ['5',6','ku','in] ] 注: 如果列表包含12个元素,则预期输出应有3个列表 你能知道怎么用ansible做吗 提前感谢,, Senthil有更多的选择 使用Jinja过滤器。比如说 -hosts:localhost 变量: 列表:['sk','bk','
List: ['sk','bk', 'ab','4',,'5',6','ku','in']
Expected output:
[
[sk','bk', 'ab','4'],
['5',6','ku','in]
]
注:
如果列表包含12个元素,则预期输出应有3个列表
你能知道怎么用ansible做吗
提前感谢,,
Senthil有更多的选择
-hosts:localhost
变量:
列表:['sk','bk','ab','4','5','6','ku','in','12','34','56','78']
任务:
-调试:
msg:{List | batch(4)| List}
给予
“msg”:[
[
“sk”,
“bk”,
“ab”,
"4"
],
[
"5",
"6",
“ku”,
“在”
],
[
"12",
"34",
"56",
"78"
]
]
-hosts:localhost
变量:
列表:['sk','bk','ab','4','5','6','ku','in','12','34','56','78']
列表长度:{{List}长度}
步骤:4
任务:
-调试:
msg:{List[split0 | int:split1 | int]}
变量:
split0:{{ansible_loop.previitem}默认值(0)}”
split1:“{{ansible_loop.last}三元(列表长度,项目)}”
循环:{range(Step,List|lenght | int+Step,Step){List}
回路控制:
延长:是的
给予
“msg”:[
“sk”,
“bk”,
“ab”,
"4"
]
“味精”:[
"5",
"6",
“ku”,
“在”
]
“味精”:[
"12",
"34",
"56",
"78"
]
shell>cat filter\u plugins/list\u methods.py
def列表分割周期(l,p):
拆分列表=[]
对于范围(p,len(l)+p,p)内的i:
如果i==p:
拆分列表。追加(l[0:p])
如果i>len(l):
split_list.append(l[j:])
其他:
split_list.append(l[j:i])
j=i
返回拆分列表
类FilterModule(对象):
def过滤器(自):
返回{
“列表分割周期”:列表分割周期,
}
然后是剧本
-hosts:localhost
变量:
列表:['sk','bk','ab','4','5','6','ku','in','12','34','56','78']
步骤:4
任务:
-设定事实:
my_list:{{list}list_split_period(Step)}
-调试:
我的清单
给予
myu列表:
--sk
-bk
-ab
- '4'
- - '5'
- '6'
-库
-在
- - '12'
- '34'
- '56'
- '78'
为方便起见,该插件可供选择。Hi Vladimir,感谢您的回复,我希望,您的逻辑能够正常工作,并且符合fullfil要求,扩展循环变量仅适用于ansible版本2.9,但我在我的组织中使用ansible版本2.4.2,升级到ansible版本不是我能控制的。到时候你需要一个自定义插件。这将更有效。是的,我将开发同样的模块,并将利用它我的yaml。这是一个很好的东西,并且从您那里学到了扩展循环变量。谢谢你的时间,我已经用插件更新了答案。请参阅代码链接。两者都像champion一样工作,并在我的家用机器上进行了测试,我将结合我的要求,感谢您宝贵的时间