Que tipo de alteraçao poderia ser feita no arquivo caso nao usemos o 'backrefs'? Alguém poderia dar um exemplo, por favor? Obrigado
Que tipo de alteraçao poderia ser feita no arquivo caso nao usemos o 'backrefs'? Alguém poderia dar um exemplo, por favor? Obrigado
Olá, estudante. Tudo bem?
A ação lineinfile do Ansible é usada para garantir que uma linha específica esteja presente em um arquivo. O parâmetro backrefs, quando definido como yes, permite o uso de referências de grupos de captura do regexp na linha de substituição. Isso é útil quando você deseja substituir apenas uma parte de uma linha com base em um padrão regex.
No exemplo que você mencionou, o uso de backrefs não é necessário porque a substituição desejada é direta e não depende de capturar partes específicas da linha original. Portanto, se não usarmos backrefs, o Ansible simplesmente substituirá qualquer linha que corresponda ao padrão regexp com a linha especificada em line.
Por exemplo, se tivermos uma linha como ALLOWED_HOSTS = [] e queremos mudá-la para ALLOWED_HOSTS = ["*"], podemos usar a configuração sem backrefs:
path: /home/ubuntu/tcc/setup/settings.py
regexp: 'ALLOWED_HOSTS'
line: 'ALLOWED_HOSTS = ["*"]'
Neste caso, o Ansible procurará por qualquer linha contendo ALLOWED_HOSTS e a substituirá pela linha ALLOWED_HOSTS = ["*"].
Espero ter ajudado e bons estudos.
Fala Renan,
Obrigado pela resposta!
Deixa eu ver se entendi. Se pegarmos o exemplo abaixo:
path: /home/ubuntu/tcc/setup/settings.py
regexp: 'ALLOWED_(HO)STS'
line: 'ALLOWED_HOSTS = ["\1"]'
backrefs: yes
Teremos o resultado: ALLOWED_HOSTS = ["HO"]
Correto?
Olá, Estudante.
Sim. Quando backrefs: yes é usado, a referência \1 se refere ao primeiro grupo de captura definido no regexp. No seu exemplo:
path: /home/ubuntu/tcc/setup/settings.py
regexp: 'ALLOWED_(HO)STS'
line: 'ALLOWED_HOSTS = ["\1"]'
backrefs: yes
O resultado será:
ALLOWED_HOSTS = ["HO"]
Caso não utilizássemos backrefs, a substituição aconteceria de forma literal, e o Ansible substituiria toda a linha correspondente ao regexp pelo valor em line, sem reconhecer o grupo de captura (HO).
Fico à disposição. Abraços e bons estudos.