You can easily manage and deploy multiple public SSH keys per user using Jinja templating within an Ansible playbook.
Variable Definition (vars.yml)
vars:
ssh_user_key:
- user: ritesh
exclusive: no
keys:
- ritesh.centos
- ritesh.fedora
Ansible Task
- name: Upload user authorized SSH keys
authorized_key:
user: "{{ item.user }}"
exclusive: "{{ item.exclusive if item.exclusive is defined else 'no' }}"
key: "{% for file_name in item['keys'] %}{{ lookup('file', file_name) }}{% if not loop.last %}{{ '\n' }}{% endif %}{% endfor %}"
become: yes
become_user: "{{ item.user }}"
with_items:
- "{{ ssh_user_key }}"
tags:
- setup-user-ssh-client-key