动态捕获模板输出

动态捕获模板输出

我需要在目标服务器上运行一个仅通过 stdin 接受数据的命令。我提供给它的数据来自模板文件,包含敏感数据,因此我宁愿不让这些数据在文件系统中停留哪怕一秒钟。

我正在尝试找到一种方法来获取模板任务的输出,以便将其传递给命令。例如:

- 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 保险库. 不管怎样,当 Ansible 创建 Python 脚本来执行任务下定义的命令时,数据都会以未加密的形式保存在文件系统中。

答案3

结合之前的几个答案,我们得到:

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

相关内容