
몇 개의 DNS 영역을 관리하려면 ansible을 사용해야 합니다. 우리는 아무런 문제 없이 플레이북과 일부 템플릿을 사용합니다. 그러나 영역의 일련 번호는 최종 사용자가 수동으로 수정하므로 업데이트하는 것을 잊어버리는 경우가 많습니다.
따라서 영역 파일에서 현재 일련 번호를 구문 분석한 다음 업데이트(YYYMMMDDXX 형식)하는 작업을 만들고 싶습니다.
현재 나의 주요 관심사는 현재 연재물을 얻는 방법입니다. 현재 작업이 있습니다.
- name: Get current serial in zone file
lineinfile:
path: "{{ bind_zone_file }}"
regexp: "\s*(\d{10})\s*\;Serial"
register: current_serial
물론 예상대로 작동합니다. 그러나 많은 작업을 수행해야 하기 때문에 별로 도움이 되지 않습니다.
내 질문은 다음과 같습니다
정규식의 \1 부분만 어떻게 등록합니까?
답변1
이것은 약간 우회적인 방법일 수도 있지만 비슷한 필요성이 있었습니다. 필터를 사용했어요. 이를 시나리오에 적용하면 다음과 같습니다.
- name: Get current serial in zone file, in raw form
lineinfile:
path: "{{ bind_zone_file }}"
regexp: "\s*(\d{10})\s*\;Serial"
register: current_serial_raw
- name: Get current serial using a regex filter
set_fact:
current_serial: "{{ current_serial_raw | regex_search('\s*(\d{10})\s*\;Serial','\\1') | first }}"
\\1
흥미로운 부분은 regex_search에서 의 사용입니다 . | first
이 형식의 regex_search는 배열을 반환하기 때문에 필요합니다.
이것이 당신에게 더 많은 영감을 주는지 확인해 보세요.