diff --git a/environments/proxmoxes/group_vars/proj-a.yml b/environments/proxmoxes/group_vars/proj-a.yml new file mode 100644 index 0000000..a8cd76c --- /dev/null +++ b/environments/proxmoxes/group_vars/proj-a.yml @@ -0,0 +1,8 @@ +a_users: + - name: test-nigger2 + sudo: true + #- name: ivan + # sudo: false + +a_projects: + - zagon \ No newline at end of file diff --git a/environments/proxmoxes/group_vars/all/projects.yml b/environments/proxmoxes/group_vars/proj-b.yml similarity index 65% rename from environments/proxmoxes/group_vars/all/projects.yml rename to environments/proxmoxes/group_vars/proj-b.yml index f7a456c..8e040a0 100644 --- a/environments/proxmoxes/group_vars/all/projects.yml +++ b/environments/proxmoxes/group_vars/proj-b.yml @@ -1,9 +1,8 @@ -project_users: +b_users: - name: test-nigger sudo: true #- name: ivan # sudo: false -allowed_projects: - - zagon +b_projects: - zagon2 \ No newline at end of file diff --git a/playbooks/ssh-certs/deploy-user-certs.yml b/playbooks/ssh-certs/deploy-user-certs.yml index 4d06ef8..05907e3 100644 --- a/playbooks/ssh-certs/deploy-user-certs.yml +++ b/playbooks/ssh-certs/deploy-user-certs.yml @@ -4,6 +4,40 @@ # Путь к ПУБЛИЧНОМУ ключу User CA на вашей Ansible-машине local_ssh_user_ca_pub_path: "/etc/step-ca/ssh_user_ca_key.pub" + pre_tasks: + - name: Динамический сбор и мерж пользователей изо всех групп хоста + set_fact: + # Ищем переменные вида *_users (alpha_users, beta_users) для групп текущего хоста + project_users: >- + {{ + group_names + + | map('extract', hostvars[inventory_hostname]) + | map('dict2items') | flatten + | selectattr('key', 'match', '.*_users$') + + | map(attribute='value') | flatten + | unique + }} + + # Ищем переменные вида *_projects (alpha_projects, beta_projects) и склеиваем в один список принципалов + allowed_projects: >- + {{ + group_names + + | map('extract', hostvars[inventory_hostname]) + | map('dict2items') | flatten + | selectattr('key', 'match', '.*_projects$') + + | map(attribute='value') | flatten + | unique + }} + + - name: Дебаг получившейся матрицы доступов (Опционально) + debug: + msg: "Хост {{ inventory_hostname }} получит юзеров {{ project_users }} и принципалы {{ allowed_projects }}" + + tasks: - name: Создание системной директории для принципалов file: