テンプレート出力を即座にキャプチャ

テンプレート出力を即座にキャプチャ

ターゲット サーバーで、stdin 経由でのみデータを受け入れるコマンドを実行する必要があります。入力するデータはテンプレート ファイルから取得され、機密データが含まれているため、1 秒でもファイル システムに残しておきたくありません。

テンプレート タスクの出力を取得してコマンドに渡す方法を探しています。次のようなものです:

- 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 はタスクで定義されたコマンドを実行するための Python スクリプトを作成するため、データは暗号化されずにファイル システム上に残ります。

答え3

ここで以前の回答をいくつか組み合わせると、次のようになります。

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

関連情報