Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ansible中将列表转换为列表列表_Ansible - Fatal编程技术网

如何在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有更多的选择

  • 使用Jinja过滤器。比如说
  • -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一样工作,并在我的家用机器上进行了测试,我将结合我的要求,感谢您宝贵的时间