feat: добавлен пользователь devops по аналогии с k8s-user

Роль 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
This commit is contained in:
Sergey Antropoff
2026-04-24 07:05:50 +03:00
parent 437d0cce34
commit 7c71b69333
5 changed files with 170 additions and 36 deletions

View File

@@ -2,27 +2,27 @@
# Раскладывает приватный и публичный ключ k8s пользователя на текущий хост
# Ключи берутся из hostvars первого мастера (сгенерированы там play'ем generate_keys)
- name: Deploy private key to k8s user
- name: Deploy private key to {{ k8s_service_user }} user
ansible.builtin.copy:
content: "{{ hostvars[groups['k3s_master'][0]]['k8s_ssh_private_key'] }}"
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 user
- name: Deploy public key to {{ k8s_service_user }} user
ansible.builtin.copy:
content: "{{ hostvars[groups['k3s_master'][0]]['k8s_ssh_public_key'] }}\n"
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 public key to authorized_keys
- 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_ssh_public_key'] }}"
key: "{{ hostvars[groups['k3s_master'][0]][k8s_service_user + '_ssh_public_key'] }}"
state: present
become: true

View File

@@ -45,6 +45,6 @@
- name: Store key content as persistent facts (доступны во всех последующих plays)
ansible.builtin.set_fact:
k8s_ssh_private_key: "{{ k8s_private_key_raw.content | b64decode }}"
k8s_ssh_public_key: "{{ k8s_public_key_raw.content | b64decode | trim }}"
"{{ 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