即時擷取範本輸出

即時擷取範本輸出

我需要在目標伺服器上運行一個僅透過標準輸入接受資料的命令。我提供給它的數據來自模板文件並包含敏感數據,所以我寧願不讓它在文件系統中存在一秒鐘。

我正在嘗試找到一種方法來獲取模板任務的輸出,以便我可以將其傳遞給命令。就像是:

- 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') }}"

相關內容