Захватывать вывод шаблона на лету

Захватывать вывод шаблона на лету

Мне нужно запустить команду на целевом сервере, которая принимает данные только через stdin. Данные, которые я ему передаю, берутся из файла шаблона и содержат конфиденциальные данные, поэтому я бы предпочел, чтобы они не оставались в файловой системе даже на секунду.

Я пытаюсь найти способ получить вывод шаблонной задачи, чтобы передать его команде. Что-то вроде:

- name: generate data
  template:
    src: data.j2
    dest: [I'd rather not have any files written]
  register: myvar

- name: run command
  shell: "command < {{ myvar }}"

Есть ли лучший способ сделать это, не включающий создание временного файла, передачу его команде и последующее его удаление?

решение1

Получил ответ от ребят из ansible:

some_var: "{{ lookup('template', 'tmpl.j2') }}"

решение2

Правильный способ обработки команд, требующих ввода, stdin— этоожидатьмодуль.

Правильный способ работы с конфиденциальными данными с помощью Ansible:хранилище ansible. Так или иначе, данные будут храниться в файловой системе в незашифрованном виде, поскольку Ansible создает скрипты Python для выполнения команд, определенных в задачах.

решение3

Объединив здесь несколько предыдущих ответов, получаем:

- name: run command
  command: "command"
  args:
    stdin: "{{ lookup('template', 'tmpl.j2') }}"

Связанный контент