Ansible, tentando obter um padrão regex específico para trabalhar com o módulo lineinfile

1

De acordo com minha pergunta acima: "Ansible, tentando obter um padrão específico de regex para trabalhar com o módulo lineinfile"

Essencialmente, estou tentando fazer com que funcione em uma única peça, em oposição a duas peças separadas, e para isso é necessário um regex. Eu tentei algumas variações que funcionariam com sed, mas elas não parecem funcionar aqui. Talvez eu seja louca. Exemplo do que estou tentando fazer está abaixo:

  - 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")

(Sim, ignore a sintaxe yml incorreta, está tudo bem no manual)

Basicamente, quero corresponder as linhas STARTING WITH: (ThisValueHere, OR, #ThisValueHere) e, em seguida, substituir uma dessas linhas pela linha: (ThisValueHere no)

No entanto, parece que não consigo que funcione corretamente, talvez eu realmente precise atualizar os materiais de regex. Em qualquer caso, se alguém tiver alguma sugestão que seria muito apreciada!

Além disso, se houver um link que possa ser fornecido às "chaves" para o uso bem-sucedido de regex ansible, isso também seria muito útil.

    
por Viscosity 13.12.2016 / 16:32

1 resposta

0

Funciona com a tarefa replace , lineinfile não fornece as multilinhas

- 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")

    
por 13.12.2016 / 17:43