Роль k8s-user сделана универсальной:
- generate_keys.yml: имена фактов стали динамическими — {{ k8s_service_user }}_ssh_private_key
вместо захардкоженных k8s_ssh_private_key (поддержка любого пользователя)
- distribute_keys.yml: обращение к фактам через [k8s_service_user + '_ssh_private_key']
playbooks/k8s-user.yml переработан — 12 plays (6 для k8s + 6 для devops):
- devops plays вызывают ту же роль k8s-user с vars-переопределением k8s_service_user
- теги k8s/k8s_user и devops/devops_user — можно запустить одного пользователя
- ключи сохраняются: ./keys/k8s_id_rsa, ./keys/devops_id_rsa (приватные в .gitignore)
- имя файла ключа динамическое: {{ k8s_service_user }}_id_rsa
group_vars/all/main.yml:
- добавлены devops_service_user, devops_service_user_comment, devops_service_user_sudo и др.
Запуск только devops: ansible-playbook playbooks/k8s-user.yml --tags devops
29 lines
1.2 KiB
YAML
29 lines
1.2 KiB
YAML
---
|
|
# Раскладывает приватный и публичный ключ k8s пользователя на текущий хост
|
|
# Ключи берутся из hostvars первого мастера (сгенерированы там play'ем generate_keys)
|
|
|
|
- name: Deploy private key to {{ k8s_service_user }} user
|
|
ansible.builtin.copy:
|
|
content: "{{ hostvars[groups['k3s_master'][0]][k8s_service_user + '_ssh_private_key'] }}"
|
|
dest: "/home/{{ k8s_service_user }}/{{ k8s_service_user_ssh_dir }}/id_rsa"
|
|
owner: "{{ k8s_service_user }}"
|
|
group: "{{ k8s_service_user }}"
|
|
mode: '0600'
|
|
become: true
|
|
|
|
- name: Deploy public key to {{ k8s_service_user }} user
|
|
ansible.builtin.copy:
|
|
content: "{{ hostvars[groups['k3s_master'][0]][k8s_service_user + '_ssh_public_key'] }}\n"
|
|
dest: "/home/{{ k8s_service_user }}/{{ k8s_service_user_ssh_dir }}/id_rsa.pub"
|
|
owner: "{{ k8s_service_user }}"
|
|
group: "{{ k8s_service_user }}"
|
|
mode: '0644'
|
|
become: true
|
|
|
|
- name: Add {{ k8s_service_user }} public key to authorized_keys
|
|
ansible.posix.authorized_key:
|
|
user: "{{ k8s_service_user }}"
|
|
key: "{{ hostvars[groups['k3s_master'][0]][k8s_service_user + '_ssh_public_key'] }}"
|
|
state: present
|
|
become: true
|