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

如何用Ansible的set_fact将服务器列表拼接为指定格式URI字符串

使用Ansible set_fact实现服务器清单格式转换

实现思路

  • 先将服务器列表按每2个元素为一组拆分
  • 对每组内的服务器名称进行格式转换,拼接成https://<server>:8000的形式,再用;连接同组的两个结果
  • 最后将所有分组结果用],连接,得到目标字符串

完整Playbook示例

- name: Convert servers list to target format
  hosts: localhost
  vars:
    servers:
      - server01
      - server02
      - server03
      - server04
  tasks:
    - name: Generate target string with set_fact
      set_fact:
        target_string: >-
          {{ 
            servers | batch(2) 
            | map('map', 'regex_replace', '^(.*)$', 'https://\\1:8000') 
            | map('join', ';') 
            | join('],') 
          }}
    
    - name: Verify the result
      debug:
        var: target_string

关键过滤器说明

  • batch(2):将原服务器列表拆分为每2个元素一组的子列表,输出为[['server01','server02'], ['server03','server04']]
  • map('map', 'regex_replace', ...):嵌套map操作,先对每个子列表内的服务器名称做正则替换,转换成带协议和端口的URL格式
  • map('join', ';'):将每个子列表内的两个URL用;连接,得到单个分组的字符串
  • join('],'):将所有分组字符串用],连接,生成最终目标格式

执行该Playbook后,target_string的取值即为:https://server01:8000;https://server02:8000],https://server03:8000;https://server04:8000


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:11:38