将不同的 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)) }}"
我有一个包含多个主机的清单。我想通过 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)) }}"