Роль 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
51 lines
1.9 KiB
YAML
51 lines
1.9 KiB
YAML
---
|
||
# Генерация RSA 4096 ключевой пары для k8s пользователя
|
||
# Выполняется ОДИН РАЗ на первом мастере, ключи затем распространяются на все хосты
|
||
|
||
- name: Generate RSA {{ k8s_service_user_key_bits }} key pair for k8s user
|
||
ansible.builtin.command:
|
||
cmd: >
|
||
ssh-keygen
|
||
-t {{ k8s_service_user_key_type }}
|
||
-b {{ k8s_service_user_key_bits }}
|
||
-N ''
|
||
-C "{{ k8s_service_user_key_comment }}"
|
||
-f /home/{{ k8s_service_user }}/{{ k8s_service_user_ssh_dir }}/id_rsa
|
||
creates: "/home/{{ k8s_service_user }}/{{ k8s_service_user_ssh_dir }}/id_rsa"
|
||
become: true
|
||
become_user: "{{ k8s_service_user }}"
|
||
|
||
- name: Set correct permissions on private key
|
||
ansible.builtin.file:
|
||
path: "/home/{{ k8s_service_user }}/{{ k8s_service_user_ssh_dir }}/id_rsa"
|
||
owner: "{{ k8s_service_user }}"
|
||
group: "{{ k8s_service_user }}"
|
||
mode: '0600'
|
||
become: true
|
||
|
||
- name: Set correct permissions on public key
|
||
ansible.builtin.file:
|
||
path: "/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: Slurp private key from first master
|
||
ansible.builtin.slurp:
|
||
src: "/home/{{ k8s_service_user }}/{{ k8s_service_user_ssh_dir }}/id_rsa"
|
||
register: k8s_private_key_raw
|
||
become: true
|
||
|
||
- name: Slurp public key from first master
|
||
ansible.builtin.slurp:
|
||
src: "/home/{{ k8s_service_user }}/{{ k8s_service_user_ssh_dir }}/id_rsa.pub"
|
||
register: k8s_public_key_raw
|
||
become: true
|
||
|
||
- name: Store key content as persistent facts (доступны во всех последующих plays)
|
||
ansible.builtin.set_fact:
|
||
"{{ k8s_service_user }}_ssh_private_key": "{{ k8s_private_key_raw.content | b64decode }}"
|
||
"{{ k8s_service_user }}_ssh_public_key": "{{ k8s_public_key_raw.content | b64decode | trim }}"
|
||
cacheable: true
|