Em Ansible, se quisermos emitir alguns comandos para fazer alterações ou atualizar qualquer coisa no host remoto de destino, usaremos o módulo de comando. O módulo Ansible ad-hoc é o módulo padrão quando estamos usando o módulo "comando" na ferramenta Ansible. Os únicos executáveis que o módulo de comando pode executar são aqueles que estão no alvo hosts distantes. O principal objetivo do módulo de comando em Ansible é evitar o terminal local.
Existem algumas restrições em Ansible, por exemplo, variáveis como $ hostname ou $ home não são acessíveis e operações como "&" e "<" etc are not functional in the command module. Any other Ansible module can be used if you wish to utilize these parameters. The command module in Ansible is unaffected by the remote host environment, which is why its outcomes are regarded as being more dependable and secure. On the target remote hosts or servers, that are specified as independent servers or hosting groups, the Command module is largely used to carry out standard Ubuntu instructions.
Pré -requisitos para utilizar o módulo de comando em Ansible
Este tutorial inclui demonstrações práticas de Ansible. Para usar o módulo de comando Ansible, presumimos que você tenha os requisitos listados abaixo:
Vamos explorar a premissa do módulo de comando em mais detalhes e examinar como o Ansible implementa isso, lançando vários cenários em prática.
Exemplo 01: Verificando o tempo de atividade de um host remoto de destino, utilizando o módulo de comando de Ansible
Todo profissional em potencial ou operador poderoso, como um controlador Ansible, deve possuir um conhecimento firme de alguns comandos encontrados na ferramenta de configuração Ansible. Vamos usar um dos comandos mais importantes do módulo de comando, que é o comando "tempo de atividade" em Ansible. O tempo de atividade do comando exibe o tempo presente, o número de hosts ativos, a carga típica do servidor nos 1, 5 e 15 minutos anteriores, bem como a quantidade de tempo em que seu dispositivo está funcionando. Seguindo as opções que você especificar, também é capaz de restringir o conteúdo relevante ao mesmo tempo.
Vamos começar criando o manual onde escreveremos o comando de tempo de atividade para verificar o tempo de atividade do host remoto. O comando que usaremos para criar o manual na ferramenta Ansible é a seguinte:
[root@master Ansible]# nano command_module.yml
Depois de escrever o comando acima, o comando_module.O Playbook YML será criado e lançado em um novo editor com o nome do Playbook, que é "Command_module". Neste editor, primeiro fornecemos os hosts remotos que queremos atingir. Aqui, temos como alvo "todos" os hosts remotos. Para obter as informações relacionadas aos hosts remotos direcionados, usaremos o Ansible "Catching Facts", módulo. Os dados coletados são normalmente chamados de "fatos" ou "variáveis" na ferramenta Ansible.
Na ferramenta Ansible, podemos reunir os dados de hosts remotos individualmente usando o comando específico que é "configuração". Mas, na realidade, a variável de fatos de coleta é realizada chamando este módulo de configuração por padrão em manuais Ansible. Para reunir os dados, passaremos o valor "verdadeiro" ou "falso". Como mostrado, passamos "falso" porque não queremos obter as informações do host de destino.
Em seguida, listaremos as tarefas que queremos realizar no manual Command_module. Começaremos nomeando a tarefa. Em seguida, usamos o parâmetro "registro" para que possamos rastrear e armazenar a saída neste parâmetro Ansible. Agora, passaremos o comando que queremos realizar, que é "tempo de atividade". Em seguida, usamos o comando "Debug" para imprimir a saída da variável.
- anfitriões:
- todos
Gather_Facts: False
tarefas:
- Nome: Execute o comando de tempo de atividade sobre o módulo de comando
Registro: UptimeOutput
Comando: "Uptime"
- depurar:
VAR: UpTimeOutput.stdout_lines
Atingir Ctrl+X encerrará o editor de playbook. Agora, criaremos o arquivo de inventário, que conterá os detalhes sobre o host remoto de destino. O comando que usaremos para criar o arquivo de inventário em Ansible é mencionado abaixo:
[root@master Ansible]# Nano Host.yml
Um editor diferente chamado "host" será aberto com o arquivo de inventário. Como os anfitriões “todos” foram mencionados no manual, agora examinaremos cada host individualmente. Usamos apenas um host no arquivo de inventário, ao qual nos referiremos como "host1", e incluiremos seus detalhes lá. Começaremos fornecendo o endereço IP e, em seguida, a identidade do host, a credencial da ferramenta Ansible, o nome da conexão que foi formada entre o controlador e o host e, finalmente, o número da porta.
Todos:
anfitriões:
Host1:
Ansible_host: 192.168.3.229
Ansible_user: Ansible
Ansible_password: *******
Ansible_connection: ssh
Ansible_port: 22
Agora lançaremos o manual e o arquivo de inventário que foram criados após serem escritos pelo comando listado abaixo:
[root@master Ansible]# Ansible-playbook Command_module.yml -i host.yml
Aqui está a saída depois de executar com sucesso, onde temos as informações do host1. Temos tempo, dias, total de dados dos usuários e a média de carga do host1.
Exemplo 02: Utilizando o comando uname para obter o nome do host e a versão do host remoto
Aqui está o segundo exemplo de um módulo de comando em Ansible, onde vamos usar o comando "Uname". Estamos usando "Uname" para obter as informações do host remoto do Ansible, como queremos obter o nome do host remoto e qual versão da ferramenta Ansible. Primeiro, entraremos no manual criado recentemente que é command_module.YML e depois modifique as tarefas e comandos. Para abrir o comando_module.Playbook YML, usaremos o comando "nano":
[root@master Ansible]# nano command_module.yml
No manual, alteramos as tarefas que foram mostradas abaixo no trecho de código. Conforme mostrado na variável de comando, passamos o comando "Uname" junto com a opção "-a" para que possamos obter as informações de todos os hosts.
- anfitriões:
- todos
Gather_Facts: False
tarefas:
- Nome: Execução da Instrução Uname
Registro: unameout
Comando: "Uname -a"
- depurar:
VAR: Unameout.stdout_lines
Vamos salvar as modificações e fechar o manual. Agora, vamos executar o manual para obter a saída do comando “Uname” e ver o que conseguimos. Para executar o manual, abaixo está o comando que usaremos:
[root@master Ansible]# Ansible-playbook Command_module.yml -i host.yml
O resultado de executar com sucesso o comando mencionado é mostrado abaixo. O nome do host e a versão são mostrados na fonte verde.
Conclusão
Aprendemos um dos módulos de Ansible, que é o módulo de comando. Discutimos como funciona em Ansible. Além disso, aprendemos os dois cenários básicos do módulo de comando implementando os exemplos.