Módulo de Ação Local do Ansible

AnsibleBeginner
Pratique Agora

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!

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 100%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

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 como false, 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ódulo command.
  • cmd: Este é o comando real a ser executado. Neste caso, é o comando shell echo "Hello, World!", que imprimirá a mensagem "Hello, World!" no console.
  • register: Isso registra a saída do comando na variável result para 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ódulo debug que 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 chamada message com 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ódulo command.
  • cmd: Este é o comando real a ser executado. Neste caso, é o comando shell echo "{{ message }}", onde {{ message }} é substituído pelo valor da variável message definida anteriormente.
  • register: Isso registra a saída do comando na variável result para 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ódulo debug que 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ódulo shell.
  • cmd: Este é o comando shell real a ser executado. Neste caso, é ./script.sh 5 7, que executa um script shell chamado script.sh com os argumentos 5 e 7.
  • register: Isso registra a saída do comando na variável result para 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ódulo debug que 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 é chamado script.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!