如何从环境变量安装多个 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(":") }}'
我正在写一个小剧本,想与一些人分享。 此 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(":") }}'