Introdução
Bem-vindo ao Laboratório do Módulo de Ação Local do Ansible! Neste laboratório, você mergulhará no uso do módulo de Ação Local do Ansible (Ansible Local Action module). O módulo de Ação Local permite que você execute tarefas na máquina de controle onde o Ansible está sendo executado. Isso é útil quando você precisa realizar operações localmente, como executar comandos shell ou rodar scripts.
Vamos começar!
Executando um Comando Simples Localmente
Nesta etapa, você aprenderá como usar o módulo de Ação Local do Ansible (Ansible Local Action module) para executar um comando simples na máquina de controle. Isso o ajudará a entender o uso básico e a sintaxe do módulo.
Primeiro, complete o arquivo /home/labex/project/execute_local_command.yml.
Adicione o seguinte conteúdo ao arquivo playbook:
- name: Executing a Simple Command Locally
gather_facts: false
hosts: localhost
tasks:
- name: Print a message locally
local_action:
module: command
cmd: echo "Hello, World!"
register: result
- name: Debug the output
debug:
var: result.stdout
gather_facts: Isso especifica se o Ansible deve coletar fatos sobre os hosts de destino. Neste caso, está definido comofalse, o que significa que os fatos não serão coletados.hosts: Isso especifica o host de destino no qual o playbook deve ser executado. Neste caso, o playbook será executado no host local porque o host de destino élocalhost.tasks: Esta é uma lista de tarefas a serem executadas.local_action: Isso indica que a ação deve ser realizada localmente na máquina de controle onde o Ansible está sendo executado.module: Isso especifica o módulo Ansible a ser usado para a ação. Neste caso, é o módulocommand.cmd: Este é o comando real a ser executado. Neste caso, é o comando shellecho "Hello, World!", que imprimirá a mensagem "Hello, World!" no console.register: Isso registra a saída do comando na variávelresultpara uso posterior no playbook.debug: Este é o módulo Ansible usado para imprimir informações de depuração.var: Este é um parâmetro para o módulodebugque especifica a variável a ser depurada. Neste caso, éresult.stdout, que contém a saída padrão do comando executado na tarefa anterior.
Em resumo, este playbook executa um comando simples echo "Hello, World!" localmente na máquina de controle, registra a saída e, em seguida, imprime a saída usando o módulo debug.
Em seguida, exiba a saída do comando no playbook Ansible.
ansible-playbook /home/labex/project/execute_local_command.yml
Exemplo de saída:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [Local Action Module Challenge] *******************************************
TASK [Print a message locally] *************************************************
changed: [localhost]
TASK [Debug the output] ********************************************************
ok: [localhost] => {
"result.stdout": "Hello, World!"
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Aqui "result.stdout": "Hello, World!" é a saída do comando echo "Hello, World!".
Executando um Comando com Substituição de Variáveis
Nesta etapa, você aprimorará sua compreensão do módulo de Ação Local, incorporando a substituição de variáveis. Isso permitirá que você altere dinamicamente o comando sendo executado com base em variáveis definidas em seu playbook.
Primeiro, complete o arquivo /home/labex/project/execute_command_with_variable_substitution.yml.
Adicione o seguinte conteúdo ao arquivo playbook:
- name: Executing a Command with Variable Substitution
gather_facts: false
hosts: localhost
vars:
message: "Hello, Ansible!"
tasks:
- name: Print a message with variable substitution
local_action:
module: command
cmd: echo "{{ message }}"
register: result
- name: Debug the output
debug:
var: result.stdout
vars: Esta seção é usada para definir variáveis. Neste playbook, ela define uma variável chamadamessagecom o valor"Hello, Ansible!".local_action: Isso indica que a ação deve ser realizada localmente na máquina de controle onde o Ansible está sendo executado.module: Isso especifica o módulo Ansible a ser usado para a ação. Neste caso, é o módulocommand.cmd: Este é o comando real a ser executado. Neste caso, é o comando shellecho "{{ message }}", onde{{ message }}é substituído pelo valor da variávelmessagedefinida anteriormente.register: Isso registra a saída do comando na variávelresultpara uso posterior no playbook.debug: Este é o módulo Ansible usado para imprimir informações de depuração.var: Este é um parâmetro para o módulodebugque especifica a variável a ser depurada. Neste caso, éresult.stdout, que contém a saída padrão do comando executado na tarefa anterior.
Em resumo, este playbook executa o comando echo "{{ message }}" localmente na máquina de controle, onde {{ message }} é substituído pelo valor da variável message definida na seção vars. Ele registra a saída do comando e, em seguida, imprime a saída usando o módulo debug.
Em seguida, exiba a saída do comando no playbook Ansible.
ansible-playbook /home/labex/project/execute_command_with_variable_substitution.yml
Exemplo de saída:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [Local Action Module Challenge] *******************************************
TASK [Print a message with variable substitution] ******************************
changed: [localhost]
TASK [Debug the output] ********************************************************
ok: [localhost] => {
"result.stdout": "Hello, Ansible!"
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Aqui "result.stdout": "Hello, Ansible!" é a saída do comando echo "{{ message }}".
Executando uma Ação Local Complexa
Nesta etapa, você explorará um uso mais complexo do módulo de Ação Local do Ansible. Você executará um script shell localmente e passará argumentos para o script.
Primeiro, complete o arquivo /home/labex/project/execute_complex_local_action.yml.
Adicione o seguinte conteúdo ao arquivo playbook:
- name: Executing a Complex Local Action
gather_facts: false
hosts: localhost
tasks:
- name: Execute a shell script with arguments
local_action:
module: shell
cmd: ./script.sh 5 7
register: result
- name: Debug the output
debug:
var: result.stdout
local_action: Isso indica que a ação deve ser realizada localmente na máquina de controle onde o Ansible está sendo executado.module: Isso especifica o módulo Ansible a ser usado para a ação. Neste caso, é o móduloshell.cmd: Este é o comando shell real a ser executado. Neste caso, é./script.sh 5 7, que executa um script shell chamadoscript.shcom os argumentos5e7.register: Isso registra a saída do comando na variávelresultpara uso posterior no playbook.debug: Este é o módulo Ansible usado para imprimir informações de depuração.var: Este é um parâmetro para o módulodebugque especifica a variável a ser depurada. Neste caso, éresult.stdout, que contém a saída padrão do comando executado na tarefa anterior.
Em resumo, este playbook executa um script shell script.sh com os argumentos 5 e 7 localmente na máquina de controle. Ele registra a saída do script e, em seguida, imprime a saída usando o módulo debug.
Dicas: Preparamos este script shell para você, ele está no diretório
/home/labex/project/e é chamadoscript.sh. A função deste script é calcular a soma de dois parâmetros.
Em seguida, exiba a saída do comando no playbook Ansible.
ansible-playbook /home/labex/project/execute_complex_local_action.yml
Exemplo de saída:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [Local Action Module Challenge] *******************************************
TASK [Execute a shell script with arguments] ***********************************
changed: [localhost]
TASK [Debug the output] ********************************************************
ok: [localhost] => {
"result.stdout": "The sum of 5 and 7 is 12."
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Aqui "result.stdout": "The sum of 5 and 7 is 12." é a saída do script ./script.sh 5 7.
Resumo
Parabéns por concluir o Lab do Módulo de Ação Local do Ansible! Neste laboratório, você aprendeu como usar o módulo de Ação Local do Ansible para executar comandos e scripts localmente. Começando com a execução de comandos simples, você progrediu para incorporar a substituição de variáveis e executar scripts shell complexos com argumentos.
Ao concluir este laboratório, você adquiriu experiência valiosa no uso do módulo de Ação Local para tarefas que precisam ser executadas na máquina de controle. Continue explorando o Ansible e seus módulos para aprimorar ainda mais suas capacidades de automação.
Feliz automação!


