Выполнение команды с подстановкой переменных
В этом шаге вы углубите свое понимание модуля 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 }}"
.