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!