我目前正在使用 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