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

Ansible 2.10 lineinfile模块regexp变量未解析致行删除失败

问题原因与解决办法

核心问题

你定义变量时,给list、gway、netw加了多余的前后空格(比如" {{ lookup(...) }} "这种写法),导致netw的实际值是" 172.16.25.1 "(前后带空格)。而lineinfile的regexp是严格匹配的,文件里的目标行没有这些空格,自然匹配不上,没法删除。

两种解决方式

方式一:去掉变量定义里的多余空格

直接把变量定义中的前后空格删掉,让变量值就是纯净的IP字符串:

- name: read network
  hosts: localhost
  vars:
    CUSTOMER: "{{ CUST | default('me') }}"
    list: "{{ lookup('file', 'networks').split('\n')[0] }}"
    gway: "{{ list.split(' ')[2] }}"
    netw: "{{ list.split(' ')[1] }}"
  tasks:
    - name: test1
      lineinfile:
        path: 'networks'
        state: absent
        regexp: "{{ netw }}"
    - debug:
        var: gway
    - debug:
        var: netw

方式二:用trim过滤器清除空格

如果不想改变量定义,在引用netw时加上trim过滤器,自动去除前后空格:

- name: test1
  lineinfile:
    path: 'networks'
    state: absent
    regexp: "{{ netw | trim }}"

这样就能让正则匹配到文件里的目标行,正常执行删除操作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:12:39