使用ansible添加多个SSH密钥

使用ansible添加多个SSH密钥,ssh,batch-processing,ssh-keys,ansible,ansible-playbook,Ssh,Batch Processing,Ssh Keys,Ansible,Ansible Playbook,我编写了一个ansible脚本,用于从远程服务器删除SSH密钥: --- -名称:“将密钥添加到用户ubuntu的授权密钥” 用户:ubuntu 主持人:www 任务: -名称:“删除键#1” 授权密钥:user=ubuntu密钥=“{item}}”状态=缺席 使用_文件: -id\u rsa\u number\u one.pub -名称:“删除键#2” 授权密钥:user=ubuntu密钥=“{item}}”状态=缺席 使用_文件: -id\u rsa\u number\u two.pub .

我编写了一个ansible脚本,用于从远程服务器删除SSH密钥:

---
-名称:“将密钥添加到用户ubuntu的授权密钥”
用户:ubuntu
主持人:www
任务:
-名称:“删除键#1”
授权密钥:user=ubuntu密钥=“{item}}”状态=缺席
使用_文件:
-id\u rsa\u number\u one.pub
-名称:“删除键#2”
授权密钥:user=ubuntu密钥=“{item}}”状态=缺席
使用_文件:
-id\u rsa\u number\u two.pub
...
将每个文件添加为不同的任务是荒谬的,因此我尝试使用:

-name:“一次删除所有密钥”
授权密钥:user=ubuntu密钥=“{item}}”状态=缺席
使用_fileglob:
-/Users/adamatan/ansible/id_rsa*.pub
但这样的话就不行了:

失败:[www.example.com]=> (item=/Users/adamatan/ansible/id_rsa_one.pub)=>{“failed”:true, “item”:“/Users/adamatan/ansible/id\u rsa\u one.pub”}msg:无效密钥 指定:/Users/adamatan/ansible/id\u rsa\u one.pub

使用唯一任务成功删除同一密钥文件,但当它是
fileglob
的一部分时失败


如何使用ansible批量添加或删除SSH密钥?

我相信您只是使用
with\u fileglob
获取文件名,但是
with\u file
检索文件内容。授权密钥模块需要实际密钥

因此,您仍然应该使用
和_fileglob
进行循环,但不应该将文件名发送到“key=”参数,而应该使用)


因此,此修改对于批量更新/删除条目非常有效。这是我的问题-我在服务器上有一个不在这里的人的密钥。如何用活动密钥的主列表清除和覆盖授权密钥文件?当我运行此脚本时,它会删除(如果不存在)我的活动密钥或添加(如果存在),但它不会删除不在我的*.pub文件中的密钥。@Valien有关多个独占密钥,请参见本文中的示例。您还可以为某些主机组中的所有用户创建
~/.ssh/
并通过静态
授权密钥
文件进行复制。在这种情况下,您可以完全控制文件内容。
- name: "Remove all keys at once"
    authorized_key: user=ubuntu key="{{ lookup('file', item) }}" state=absent
    with_fileglob:
      - /Users/adamatan/ansible/id_rsa*.pub