Выполнение команды с подстановкой переменных
В этом шаге вы углубите свое понимание модуля Local Action, включив подстановку переменных. Это позволит вам динамически изменять выполняемую команду на основе переменных, определенных в вашем playbook.
Во - первых, заполните файл /home/labex/project/execute_command_with_variable_substitution.yml.
Добавьте следующее содержимое в файл playbook:
- name: Выполнение команды с подстановкой переменных
gather_facts: false
hosts: localhost
vars:
message: "Hello, Ansible!"
tasks:
- name: Вывести сообщение с подстановкой переменных
local_action:
module: command
cmd: echo "{{ message }}"
register: result
- name: Отладить вывод
debug:
var: result.stdout
vars: Эта секция используется для определения переменных. В этом playbook определяется переменная с именем message со значением "Hello, Ansible!".
local_action: Это указывает, что действие должно быть выполнено локально на управляющем компьютере, где запущен Ansible.
module: Это указывает на модуль Ansible, который будет использоваться для действия. В этом случае это модуль command.
cmd: Это сама команда, которая будет выполнена. В этом случае это команда в оболочке echo "{{ message }}", где {{ message }} заменяется на значение переменной message, определенной ранее.
register: Это регистрирует вывод команды в переменную result для последующего использования в playbook.
debug: Это модуль Ansible, используемый для вывода отладочной информации.
var: Это параметр для модуля debug, который указывает на переменную, которую нужно отладить. В этом случае это result.stdout, которая содержит стандартный вывод команды, выполненной в предыдущей задаче.
Кратко говоря, этот playbook выполняет команду echo "{{ message }}" локально на управляющем компьютере, где {{ message }} заменяется на значение переменной message, определенной в секции vars. Он регистрирует вывод команды и затем выводит вывод с использованием модуля debug.
Затем выведите вывод команды в Ansible playbook.
ansible-playbook /home/labex/project/execute_command_with_variable_substitution.yml
Пример вывода:
[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
Здесь "result.stdout": "Hello, Ansible!" — это вывод команды echo "{{ message }}".