将不同的 SSH 密钥分发到一个清单中的不同主机

Distributing different SSH keys to different hosts in one inventory

我有一个包含多个主机的清单。我想通过 Ansible 分发 SSH 密钥的 public 部分。每个主机都有自己的密钥。到目前为止,我找到了可以完成一般工作的 module authorized_keys 。但是我无法弄清楚如何分发不同的密钥。

我的 .ssh 目录如下:

ls .ssh
hostA hostA.pub
hostB hostB.pub
hostC hostC.pub

对于一个主机我可以写:

- name: Set authorized key taken from file
  authorized_key:
    user: joeuser
    state: present
    key: "{{ lookup('file', '/home/joeuser/.ssh/hostA.pub') }}"

但是我如何为不同的主机执行此操作?

如果每个密钥都以主机名命名,正如您的问题所建议的那样,您可以这样做:

- name: Set authorized key taken from file
  authorized_key:
    user: joeuser
    state: present
    key: "{{ lookup('file', '/home/joeuser/.ssh/{}.pub'.format(inventory_hostname)) }}"