Introdução
O Ansible, uma ferramenta de automação de TI amplamente adotada, oferece um módulo versátil chamado "local_action" que permite executar tarefas no nó de controle, em vez de hosts remotos. Neste tutorial, exploraremos como utilizar eficazmente o módulo local_action para aprimorar seus fluxos de trabalho baseados em Ansible.
Compreendendo o Módulo local_action
O módulo local_action no Ansible é uma ferramenta poderosa que permite executar tarefas no nó de controle (o computador que executa o playbook Ansible) em vez dos hosts remotos. Este módulo é particularmente útil quando você precisa realizar ações específicas do nó de controle, como interagir com arquivos locais, serviços ou APIs.
O que é o Módulo local_action?
O módulo local_action é um tipo especial de módulo Ansible que executa a tarefa especificada no nó de controle, em vez dos hosts remotos. Isso difere do comportamento padrão do Ansible, onde as tarefas são executadas nos hosts remotos.
Quando Usar o Módulo local_action?
O módulo local_action é útil nos seguintes cenários:
- Operações com Arquivos Locais: Quando você precisa interagir com arquivos ou diretórios no nó de controle, como criar, modificar ou excluir arquivos.
- Gerenciamento de Serviços Locais: Quando você precisa gerenciar serviços ou daemons em execução no nó de controle, como iniciar, parar ou reiniciar um serviço.
- Interações com APIs: Quando você precisa interagir com APIs acessíveis apenas a partir do nó de controle, como consultar um banco de dados local ou chamar um serviço web.
- Verificações de Ambiente Local: Quando você precisa realizar verificações ou coletar informações sobre o nó de controle, como verificar o espaço em disco disponível ou a conectividade de rede.
Como Usar o Módulo local_action?
Para usar o módulo local_action, você pode incluí-lo em seu playbook Ansible como qualquer outro módulo. Aqui está um exemplo:
- name: Criar um arquivo local
local_action:
module: file
path: /tmp/local_file.txt
state: touch
Neste exemplo, o módulo local_action é usado para criar um arquivo chamado local_file.txt no diretório /tmp no nó de controle.
Você também pode usar o módulo local_action em combinação com outros módulos para realizar tarefas mais complexas no nó de controle.
- name: Verificar o espaço em disco disponível no nó de controle
local_action:
module: command
args:
cmd: df -h
register: disk_space
- debug:
var: disk_space.stdout_lines
Neste exemplo, o módulo local_action é usado para executar o comando df -h no nó de controle, e a saída é armazenada na variável disk_space, que é então impressa usando o módulo debug.
Compreendendo as capacidades e os casos de uso do módulo local_action, você pode utilizá-lo eficazmente em seus playbooks Ansible para executar tarefas específicas do nó de controle.
Aproveitando o módulo local_action para Execução de Tarefas
O módulo local_action no Ansible oferece uma maneira flexível de executar tarefas no nó de controle, permitindo que você aproveite suas capacidades para uma ampla gama de casos de uso. Nesta seção, exploraremos como usar eficazmente o módulo local_action para executar tarefas no nó de controle.
Executando Comandos Locais
Um dos principais casos de uso do módulo local_action é executar comandos no nó de controle. Isso pode ser particularmente útil quando você precisa realizar tarefas de nível de sistema ou interagir com recursos locais que não são acessíveis dos hosts remotos.
- name: Executar um comando local
local_action:
module: command
args:
cmd: ls -l /tmp
register: local_command_output
- debug:
var: local_command_output.stdout_lines
Neste exemplo, o módulo local_action é usado para executar o comando ls -l /tmp no nó de controle, e a saída é armazenada na variável local_command_output, que é então impressa usando o módulo debug.
Interagindo com Arquivos e Diretórios Locais
O módulo local_action também pode ser usado para interagir com arquivos e diretórios no nó de controle. Isso pode ser útil para tarefas como criar, modificar ou excluir arquivos, bem como gerenciar estruturas de diretórios.
- name: Criar um diretório local
local_action:
module: file
path: /tmp/local_directory
state: directory
- name: Criar um arquivo local
local_action:
module: file
path: /tmp/local_directory/local_file.txt
state: touch
Neste exemplo, o módulo local_action é usado para criar um diretório chamado local_directory no diretório /tmp no nó de controle e, em seguida, criar um arquivo chamado local_file.txt dentro desse diretório.
Chamando APIs e Serviços Locais
O módulo local_action também pode ser usado para interagir com APIs e serviços locais, como consultar um banco de dados local ou chamar um serviço web acessível apenas a partir do nó de controle.
- name: Chamar uma API local
local_action:
module: uri
url: http://localhost:8080/api/data
register: api_response
- debug:
var: api_response.json
Neste exemplo, o módulo local_action é usado para chamar uma API local em execução no nó de controle, e a resposta é armazenada na variável api_response, que é então impressa usando o módulo debug.
Compreendendo como aproveitar o módulo local_action para a execução de tarefas, você pode aprimorar a flexibilidade e o poder de seus playbooks Ansible, permitindo que você execute uma ampla gama de tarefas no nó de controle.
Exemplos Práticos de Uso do Módulo local_action
Nesta seção, exploraremos alguns exemplos práticos de como usar o módulo local_action em seus playbooks Ansible. Esses exemplos abordarão uma variedade de casos de uso e demonstrarão a versatilidade deste poderoso módulo.
Fazendo Backup de Arquivos Locais
Um caso de uso comum para o módulo local_action é realizar backups de arquivos e diretórios no nó de controle. Isso pode ser particularmente útil quando você precisa preservar configurações ou dados locais antes de fazer alterações.
- name: Fazer backup de arquivos de configuração locais
local_action:
module: archive
path:
- /etc/nginx/conf.d
- /etc/mysql/my.cnf
dest: /tmp/local_backup.zip
format: zip
Neste exemplo, o módulo local_action é usado para criar um arquivo ZIP dos diretórios /etc/nginx/conf.d e /etc/mysql/my.cnf no nó de controle, e o arquivo é salvo no arquivo /tmp/local_backup.zip.
Gerando Certificados SSL
Outro caso de uso prático para o módulo local_action é gerar certificados SSL no nó de controle. Isso pode ser útil quando você precisa criar certificados autoassinados para fins de teste ou desenvolvimento.
- name: Gerar um certificado SSL autoassinado
local_action:
module: openssl_certificate
path: /etc/ssl/certs/local_cert.pem
privatekey_path: /etc/ssl/private/local_key.pem
state: present
organization_name: LabEx
country_name: US
email_address: admin@example.com
Neste exemplo, o módulo local_action é usado para gerar um certificado SSL autoassinado e uma chave privada no nó de controle, e o certificado é armazenado no arquivo /etc/ssl/certs/local_cert.pem, enquanto a chave privada é armazenada no arquivo /etc/ssl/private/local_key.pem.
Interagindo com um Banco de Dados Local
O módulo local_action também pode ser usado para interagir com um banco de dados local no nó de controle. Isso pode ser útil para tarefas como executar consultas SQL ou fazer backups do banco de dados.
- name: Consultar um banco de dados MySQL local
local_action:
module: mysql_query
login_user: root
login_password: password
query: SELECT * FROM users
register: database_query
- debug:
var: database_query.results
Neste exemplo, o módulo local_action é usado para executar uma consulta SQL em um banco de dados MySQL local no nó de controle, e os resultados são armazenados na variável database_query, que é então impressa usando o módulo debug.
Explorando esses exemplos práticos, você pode obter uma melhor compreensão de como usar eficazmente o módulo local_action em seus playbooks Ansible para executar uma ampla variedade de tarefas no nó de controle.
Resumo
Ao final deste guia, você terá uma compreensão abrangente do módulo local_action no Ansible, incluindo seus benefícios, casos de uso práticos e melhores práticas para uma integração perfeita em seus processos de automação. Desbloqueie todo o potencial do Ansible e otimize a gestão da sua infraestrutura com as informações fornecidas neste tutorial.


