Capture output template dengan cepat

8

Saya perlu menjalankan perintah pada server target yang hanya menerima data melalui stdin. Data yang saya makan itu berasal dari file template dan berisi data sensitif, jadi saya lebih suka tidak duduk di sistem file bahkan untuk sedetik.

Saya mencoba menemukan cara untuk mengambil output dari tugas template sehingga saya bisa meneruskannya ke perintah. Sesuatu seperti:

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

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

Apakah cara yang lebih baik untuk melakukan ini yang tidak melibatkan menulis file sementara, mengumpankannya ke perintah dan kemudian menghapusnya?

Giovanni Tirloni
sumber
Apakah itu sekali seperti yang Anda gambarkan, dengan file sementara. Permintaan dibuat fitur untuk orang-orang ansible: github.com/ansible/ansible/issues/22134
Selivanov Pavel

Jawaban:

6

Mendapat jawaban dari orang yang mungkin:

some_var: "{{ lookup('template', 'tmpl.j2') }}"
Selivanov Pavel
sumber
1
Bagus! Jika Anda menggunakan "with_items" dengan tugas Anda, maka Anda dapat menggunakan variabel "item" di templat.
Ikrom
2

Cara yang tepat untuk menangani perintah yang membutuhkan input dari stdinadalah modul harapkan .

Cara yang tepat untuk menangani data sensitif dengan Ansible adalah anault vault . Salah satu cara atau yang lain data akan duduk tidak terenkripsi pada sistem file sebagai Ansible membuat skrip Python untuk mengeksekusi perintah yang didefinisikan di bawah tugas.

Henrik Pingel
sumber