No entanto, há casos em que você pode precisar executar uma ação específica na máquina local em vez de hosts remotos. Nesses casos, um recurso como LOCAL_ACTION vem a calhar.
Este guia mostrará como trabalhar com o módulo Ansible Local_Action para executar tarefas localmente.
Como funciona o módulo Ansible Local_Action
Como mencionado anteriormente, ao criar manuais, o alvo é tipicamente hosts remotos. Se você precisar executar uma tarefa para outros hosts que não os hosts remotos, você pode usar módulos Ansible como Local_Action e Delegate_to.
Delegate_to é útil quando você precisa definir uma tarefa para executar em um host específico. Você aponta o módulo delegate_to para os hosts de destino especificando seu nome de host ou endereço IP.
Local_action, por outro lado, executará as tarefas definidas apenas na máquina local. É semelhante a definir o valor de delegate_to para localhost ou 127.0.0.1
delegate_to: localhostO módulo local_Action é conveniente quando você precisa executar uma tarefa na máquina local antes de enviá -la para sistemas remotos. Estes são principalmente comandos personalizados ou de shell dentro do sistema local.
A melhor maneira de entender como usar o módulo local_action é usando os manuais de exemplo.
Ansible Local_Action Exemplo de uso de casos
Por simplicidade, tentaremos manter as manuais curtas e não muito complexas.
Antes de focar nos manuais, descrevemos nossa configuração Ansible, o que nos permitirá entender como o módulo local_action funciona.
Em nossa configuração de exemplo, temos um Ubuntu 20.04 servidor que tem Ansible instalado. Isso servirá como o nó de controle Ansible.
Em seguida, temos três máquinas remotas: um Ubuntu 21.04 servidor, um servidor Debian 11 e um servidor CentOS 8.
Temos o arquivo de inventário Ansible contendo todos os endereços IP dos três hosts no nó de controle.
Depois que executamos um manual, ele é executado nos três hosts.
OBSERVAÇÃO: Vamos limitar a saída a um único host para evitar complexidade e confusão.
Local_action usando um módulo
Considere o seguinte manual:
---No primeiro bloco, especificamos os hosts de destino para executar as tarefas, a menos que especificado de outra forma.
O manual continua a desativar a coleta de fatos sobre os hosts remotos, definindo o bloco Gather_facts para não.
Para ter a permissão de leitura e gravação, definimos o Block To True.
Nos blocos subsequentes, definimos duas tarefas:
A primeira tarefa cria um arquivo dos arquivos de log do sistema local. Delegamos a tarefa a ser executada no sistema local usando o bloco local_actiob. Em nosso exemplo, usamos um módulo comunitário que podemos instalar usando o comando:
Comunidade de instalação da coleção Ansible-Galaxy.em geralA próxima tarefa copia o arquivo de log do sistema local para o caminho especificado no host remoto.
Salve o manual e execute -o usando o comando:
Ansible-playbook Local_action.ymlApós a conclusão bem -sucedida, você deve ver uma saída semelhante à mostrada abaixo:
Local_action usando um comando shell
O exemplo abaixo mostra como executar comandos do shell usando o módulo local_action.
---No manual de exemplo acima, usamos o módulo local_action para executar um comando shell. O comando Shell conta o número de arquivos e diretórios salvos em uma variável.
Em seguida, usamos o módulo de depuração para imprimir o número de arquivos no controle remoto e localhost.
Execute o arquivo como:
Ansible-PlayBook FileCount.ymlLOCAL_ACTION COM RUN_ONCE
Você pode usar o módulo local_action ao lado do parâmetro run_once.
---O manual acima será executado no bloco local_action uma vez no sistema local.
Conclusão
O módulo local_Action é útil quando você deseja delegar uma tarefa para executar na máquina local. Você pode usá -lo com um módulo Ansible ou um comando Shell.