我需要在jinja2的路径/etc/bind/example.com下的绑定文件中增加序列号。
示例如下:

$TTL    86400
@       3600    IN SOA  example.server.com. hostmaster.example.it. (
                     2019290603         ; Serial
////////////////////

我想要这个:
    2019290604         ; Serial


    2019290700         ; Serial

我需要Jinja2,因为我会用Ansible把它自动化。
我该怎么做?

最佳答案

下面的任务完成任务。

  vars:
    next_serial: '2019290604'
  tasks:
    - lineinfile:
        path: /etc/bind/example.com
        regexp: '(?!.*{{ next_serial }}.*)^(\s*)(\s\d*)(\s*;\s*Serial.*)$'
        line: '\1 {{ next_serial }}\3'
        backrefs: yes

regexp首先向前看,只有在下一个序列不存在时才匹配行。这使得任务具有等幂性。
与数字匹配的组(\s\d*)故意占用一个空格,并使第一个组缩短一个空格。“行:'\1{{…”通过分隔第一个组1并展开变量{{next{u serial},将空间添加回来。由于某些原因,'\1{{next_serial}}\3'不能按预期工作。

关于php - 如何使用jinja2在/etc/bind文件中增加Serial,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57004676/

10-14 08:48