Como usar o Ansible LineInfile

Como usar o Ansible LineInfile
Ansible é uma ferramenta de automação gratuita e de código aberto capaz de gerenciar um ou centenas de hosts remotos. Seu principal uso é gerenciar configurações, implantando servidores remotos, gerenciando aplicativos e serviços e muito mais. Ele também funciona em sistemas Unix e UNIX, bem como no Windows.

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:

  1. Um nó de controle Ansible
  2. Um host remoto para gerenciar
  3. Acesso SSH ao host remoto

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!