Comandos Ad-Hoc do Ansible

AnsibleBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá sobre os comandos ad-hoc do Ansible. Os comandos ad-hoc são tarefas rápidas e únicas que você pode executar sem a necessidade de um playbook completo. Eles são perfeitos para operações simples, como verificar o status do sistema, gerenciar arquivos ou executar comandos rápidos em vários servidores. Ao final deste laboratório, você entenderá como usar os comandos ad-hoc de forma eficaz, o que é crucial para realizar tarefas rápidas e solucionar problemas em seu ambiente gerenciado pelo Ansible.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 95%. Recebeu uma taxa de avaliações positivas de 99% dos estudantes.

Entendendo a Estrutura dos Comandos Ad-Hoc do Ansible

Vamos começar entendendo a estrutura básica de um comando ad-hoc do Ansible. A sintaxe geral é:

ansible [padrão] -m [módulo] -a "[opções do módulo]"

Onde:

  • [padrão] é o host ou grupo de hosts do seu inventário que você deseja direcionar.
  • -m [módulo] especifica qual módulo do Ansible usar.
  • -a "[opções do módulo]" fornece argumentos para o módulo.

Antes de começarmos a executar comandos, vamos garantir que temos um arquivo de inventário adequado. Crie ou edite o arquivo de inventário:

nano /home/labex/project/inventory

Adicione o seguinte conteúdo:

localhost ansible_connection=local

[webservers]
localhost

[dbservers]
localhost

Salve e saia do editor.

Agora, vamos tentar um comando ad-hoc simples para fazer ping em todos os hosts em nosso inventário:

ansible all -i /home/labex/project/inventory -m ping

Você deve ver uma saída semelhante a esta:

localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Este comando usa o módulo ping para verificar a conectividade com todos os hosts no inventário. A palavra-chave all direciona todos os hosts.

Vamos detalhar este comando:

  • all é o padrão, direcionando todos os hosts no inventário.
  • -i /home/labex/project/inventory especifica o arquivo de inventário a ser usado.
  • -m ping diz ao Ansible para usar o módulo ping.

Executando Comandos com o Módulo Command

Um dos módulos mais comumente usados em comandos ad-hoc é o módulo command. Ele permite que você execute comandos arbitrários nos hosts de destino.

Vamos usar o módulo command para verificar o espaço em disco em todos os hosts:

ansible all -i /home/labex/project/inventory -m command -a "df -h"

Você deve ver a saída mostrando o uso do disco em sua máquina local.

Agora, vamos tentar executar um comando apenas no grupo webservers:

ansible webservers -i /home/labex/project/inventory -m command -a "uptime"

Este comando mostrará o tempo de atividade (uptime) de todos os hosts no grupo webservers.

O módulo command é o módulo padrão, então você pode omitir -m command se estiver usando este módulo. Por exemplo:

ansible dbservers -i /home/labex/project/inventory -a "free -m"

Este comando mostrará o uso de memória em todos os hosts no grupo dbservers.

Lembre-se, o módulo command não suporta variáveis de shell ou operações como |, >, <, &. Para esses casos, você precisaria usar o módulo shell.

Usando Outros Módulos Úteis em Comandos Ad-hoc

Embora o módulo command seja versátil, o Ansible oferece muitos outros módulos que podem ser muito úteis em comandos ad-hoc. Vamos explorar alguns deles.

  1. O módulo copy:
    Este módulo é usado para copiar arquivos da máquina local para os hosts remotos. Vamos criar um arquivo simples e copiá-lo para todos os hosts:

    echo "Hello from Ansible" > /home/labex/project/hello.txt
    ansible all -i /home/labex/project/inventory -m copy -a "src=/home/labex/project/hello.txt dest=/tmp/hello.txt"

    Este comando copia o arquivo hello.txt da máquina local para o diretório /tmp em todos os hosts remotos.

  2. O módulo file:
    Este módulo é usado para gerenciar arquivos e diretórios. Vamos criar um diretório em todos os webservers:

    ansible webservers -i /home/labex/project/inventory -m file -a "path=/tmp/test_dir state=directory mode=0755"

    Este comando cria um diretório chamado test_dir no diretório /tmp em todos os webservers, com permissões definidas como 0755.

  3. O módulo setup:
    Este módulo é usado para coletar fatos (facts) sobre os hosts remotos. Ele é executado automaticamente no início dos playbooks, mas também pode ser usado em comandos ad-hoc:

    ansible dbservers -i /home/labex/project/inventory -m setup

    Este comando exibirá uma grande quantidade de informações sobre os hosts no grupo dbservers. Para limitar a saída, você pode usar filtros:

    ansible dbservers -i /home/labex/project/inventory -m setup -a "filter=ansible_distribution*"

    Isso mostrará apenas os fatos relacionados à distribuição do sistema operacional.

Esses exemplos demonstram como diferentes módulos podem ser usados para realizar várias tarefas rapidamente usando comandos ad-hoc.

Resumo

Neste laboratório, você aprendeu sobre comandos ad-hoc do Ansible e como usá-los de forma eficaz. Aqui estão os principais pontos a serem lembrados:

  1. Comandos ad-hoc são tarefas rápidas e únicas que podem ser executadas sem criar um playbook completo.

  2. A estrutura básica de um comando ad-hoc é:

    ansible [pattern] -m [module] -a "[module options]"
  3. O módulo ping é útil para verificar a conectividade com os hosts.

  4. O módulo command permite que você execute comandos arbitrários nos hosts de destino. É o módulo padrão, então -m command pode ser omitido.

  5. Outros módulos úteis para comandos ad-hoc incluem:

    • copy: para copiar arquivos para hosts remotos
    • file: para gerenciar arquivos e diretórios
    • setup: para coletar fatos (facts) sobre hosts remotos
  6. Você pode direcionar grupos específicos de hosts usando os nomes dos grupos definidos em seu arquivo de inventário.

  7. Comandos ad-hoc são ótimos para tarefas rápidas, mas para operações mais complexas ou repetíveis, os playbooks são mais adequados.

Comandos ad-hoc são um recurso poderoso do Ansible que permite que você execute tarefas rápidas em toda a sua infraestrutura. Eles são particularmente úteis para solucionar problemas, coletar informações ou fazer alterações rápidas. No entanto, para tarefas mais complexas ou repetíveis, é melhor usar playbooks.

Ao continuar trabalhando com o Ansible, pratique o uso de diferentes módulos em comandos ad-hoc. Explore a documentação do Ansible para aprender sobre mais módulos e seus usos. Lembre-se, embora os comandos ad-hoc sejam poderosos, eles não fornecem a idempotência e a reprodutibilidade dos playbooks, portanto, use-os com cautela em ambientes de produção.