You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求将Python脚本转换为Ansible模块并编写对应Playbook

将Python字符串分割脚本转为Ansible模块及Playbook实现

一、自定义Ansible模块实现

模块代码(fruit_parser.py)

#!/usr/bin/python
from ansible.module_utils.basic import AnsibleModule

def main():
    module_args = dict(
        fruit_string=dict(type='str', required=True)
    )

    module = AnsibleModule(
        argument_spec=module_args,
        supports_check_mode=True
    )

    fruit_str = module.params['fruit_string']
    # 分割字符串并去除每个元素的前后空格
    fruit_list = [item.strip() for item in fruit_str.split(',')]
    # 生成目标格式的列表
    result_list = [{"category": "fruit", "name": fruit} for fruit in fruit_list]

    module.exit_json(changed=False, fruits=result_list)

if __name__ == '__main__':
    main()

模块使用说明

  • 将该文件放在Ansible的模块目录(比如./library)下
  • 在Playbook中调用时,传入需要分割的字符串参数fruit_string

二、基于Ansible默认模块的Playbook实现

无需自定义模块,直接用Ansible内置过滤器和核心模块实现:

Playbook代码(parse_fruits.yml)

---
- name: 分割水果字符串并生成键值对
  hosts: localhost
  gather_facts: false
  vars:
    input_string: "apple ,banana ,cherry ,orange"
  tasks:
    - name: 分割字符串并处理空格
      set_fact:
        fruit_list: "{{ input_string.split(',') | map('strip') | list }}"

    - name: 生成目标格式的键值对列表
      set_fact:
        formatted_fruits: "{{ formatted_fruits | default([]) + [{'category': 'fruit', 'name': item}] }}"
      loop: "{{ fruit_list }}"

    - name: 输出结果
      debug:
        var: formatted_fruits

三、执行结果说明

两种方式最终输出的结果格式均符合要求:

[
    {"category": "fruit", "name": "apple"},
    {"category": "fruit", "name": "banana"},
    {"category": "fruit", "name": "cherry"},
    {"category": "fruit", "name": "orange"}
]

内容的提问来源于stack exchange,提问作者Palani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:17:50