나는 점점 더 많은 리눅스 시스템을 관리하기 위해 ~ 3 년 동안 Ansible을 큰 성공을 거두었습니다. 내 질문에 뛰어 들기 전에 컨텍스트를 설정해야합니다.
하루의 일의 일환으로, 단일 벤처 / 인큐베이터 회사의 우산 아래에서 운영되는 다양한 회사의 시스템 설계, 배포 및 유지 관리를 수행합니다. 우리의 포트폴리오 회사들 사이에는 많은 수분이 존재하므로 사용자 A, B 및 C만이 회사 X의 시스템에 액세스해야한다고 말할 수 없습니다. 또한 회사 Y의 시스템에 액세스해야 할 수도 있습니다. 각 회사의 가능한 환경이 다른 자식 저장소에 있다는 사실로 인해 복잡합니다. 이는 사용자를 다른 회사의 시스템에 배포하기위한 많은 코드 복제 가 있음을 의미 합니다. 특정 회사의 시스템에 사용자를 배포하기 위해 다음과 같은 코드 블록을 복사 / 붙여 넣습니다.
- name: add several users
user: >
name={{ item.name }}
state=present
groups={{ item.groups }}
uid={{ item.uid }}
password={{ item.password }}
shell=/bin/bash
with_items:
- { name: 'user1', groups: 'ssh-access,sudo', uid: '501', password: '<redacted>' }
- { name: 'user2', groups: 'ssh-access,sudo', uid: '502', password: '<redacted>' }
tags: users
- name: authorized_keys - user1
action: authorized_key user=user1 key="{{ lookup('file', 'pubkeys/user1') }}" manage_dir=yes
tags:
- pubkeys
- users
- name: authorized_keys - user2
action: authorized_key user=user2 key="{{ lookup('file', 'pubkeys/user2') }}" manage_dir=yes
tags:
- pubkeys
- users
관리 할 사용자가 <5 명인 경우에는 문제가 없었지만, 사용자 수가 증가함에 따라 키 순환, 새 비밀번호 등으로 최신 정보를 유지하는 것이 점점 더 번거로워졌습니다.
내 이야기와 배경을 설정하고 내 질문에 :
중앙 집중식 인증 시스템 (LDAP 등)을 사용하는 것이 옵션이 아니라고 가정 할 때 다양한 다양한 플레이 북이 소비 할 수있는 중앙 집중식 사용자 데이터베이스를 만드는 방법은 무엇입니까? 하나의 중앙 사용자 목록, uid, 암호 해시 및 공개 키를 유지 한 다음 사용자 (호스트 별 그룹 구성원 자격으로)를 각 회사의 호스트에 배포 할 수 있기를 바랍니다.
다음과 같은 일종의 놀이 구조를 구상하고 있습니다.
- name: Deploy users
user_management:
- { name: "user1", groups: "sudo" }
- { name: "user1", groups: "sudo" }
... 각 사용자의 uid, 해시 및 공개 키가 중앙 목록에서 가져와 평소처럼 배포됩니다.
그래서 어떤 옵션이 있습니까? 나는 이것을 잠시 동안 멀링 해 왔으며, 내가 이미하고있는 것보다 더 좋은 것을 만들 수 없었습니다. 사용자 데이터베이스를 보유하기 위해 사용자 정의 사실 파일로 무언가를 수행 할 수 있습니까?