Por: Adelmo da Silva – consultor de sistemas
Uma das principais responsabilidades de um profissional de T.I é manter os ambientes actualizados e/ou instalar novos recursos para que tudo funcione perfeitamente. Isso permite que ambientes de desenvolvimento, homologação e produção estejam com os mesmos pacotes e nas mesmas versões de sistemas operacionais para que os produtos criados sejam da mais alta qualidade.
Agora, imagine este cenário:
Neste exemplo temos 3 ambientes: DESENVOLVIMENTO, HOMOLOGAÇÃO e PRODUÇÃO. Cada um com os seus respectivos servidores. Claro que, normalmente, o ambiente de produção possui maior robustez de recursos. Mas isso não é motivo para deixarmos os outros dois de lado. Inclusive, este é um dos principais problemas na área de desenvolvimento: a diferença entre ambientes e que geralmente ocasiona quebra de pacotes quando implantados de um ambiente para outro.
Tendo em vista a imagem anterior, o nosso inventário no Ansible ficaria assim:
[db]
192.168.50.10 # Desenvolvimento de banco de dados
192.168.60.5 # DB Homólogo
192.168.70.22 # # DB Prod
[balanceador de carga]
192.168.50.1#LB Dev
192.168.60.2 #LB Homólogo
192.168.70.1##LB Prod
[aplicativo]
192.168.50.[20-21] #Desenvolvedor de APP
192.168.60.[30-32] # APP Homólogo
192.168.70.[50-54] # APP Prod
Bem, estabelecidos os nossos ambientes, continuemos.
Podem existir versões diferentes de pacotes, bibliotecas, sistemas operacionais entre os ambientes, o que pode resultar na “quebra” do pacote, ou pacotes, que será implantado.
Em nosso exemplo, temos 17 servidores no total entre os ambientes, divididos entre servidores de aplicação, banco de dados, de webservices, entre outros. Se fossemos actualizar um por um, seria uma tarefa demorada e repetitiva. Ainda bem que temos o nosso Ansible para isso.
Playbook e comandos Ad-Hoc com os Módulos APT e YUM
Existem duas formas que podemos utilizar no Ansible em uma tarefa como esta: Playbooks e Comandos Ad-Hoc. Já expliquei em artigos anteriores o que são. Contudo, o que quero mostrar neste artigo é, especificamente, como utilizar os módulos YUM e APT, que são os mais conhecidos dentre as distros Linux das famílias Red Hat e Debian.
Estrutura dos módulos YUM e APT via comandos Ad-Hoc
Comandos ad hoc
Como já demonstrei em artigos anteriores, a estrutura de um comando ad-hoc básico é:
ansible <grupo ou host> -m <módulo> -a “argumentos/parâmetros do módulo”
No caso dos módulos de gerenciamento de pacotes devemos passar os argumentos ‘name’ que é o nome do pacote e ‘state’ que é o estado do pacote (latest = última versão, present = apenas instalação e absent = remoção). Estes dois argumentos já são suficientes para a instalação e/ou actualização de qualquer pacote. Em nossos ambientes o servidor Nginx será instalado em um CentOS, que pertence à família Red Hat. Portanto, utiliza o gerenciador YUM:
ansible webservices -m yum -a “nome=estado nginx=presente ”
Com esse comando ad-hoc o pacote Nginx será instalado. O comando acima pode ser utilizado tanto para o gerenciador YUM quanto para o APT.
Lembrando sempre de uma coisa extremamente importante: existem nomes diferentes do mesmo serviço/aplicação entre nas famílias Linux. Por exemplo, o serviço apache. Com o Yum utilizamos o nome de pacote HTTPD. Já no APT, utilizamos APACHE2.
E se precisássemos actualizar o ambiente como um todo, como seria feito? Vamos actualizar todos os servidores CentOS-APP de uma vez em todos os ambientes para que não aconteça quebra de pacotes e bibliotecas no uso dos Apps desenvolvidos. Para isso, utilizaremos o comando:
aplicativo ansible -m yum -a “nome=* estado=mais recente ”
Veja que utilizamos um “*” para definirmos todos os pacotes. Desta forma, será executado um yum update ao invés de um yum install para todos os servidores do grupo APP.
Outro parâmetro que podemos utilizar para que o comando ad-hoc seja mais efectivo é o update_cache. Este parâmetro executa um equivalente ao apt/yum update antes do comando principal. É usado para especificar se o cache do gerenciador de pacotes YUM/APT deve ser actualizado antes de executar as operações de instalação ou remoção de pacotes.
Neste caso, nosso comando completo será:
aplicativo ansible -m yum -a “nome=* estado=última atualização_cache=yes ”
Mais uma vez, o mesmo vale para o módulo APT.
Após isso, todos os servers do grupo APP estarão actualizados para que nenhuma aplicação “quebre” ao ser implantada.
É um manual?
—
– anfitriões: aplicativo
reunir_fatcs: sim
usuário_remoto: root
tornar-se: sim
tarefas:
name: Atualizando CentOS do grupo APP
hum:
nome: *
estado: mais recente
update_cache: sim
Pronto! Agora só salvar como um nome sugestivo, como por exemplo, update_system. yaml, e rodar com o comando:
ansible-playbook update_system.yaml
Por meio destas duas formas você terá seus ambientes atualizados e um tempo para tomar aquele cafezinho!
Até o próximo artigo…
Já assistiu aos nossos vídeos no YouTube? Inscreva-se no nosso canal clicando aqui !!!