Como controlar o Systemd com Ansible

Como controlar o Systemd com Ansible
Gerenciamento de serviços é um dos requisitos fundamentais para qualquer usuário. Com ferramentas como o SystemD ligando todas as principais distribuições Linux, é fundamental entender como gerenciar serviços.

Este tutorial ensinará você a usar o módulo Ansible Systemd para iniciar, parar e gerenciar serviços em qualquer host usando o serviço Systemd init.

Configurando Ansible

O primeiro passo é instalar e configurar o Ansible em seu sistema. Neste exemplo, corremos Ansible no Sistema Debian 11.

Comece atualizando os repositórios de software e instalando Ansible:

Atualização de sudo apt-get
sudo apt -get installible -y

Depois de instalado, podemos configurar os hosts remotos a serem gerenciados usando o nó de controle Ansible.

Configure o inventário Ansible

Abra o terminal e edite o arquivo de inventário, como mostrado no comando abaixo:

sudo vim/etc/Ansible/hosts

No arquivo de inventário do host, adicione o endereço IP dos hosts remotos que você deseja gerenciar usando Ansible.

Configure a tecla SSH

O próximo passo é criar um par de chaves ssh. Isso permite que você faça login no host remoto do seu nó de controle Ansible sem a necessidade de digitar uma senha.

Comece gerando uma chave SSH usando o comando:

$ ssh-keygen

Siga os avisos do comando ssh-keygen para gerar um par público e privado.

Depois de concluído, use o comando ssh-copy-id para copiar sua chave pública ssh para o host remoto.

Um comando de exemplo é como mostrado:

SSH-COPY-ID -I ~//.ssh/id_rsa.pub [email protected]

Substitua o nome de usuário e a senha pelo usuário remoto do host remoto e endereço IP.

Em seguida, digite a senha para fazer login no host remoto e fazer upload do seu par de chaves ssh.

Depois de concluído, SSH no host remoto e você estará conectado sem um prompt de senha.

Gerenciando serviços com Systemd

Para gerenciar os serviços em um host remoto usando o módulo Systemd, verifique se o Systemd Service e o System Manager gerenciam o host remoto.

O módulo Systemd faz parte do núcleo Ansible e está disponível em todas as instalações Ansible por padrão.

Vejamos alguns exemplos de usar o módulo Systemd para gerenciar serviços nos hosts remotos.

Serviços de partida

O módulo Systemd em Ansible é direto para usar. Por exemplo, para iniciar um serviço, passe o nome do serviço e o estado que você deseja que seja, neste caso, iniciado.

O manual de exemplo a seguir mostra como iniciar um serviço usando o módulo Systemd.

---
- Nome: Ansible Start Service
Hosts: todos
Gather_facts: Verdadeiro
tarefas:
- Nome: Inicie um serviço com Systemd
Systemd:
Nome: Apache2
Estado: começou

O manual de exemplo acima iniciará o servidor HTTP Apache2 usando o Systemd.

Garantir que o serviço de destino seja instalado e gerenciado pelo Systemd no host remoto é bom para evitar erros.

Se o serviço não existir, Ansible apresentará um erro, como mostrado na captura de tela de exemplo abaixo:

Parada de serviços

Ao interromper os serviços, altere o parâmetro de estado para parado, conforme mostrado no manual de exemplo abaixo:

---
- Nome: Ansible Stop Services
Hosts: todos
Gather_facts: Verdadeiro
tarefas:
- Nome: Pare um serviço com Systemd
Systemd:
Nome: Apache2
Estado: parou

Depois de executado com sucesso, o serviço de destino no host remoto será interrompido.

Recarregar os serviços

Para recarregar um serviço usando o Systemd, defina o estado para recarregar. É bom saber que você pode usar o nome completo do serviço ou curto, como fizemos em playbooks anteriores.

Por exemplo:

---
- Nome: Ansible Recarregue um serviço
Hosts: todos
Gather_facts: Verdadeiro
tarefas:
- Nome: Recarregar os Serviços com Systemd
Systemd:
Nome: nginx.serviço
Estado: Recarregado

O exemplo acima recarregará o serviço Nginx, conforme aprovado no manual.

Ativar serviços

Nos casos em que você precisa de um serviço para ser iniciado à medida que o sistema inicializa, você precisa garantir que o serviço seja ativado.

O módulo Ansible Systemd fornece o parâmetro ativado, que você pode usar para permitir que um serviço inicie na inicialização do sistema.

Considere o manual de exemplo mostrado abaixo:

---
- Nome: Ansible Ativar serviço
Hosts: todos
Gather_facts: Verdadeiro
tarefas:
- Nome: Ativar serviço nginx
Systemd:
Nome: nginx.serviço
ativado: true
Mascarado: não

O manual acima permite o serviço nginx e garante que ele não seja mascarado.

Gerenciar vários serviços

Você também pode usar o parâmetro with_items para gerenciar vários serviços. Por exemplo, para iniciar vários serviços ao mesmo tempo, podemos criar um manual como:

---
- Nome: Ansible Start Services
Hosts: todos
Gather_facts: Verdadeiro
tarefas:
- Nome: Inicie esses serviços
Systemd:
Nome: "item"
Estado: começou
with_items:
- Apache2
- mysql
- Redis-Server

O manual de exemplo acima deve reiniciar os serviços no bloco With_items.

Fechamento

Este guia mostra como gerenciar serviços em hosts remotos usando o módulo Systemd em Ansible.

Obrigado pela leitura!