如何使用Ansible为Jitsi配置文件中shard字段追加递增数字编号
Ansible配置调整方案
原代码问题说明
- path参数填写错误,额外拼接了
contains字符串,导致模块无法定位正确的配置文件 - 未实现编号判断、递增逻辑,只会固定将shard替换为shard-1,不符合动态递增需求
实现逻辑
- 第一步:读取目标配置文件内容
- 第二步:正则匹配提取所有shard后缀的编号,计算得到当前最大编号,无编号时默认取0
- 第三步:目标编号为当前最大编号+1,全局替换所有shard相关配置的编号
完整可运行配置片段
- name: 读取sip通信配置文件内容 slurp: path: /etc/jitsi/videobridge/sip-communicator.properties register: sip_config_content - name: 计算shard目标编号 set_fact: current_max_num: "{{ sip_config_content.content | b64decode | regex_findall('shard(?:-(\\d+))?\\.') | map('default', 0, true) | map('int') | max | default(0, true) }}" target_num: "{{ current_max_num | int + 1 }}" - name: 替换配置中的shard编号 replace: path: /etc/jitsi/videobridge/sip-communicator.properties regexp: 'shard(?:-\d+)?(?=\.)' replace: "shard-{{ target_num }}"
规则说明
正则中(?=\.)为正向预查规则,仅匹配后面紧跟.的shard字符串,避免误替换配置文件中其他位置(比如密码字段)随机出现的shard字符,匹配准确率更高。
内容的提问来源于stack exchange,提问作者Oleg
相关产品推荐
相关产品推荐

