如何从环境变量安装多个 ssh public 密钥?

How can I install multiple ssh public keys from environment variable?

我正在写一个小剧本,想与一些人分享。 此 playbook 需要一个或多个 ssh public 密钥才能安装在 ansible 节点上。

为了更容易自定义,我认为在环境变量中设置 SSH public 密钥是最好的解决方案,但我可以研究任何更好的建议。

所以,用户只需要这样设置:

export ANSIBLE_SSH_PUBKEY=${HOME}/.ssh/my_ssh_key.pub

在剧本中,这是这样处理的:

- name: Install ssh public key
  ansible.posix.authorized_key:
    user: ansible
    state: present
    key: '{{ item }}'
  with_file: '{{ lookup("env", "ANSIBLE_SSH_PUBKEY") }}'

目前,我只管理一个 ssh public 密钥安装。
所以,我的问题是:如何处理任意数量的 public 键?

允许他们导入所有 public 密钥,而不是使用 with_fileglob 循环:

export ANSIBLE_SSH_FOLDER=~/.ssh
- name: Install ssh public key
  ansible.posix.authorized_key:
    user: ansible
    state: present
    key: '{{ item }}'
  with_fileglob: '{{ lookup("env", "ANSIBLE_SSH_FOLDER") }}/*'

或者允许它们作为冒号分隔值,然后在该分隔符上拆分环境变量:

export ANSIBLE_SSH_PUBKEY=~/.ssh/my_ssh_key.pub:~/.ssh/my_other_ssh_key.pub
- name: Install ssh public key
  ansible.posix.authorized_key:
    user: ansible
    state: present
    key: '{{ item }}'
  with_file: '{{ (lookup("env", "ANSIBLE_SSH_PUBKEY")).split(":") }}'