685
Em caso de erro, faça um teste de conexão via SSH. Caso você tenha adicionado variáveis de usuário e senha no arquivo hosts do Ansible, como mostrei neste artigo https://shorturl.at/huADG sobre o inventário, verifique se as credenciais estão correctas.
Por: Adelmo da Silva – consultor de sistemas
Bom, a nossa caminhada com Ansible está evoluindo cada dia mais. No último artigo você entendeu como funciona um playbooks com uma estrutura de decisão para instalação do mesmo pacote com nomes diferentes em duas distribuições Linux diferentes. Hoje, você entenderá como funciona o comando ad-hoc no Ansible. Um recurso para demandas mais rápidas com o Ansible. Em especial, neste artigo, vamos ver a estrutura de um ad-hoc e três módulos: PING, SHELL e COPY.
A estrutura de um comando ad-hoc
Diferente de um playbook o ad-hoc executa uma tarefas por vez. Ele é utilizado para execução de tarefas mais rápidas, urgentes. A estrutura de um comando ad-hoc é a seguinte:
ansible [grupo-hosts*] -m [módulo] -a [argumentos do módulo**]
ansible: comando majoritário
grupo-hosts: grupo de hosts registrados no arquivo de inventário do Ansible. Também pode-se usar endereço IP, caso seja feito em um só servidor
-m: Esta flag indica que será utilizado um módulo
módulo: nome do módulo a ser utilizado. Por exemplo, o módulo SHELL
-a: flag indica que serão utilizados argumentos do módulo
argumentos do módulo: argumentos do módulo que será utilizado
* No caso de uso de IP, pode usar de duas formas:
IP único: Ex: 192.168.100.20
IP Múltiplos: Ex: 192.168.100.20,192.168.100.21
** Alguns módulos não possuem argumentos. Por exemplo, o módulo PING que já vem pré configurado.
Diferente de um Playbook o Ad-Hoc executa uma tarefas por vez. Ele é utilizado para execução de tarefas mais rápidas, urgentes. A estrutura de um comando Ad-Hoc é a seguinte:
ansible [grupo-hosts*] -m [módulo] -a [argumentos do módulo**]
ansible: comando majoritário
grupo-hosts: grupo de hosts registrados no arquivo de inventário do Ansible. Também pode-se usar endereço IP, caso seja feito em um só servidor
-m: Esta flag indica que será utilizado um módulo
módulo: nome do módulo a ser utilizado. Por exemplo, o módulo SHELL
-a: flag indica que serão utilizados argumentos do módulo
argumentos do módulo: argumentos do módulo que será utilizado
* No caso de uso de IP, pode usar de duas formas:
IP único: Ex: 192.168.100.20
IP Múltiplos: Ex: 192.168.100.20,192.168.100.21
** Alguns módulos não possuem argumentos. Por exemplo, o módulo PING que já vem pré configurado.
Módulos no comando ad-hoc
O Ansible possui milhares de módulos a serem utilizados tanto pelos playbooks quanto pelo ad-hoc. A partir deste artigo, vou publicar os principais módulos usados no meu dia a dia. Mas, claro, que vai depender de suas demandas. Bora lá.
Módulo PING
O módulo ping testa a conexão entre o Ansible e os hosts que estão no grupo selecionado. Para executar um Ad-Hoc com o módulo Ping, execute:
ansible webserver -m ping
Com isso, o Ansible dispara o ping para os hosts do grupo. Caso tenha sucesso, aparecerá a mensagem abaixo, em verde:
webserver | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
Em caso de erro, aparecerá a mensagem em vermelho:
webserver | FAILED! => {
“changed”: false,
“msg”: “Failed to connect to the host via ping. Check network connectivity and ensure the host is reachable.”
}
Módulo SHELL
O módulo shell executa comandos via terminal nos hosts que estão no grupo selecionado. Para executar um Ad-Hoc com o módulo Shell, execute:
ansible webserver -m shell -a “ cat /etc/*-release ”
ansible webserver -m shell -a “ yum update -y ”
No primeiro comando, o Ansible irá para verificar a versão do Sistema Operacional dos servidores do grupo webserver e mostrará ao final do comandos.
No segundo comando, o Ansible irá executar a atualização em cada um dos servidores do grupo webserver que sejam, neste caso, Oracle Linux. Caso neste grupo exista um Ubuntu, Debian, ou qualquer outro sistema operacional que não utilize o gerenciador de pacotes YUM, o Ansible mostrará um erro neste host. Pois o ad-hoc executa um comando por vez.
Módulo COPY
O módulo copy copia arquivos entre hosts. Para executar um Ad-Hoc com o módulo Copy, execute:
ansible webserver -m copy -a “src=ntp.conf dest=/etc/ntp.conf”
ansible webserver -m shell -a “sudo systemctl restart ntpd”
No primeiro comando, o copy, o Ansible irá copia o arquivo NTP.CONF, que está no servidor Ansible, para cada um dos hosts do grupo webserver. Neste caso, não haverão conflitos, pois no comando copy é comum em todas as distribuições Linux.
E, aproveitando a didática, depois é executado um restart no serviço de NTPD com o módulo shell, citado anteriormente. Imagine isso rodando em mais de 100 servidores? Meu amigo, nunca um cafezinho teve um sabor tão bom depois de uma tarefa dessa. 😊.
Até o próximo artigo.