Captura de saída do modelo durante a execução

6

Eu preciso executar um comando no servidor de destino que aceita dados somente por meio de stdin. Os dados que eu estou alimentando vem de um arquivo de modelo e contém dados sensíveis, então eu prefiro não tê-lo sentado no sistema de arquivos, nem por um segundo.

Estou tentando encontrar uma maneira de capturar a saída de uma tarefa de modelo para poder transmiti-la ao 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 }}"

A melhor maneira de fazer isso não envolve escrever um arquivo temporário, alimentá-lo com o comando e depois apagá-lo?

    
por Giovanni Tirloni 25.09.2015 / 18:37

2 respostas

4

Tenho uma resposta de caras ansiosos:

some_var: "{{ lookup('template', 'tmpl.j2') }}"
    
por 01.03.2017 / 14:02
2

A maneira correta de manipular comandos que precisam de entrada de stdin é o módulo esperado .

A maneira correta de lidar com dados confidenciais com o Ansible é o cofre ansible . De uma forma ou de outra, os dados ficarão descriptografados no sistema de arquivos, já que o Ansible cria scripts Python para executar os comandos definidos em tarefas.

    
por 01.03.2017 / 14:31

Tags