Мне нужно запустить команду на целевом сервере, который принимает данные только через стандартный ввод. Данные, которые я ему передаю, поступают из файла шаблона и содержат конфиденциальные данные, поэтому я бы предпочел, чтобы они не оставались в файловой системе даже на секунду.
Я пытаюсь найти способ получить вывод задачи шаблона, чтобы передать его команде. Что-то вроде:
- name: generate data
template:
src: data.j2
dest: [I'd rather not have any files written]
register: myvar
- name: run command
shell: "command < {{ myvar }}"
Есть ли лучший способ сделать это, не создавая временный файл, передавая его команде и затем стирая его?
Получил ответ от анзиблейных парней:
some_var: "{{ lookup('template', 'tmpl.j2') }}"
Правильный способ обработки команд, требующих ввода от stdin
это ожидать модуль.
Правильный способ работы с конфиденциальными данными с помощью Ansible: доступное хранилище. Так или иначе, данные будут находиться в файловой системе в незашифрованном виде, поскольку Ansible создает сценарии Python для выполнения команд, определенных в задачах.