Que tipo de alteraçao poderia ser feita no arquivo caso nao usemos o 'backrefs'? Alguém poderia dar um exemplo, por favor? Obrigado
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.