动态Ansible SSH密钥管理

时间:2019-12-06 02:28:47

标签: ansible

我正在创建一个简单的角色来动态管理用户SSH密钥。通常的想法是让它读取该目录中的所有files/*.pub文件,并将它们组合为一个root用户的单个authorized_keys文件。

在下面的示例中,a.pubb.pub是要添加的两个键。该任务应将这两个都添加到authorized_keys文件中,并在添加.pub文件的列表中将其与添加和删除的文件保持同步。因此,如果将c.pub添加到文件夹,则无需修改任务即可将其添加到authorized_keys文件。

角色结构:

/-- roles
|   |-- ssh
|   |   |-- files
|   |       |-- a.pub
|   |       |-- b.pub
|   |-- tasks
|       |-- main.yml
|-- site.yml

1 个答案:

答案 0 :(得分:0)

您正在寻找的东西是fileglob lookup,它将用作:

- name: ensure authorized keys
  authorized_key:
    exclusive: yes
    key: >
       {% for fn in lookup("fileglob", "files/*.pub") %}
       {{ lookup("file", fn) }}
       {% endfor %}
    # ... whatever other options you want