![使用来自主机的文件作为 lineinfile 模块的输入](https://linux22.com/image/634416/%E4%BD%BF%E7%94%A8%E6%9D%A5%E8%87%AA%E4%B8%BB%E6%9C%BA%E7%9A%84%E6%96%87%E4%BB%B6%E4%BD%9C%E4%B8%BA%20lineinfile%20%E6%A8%A1%E5%9D%97%E7%9A%84%E8%BE%93%E5%85%A5.png)
我目前正在使用 ansible 设置一个系统,并希望尽可能地实现其自动化。
因此,我在我的 ansible 机器上创建公钥并将其复制到主机,以便我可以从外部尽可能地控制主机。
现在我需要通过公钥设置主机之间的连接。我正在使用模块lineinfile
来确保密钥存在于authorized_keys
和known_hosts
文件中。有没有办法读取文件的内容(在运行 ansible 的机器上)并将其用作模块的输入lineinfile
?
答案1
正如 Mxx 在评论中指出的那样,lookup
这就是答案。此外,我不建议使用lineinfile
添加 authorized_keys。已经有一个专门用于此的 Ansible 模块,它不太可能给你带来麻烦。这是一个示例游戏。它将从本地公钥中抓取,并正确确保它对于目标用户存在。
tasks: - name: Install SSH authorized key authorized_key: > user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" state=present