Fora da caixa, Ansible tem muitas ferramentas e recursos. Um deles é o módulo LineInfile. Este módulo permite que você gerencie uma única linha dentro de um arquivo localizado em um host remoto.
Ele suporta funcionalidades como substituir o conteúdo em um arquivo, atualizar o conteúdo dentro de uma linha, adicionar conteúdo em uma linha e mais.
Este guia ilustrará como usar o módulo Ansible LineInfile para gerenciar arquivos em hosts remotos.
Requisitos
Para acompanhar o conceito deste tutorial, verifique se você possui os seguintes requisitos básicos:
Confirme se existe uma entrada específica
Para garantir que uma entrada específica esteja presente em um arquivo, podemos usar o módulo LineInfile e definir o cenário para apresentar.
Considere o manual de exemplo mostrado abaixo:
---
- Hosts: todos
Gather_Facts: Sim
Torne -se: sim
tarefas:
- Nome: Verifique se /etc /hosts contém 127.0.0.1 "
LineInfile:
Caminho: "/etc/hosts"
Estado: presente
linha: "127.0.0.1 "
check_mode: sim
Registro: Out
O exemplo acima verificará se a entrada existe no arquivo especificado e adicione -o se não existir.
Crie um arquivo e adicione uma nova linha
Podemos usar o módulo LineInfile para criar um arquivo e adicionar uma nova linha ao arquivo criado.
Considere o manual de exemplo mostrado abaixo:
---
- Hosts: todos
Gather_facts: Não
tarefas:
- Nome: Criar arquivo e adicionar linha
LineInfile:
dest:/home/ubuntu/exemplo.conf
Linha: esta é uma nova entrada no arquivo
Estado: presente
Criar: true
No manual de exemplo acima, usamos o parâmetro dest para especificar o caminho do arquivo.
Em seguida, usamos o parâmetro de linha para definir a linha para adicionar ao arquivo. Usamos isso em conjunto com o estado: parâmetro presente.
Finalmente, definimos o parâmetro Criar para True, que diz Ansible para criar o arquivo se ele existir.
Se você executar o manual duas vezes, ele não executará nenhuma ação, pois o arquivo e a linha especificados existem.
Adicione uma linha antes/depois de uma entrada
Para adicionar uma linha antes ou depois de uma entrada específica, você pode usar o insertAfter ou inserir parâmetros antes.
Dê uma olhada no exemplo mostrado abaixo:
---
- Hosts: todos
Gather_facts: Não
tarefas:
- Nome: Adicionar linha antes/depois
LineInfile:
caminho:/etc/apache2/apache2.conf
regex: '^Serverroot'
insertafter: '^#serverroot'
Linha: Serverroot "/etc/apache2"
Após a linha comentada, o módulo LineInfile adicionará a entrada do Serverroot "/etc/apache2".
Excluindo uma linha
Para remover uma entrada de um arquivo, defina o estado como ausente, conforme mostrado no manual de exemplo abaixo:
---
- Hosts: todos
Gather_facts: Não
tarefas:
- Nome: Exclua uma linha
LineInfile:
caminho:/etc/apache2/apache2.conf
regex: '^#serverroot'
estado: ausente
O exemplo acima usa uma expressão regular simples para corresponder à linha que começa com #Serverroot.
Comentando uma linha
Para comentar uma linha, use o parâmetro AnsibleInFile BackRefs. Dê uma olhada no manual de exemplo mostrado abaixo:
---
- Hosts: todos
Gather_facts: Não
tarefas:
- Nome: Exclua uma linha
LineInfile:
caminho:/etc/apache2/apache2.conf
linha 1'
regex: '^#Ouça 8080'
BackRefs: Sim
No exemplo acima, usamos uma expressão regular para corresponder à linha que desejamos comentar.
Em seguida, usamos o conteúdo da linha correspondente e adicionamos um personagem comentando.
Arquivo de backup antes de mudar
É bom garantir que você faça backup de uma cópia de seus arquivos antes de editá -los para facilitar a restauração de arquivos em caso de erros.
Para fazer backup de um arquivo usando o módulo LineInfile, podemos definir a opção de backup como true.
Considere o manual de exemplo abaixo:
---
- Hosts: todos
Gather_facts: Não
tarefas:
- Nome: Exclua uma linha
LineInfile:
caminho:/etc/apache2/apache2.conf
regex: '^#serverroot'
estado: ausente
Backup: Sim
Conclusão
O módulo Ansible LineInfile é benéfico ao modificar arquivos de configuração em hosts remotos usando playbooks Ansible.
Obrigado pela leitura!