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 }}".