使用来自主机的文件作为lineinfile模块的input

我目前正在build立一个可靠的系统,并尽可能地自动化。

所以我在我的机器上创build了公钥并将它们复制到主机上,以便我可以从外部尽可能地控制主机。

现在我需要通过公钥设置我的主机之间的连接。 我正在使用lineinfile模块来确保这些密钥存在于authorized_keysknown_hosts文件中。 是否有一种方法来读取文件的内容(从机器运行的位置),并将其用作lineinfile模块的input?

正如Mxx在评论中指出的那样, lookup就是答案。 此外,我不会build议使用lineinfile来添加authorized_keys。 现在已经有一个Ansible模块专门用来解决这个问题,而且很难让你陷入困境。 这是一个例子。 它将从当地的公共密钥抓取,并确保目标用户存在。

tasks: - name: Install SSH authorized key authorized_key: > user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" state=present