Como usar Playbooks Ansible para automatizar tarefas complexas em vários servidores remotos - Parte 2

Como usar Playbooks Ansible para automatizar tarefas complexas em vários servidores remotos - Parte 2

No artigo anterior desta série Ansible, explicamos que Ansible é uma ferramenta sem agente que permite gerenciar de maneira rápida e eficiente várias máquinas (também conhecidas como nós - e executar implantações também) a partir de um único sistema.

Use Playbooks Ansible para automatizar tarefas complexas no Linux - Parte 2

Depois de instalar o software na máquina do controlador, criando as chaves para login sem senha e copiá -las para os nós, é hora de aprender a otimizar o processo de gerenciamento de esses sistemas remotos usando Ansible.

Ambiente de teste Ansible

Ao longo deste artigo, assim como o próximo, usaremos o seguinte ambiente de teste. Todos os hosts são CENTOS 7 caixas:

Máquina de controlador (onde Ansible é instalado): 192.168.0.19 Node1: 192.168.0.29 Node2: 192.168.0.30 

Além disso, observe que ambos os nós foram adicionados na seção de servidores da web do local /etc/Ansible/hosts arquivo:

Arquivo de host Ansible

Dito isto, vamos começar com o tópico em questão.

Apresentando Playbooks Ansible

Conforme descrito no guia anterior, você pode usar o Ansible utilidade para executar comandos em nós remotos da seguinte forma:

# Ansible -a "/bin/hostnamectl -estático" WebServers 
Ansible: Run Comandos no Remote Linux

No exemplo acima, nós corremos hostnamectl -estático sobre node1 e node2. Não é preciso muito tempo para perceber que esse método de execução de tarefas em computadores remotos funciona bem para comandos curtos, mas pode rapidamente se tornar onerosa ou bagunçada para tarefas mais complexas que exigem mais parâmetros de configuração bem estruturados ou interações com outros serviços

Por exemplo, configurar e configurar WordPress Em vários hosts - que abordaremos no próximo artigo desta série). É aqui que Playbooks entrar em cena.

Simplesmente coloque, Playbooks são arquivos de texto simples escritos no Yaml formato e conter uma lista com itens com um ou mais pares de chave/valor (também conhecido como “cerquilha"Ou um"dicionário”).

Dentro de cada manual, você encontrará um ou mais grupo de hosts (cada um desses grupos também é chamado de jogar) onde as tarefas desejadas devem ser executadas.

Um exemplo dos documentos oficiais nos ajudará a ilustrar:

1. anfitriões: Esta é uma lista de máquinas (conforme /etc/Ansible/hosts) onde as seguintes tarefas serão executadas.

2. remote_user: conta remota que será usada para executar as tarefas.

3. vars: variáveis ​​usadas para modificar o comportamento do (s) sistema (s) remoto (s).

4. As tarefas são executadas em ordem, uma de cada vez, contra todas as máquinas que correspondem aos hosts. Dentro de uma peça, todos os anfitriões terão as mesmas diretrizes de tarefas.

Se você precisar executar um conjunto diferente de tarefas associadas para um host específico, crie outra peça no atual Livro de cantadas (Em outras palavras, o objetivo de uma peça é mapear uma seleção específica de hosts para tarefas bem definidas).

Nesse caso, inicie uma nova jogada adicionando a diretiva hosts na parte inferior e começando de novo:

--- - Hosts: WebServers Remote_User: ROOT VARS: variável1: value1 variável2: value2 REMOTE_USER: Tasks da raiz: - Nome: Descrição Para Task1 Task1: Parameter1 = Value_For_Parameter1 Parameter2 = Value_For_Parameter2 - Nome: Descrição 1 Task1: parameter1 = value___ameter1 Nome: Descrição Para o manipulador 1 Serviço: nome = name_of_service state = service_status - hosts: dbservers remote_user: root vars: variável1: value1 variável2: value2… 

5. Os manipuladores são ações que são acionadas no final da seção de tarefas em cada jogo e são usadas principalmente para reiniciar serviços ou reiniciar reinicializações nos sistemas remotos.

# mkdir/etc/Ansible/Playbooks 

E um arquivo nomeado apache.yml dentro de lá com o seguinte conteúdo:

--- - Hosts: Web Servers VARS: HTTP_PORT: 80 MAX_CLIENTES: 200 REMOTE_USER: ROOT TASKS: - Nome: Verifique se o Apache está na versão mais recente yum: pkg = httpd state = mais recente - nome: substituir Índice de padrão.cópia do arquivo html: src =/static_files/índice.html dest =/var/www/html/mode = 0644 Notify: - reinicie o apache - nome: verifique se o apache está em execução (e habilitando -o no boot) Serviço: name = httpd state = iniciado ativado = sim manipuladores: - nome: reiniciar apache Serviço: Nome = Httpd State = reiniciado 

Segundo, crie um diretório /static_files:

# mkdir /static_files 

onde você armazenará o costume índice.html arquivo:

       

Apache foi iniciado neste host via Ansible


Trazido a você por Tecmint.com

Dito isto, agora é hora de usar este manual para executar as tarefas mencionadas anteriormente. Você notará que o Ansible passará por cada tarefa por host, um de cada vez, e relatará o status de tais tarefas:

# Ansible-playbook/etc/Ansible/Playbooks/Apache.yml 
Ansible: automatize tarefas no Linux

Agora vamos ver o que acontece quando abrimos um navegador e apontamos para 192.168.0.29 e 192.168.0.30:

Ansible: confirme tarefas automatizadas

Vamos um passo adiante e parar manualmente e desativar o Apache node1 e node2:

# SystemCtl Stop httpd # SystemCtl Desativar httpd # SystemCtl IS-Attive Httpd # Systemctl Is-habilitado Httpd 
Pare e desative o serviço Apache

Em seguida, corra novamente,

# Ansible-playbook/etc/Ansible/Playbooks/Apache.yml 

Desta vez, a tarefa relata que o servidor da Web Apache foi iniciado e ativado em cada host:

Ansible: Iniciar o servidor da web

Por favor, considere o exemplo acima como um vislumbre do poder de Ansible. Embora essas sejam tarefas relativamente fáceis quando executadas em um pequeno número de servidores, ele pode se tornar muito tedioso e demorado se você precisar fazer o mesmo em várias (talvez centenas) de máquinas.

Resumo

Neste artigo, descrevemos como executar comandos e executar tarefas complexas em vários hosts remotos simultaneamente usando Ansible. A documentação oficial e o repositório do GitHub fornecem muitos exemplos e guias sobre como usar o Ansible para alcançar quase qualquer tarefa imaginável.

Ao começar a aprender a automatizar tarefas em hosts Linux remotos usando Ansible, gostaríamos de ouvir seus pensamentos. Perguntas, comentários e sugestões também são sempre bem -vindos, portanto, entre em contato conosco usando o formulário abaixo a qualquer momento.