Executando Comandos de Shell Remoto
Executando Comandos Ad-Hoc
Ansible permite executar comandos ad-hoc em hosts remotos sem a necessidade de criar um Playbook. Isso é útil para tarefas rápidas e únicas ou para fins de teste. Para executar um comando ad-hoc, você pode usar a ferramenta de linha de comando ansible com a seguinte sintaxe:
ansible <padrão_de_host> -m <módulo> -a "<argumentos_do_módulo>"
Por exemplo, para executar o comando uptime em todos os hosts no grupo webservers, você pode usar o seguinte comando:
ansible webservers -m command -a "uptime"
Usando o Módulo command
O módulo command é um dos módulos mais usados para executar comandos de shell remotos no Ansible. Ele permite executar comandos arbitrários nos hosts de destino. Aqui está um exemplo de Playbook que usa o módulo command:
- hosts: webservers
tasks:
- name: Executar um comando simples
command: echo "Olá, LabEx!"
register: command_output
- name: Exibir a saída do comando
debug:
var: command_output.stdout
Neste exemplo, o módulo command é usado para executar o comando echo "Olá, LabEx!" no grupo webservers. A saída do comando é armazenada na variável command_output, que é então exibida usando o módulo debug.
Lidando com Erros de Comando
Por padrão, o Ansible falhará a tarefa se o comando remoto retornar um código de saída diferente de zero. Você pode lidar com erros de comando usando a opção ignore_errors ou verificando a variável rc (código de retorno) em seu Playbook. Aqui está um exemplo:
- hosts: webservers
tasks:
- name: Executar um comando que pode falhar
command: /path/to/command_that_might_fail
register: command_result
ignore_errors: yes
- name: Verificar o resultado do comando
debug:
msg: "O comando falhou com o código de retorno {{ command_result.rc }}"
when: command_result.rc != 0
Neste exemplo, a opção ignore_errors é usada para evitar que a tarefa falhe se o comando remoto retornar um código de saída diferente de zero. A variável rc é então verificada para determinar o código de retorno do comando, e uma mensagem de depuração é exibida se o comando falhar.