Ansible, lineinfile 모듈과 함께 사용할 특정 정규식 패턴을 얻으려고 시도 중

Ansible, lineinfile 모듈과 함께 사용할 특정 정규식 패턴을 얻으려고 시도 중

위의 질문에 따라: "Ansible, lineinfile 모듈과 함께 사용할 특정 정규식 패턴을 얻으려고 합니다."

본질적으로 저는 두 번의 별도 플레이가 아닌 한 번의 플레이에서 작동하도록 노력하고 있으며 이를 위해서는 정규식이 필요합니다. sed에서 작동하는 몇 가지 변형을 시도했지만 여기서는 작동하지 않는 것 같습니다. 어쩌면 내가 미쳤을 수도 있습니다. 내가하려는 일의 예는 다음과 같습니다.

  - name: Change file contents on CentOS and Redhat servers.
    lineinfile:
    dest: /etc/blah/randomfile
    regexp: '^ThisValueHere|^#ThisValueHere'
    line: 'ThisValueHere no'
    when: (ansible_distribution == "CentOS")  or (ansible_distribution == "RedHat")

(예, 잘못된 yml 구문은 무시하세요. 실제 플레이북에서는 괜찮습니다.)

기본적으로 (ThisValueHere, OR, #ThisValueHere)로 시작하는 줄을 일치시킨 다음 해당 줄을 다음으로 바꾸고 싶습니다. (ThisValueHere no)

그러나 제대로 작동하지 않는 것 같습니다. 아마도 정규 표현식에 대해 자세히 살펴봐야 할 것 같습니다. 어쨌든 누구든지 제안 사항이 있으면 크게 감사하겠습니다!

또한 ansible에서 정규식을 성공적으로 사용하기 위한 "핵심"을 제공하는 링크가 있다면 그것도 매우 도움이 될 것입니다.

답변1

작업과 함께 작동 replace하지만 lineinfile제공하지 않습니다.여러 줄파이썬 정규식.

- name: Change file contents on CentOS and Redhat servers. replace: dest: /etc/blah/randomfile regexp: '^(#?ThisValueHere)' replace: 'ThisValueHere no' when: (ansible_distribution == "CentOS") or (ansible_distribution == "RedHat")

관련 정보