Preciso executar um comando no servidor de destino que aceite dados apenas pelo stdin. Os dados que estou alimentando vêm de um arquivo de modelo e contêm dados confidenciais, portanto, prefiro não tê-los no sistema de arquivos nem por um segundo.
Estou tentando encontrar uma maneira de capturar a saída de uma tarefa de modelo para que eu possa passar para o comando. Algo como:
- name: generate data
template:
src: data.j2
dest: [I'd rather not have any files written]
register: myvar
- name: run command
shell: "command < {{ myvar }}"
Existe uma maneira melhor de fazer isso que não envolve gravar um arquivo temporário, alimentá-lo com o comando e depois apagá-lo?
Respostas:
Obtenha respostas de caras ansíveis:
fonte
A maneira correta de lidar com comandos que precisam de entrada
stdin
é o módulo expect .A maneira correta de lidar com dados confidenciais com o Ansible é o cofre ansible . De uma forma ou de outra, os dados permanecerão sem criptografia no sistema de arquivos, pois o Ansible cria scripts Python para executar os comandos definidos nas tarefas.
fonte