SaltStack과 Python이 협력하여 시스템 사용자 자동화 관리
임의의 업무의 발전에 따라 서버 데이터도 점점 많아지고 개발자, 운영 인원도 점점 많아진다.이때 만약 대량의 사람들이 서버에 로그인해야 한다면 우리는 사용자를 관리할 필요가 있다.전통적인 방식은 모든 서버에 로그인하여 사용자를 만드는 것이다. 업무 중복성이 너무 크다. 만약에 1000대가 있으면 어떻게 합니까?심지어 어떤 회사 사용자는 만들지 않고 모든 사람을 루트로 로그인시키는 것이 더 위험합니다!!!,그렇게 똑똑한 운영자는 반자동화 사용자를 만들기 위한 스크립트를 쓴다.이러한 방법은 대량의 기계를 관리하기에 적합하지 않다. 다음은 모두에게 SaltStack과Python 스크립트에서 실현된 자동화된 사용자 관리를 가져다 줄 것이다.
목표 달성:
salt의 사용을 끄면 내가 이전에 발표한 몇 편의 글, 을 볼 수 있다.Python 사용에 대해서는 스스로 학습하십시오.
위의 작업과 학습을 마치고 아래의 실현 방법을 계속 봅시다.
/srv/salt/test: 우리salt의test 환경 루트 디렉터리입니다
디렉토리 구조는 다음과 같습니다.
user_managent
├── files
│ └── user-authorized_keys
├── init.sls
└── useradd.sls
#files , USERNAME-authorized_keys
상태 프로필은 다음과 같습니다. init.sls
# root
modify PermitRootLogin:
file.replace:
- name: /etc/ssh/sshd_config
- pattern: ^\#PermitRootLogin yes$
- repl: PermitRootLogin no
#
modify PasswordAuthentication:
file.replace:
- name: /etc/ssh/sshd_config
- pattern: ^PasswordAuthentication yes$
- repl: PasswordAuthentication no
#
sshd managent:
service.running:
- name: sshd
- enable: True
- reload: True
- watch:
- file: /etc/ssh/sshd_config
#
create group:
group.present:
- name: aek
# sudo
modify sudoers:
file.append:
- name: /etc/sudoers
- text:
- "%aek ALL=(ALL) ALL"
상태 프로필은 다음과 같습니다:useradd.sls
# , ,
{% set USERNAME = 'user' %}
{% set PASSWORD = '$6$i6qujzCmWYsXGDJ0$Mxo50GGqCNMI3AKReNXKZ3GGxhFLzrZSQRxuFChw9JX/QrIdIIjqqkM52A7tEKOb61OuXmV7IrvtNWbzVgt000' %}
# , groups, , sudo
create user:
user.present:
- name: `USERNAME`
- password: `PASSWORD`
- groups:
- aek
# key
pub key:
ssh_auth.present:
- user: `USERNAME`
- source: salt://user_managent/files/`USERNAME`-authorized_keys
- template: jinja
파이썬 스크립트:
#!/usr/bin/python
#coding:utf:8
import sys
import fileinput
import crypt
import re
class UserAdd:
# salt
def __init__(self, username=sys.argv[1]):
self.username = username
#
def password(self):
self.password = crypt.crypt(self.username)
return self.password
# state
def modifyStateFile(self):
password = self.password()
for i in fileinput.input("/srv/salt/test/user_managent/useradd.sls", inplace=True):
if "USERNAME = " in i:
print(re.sub(r"USERNAME = '.*?'", "USERNAME = '"+self.username+"'", i).rstrip())
elif "PASSWORD = " in i:
print(re.sub(r"PASSWORD = '.*?'", "PASSWORD = '"+password+"'", i).rstrip())
else:
print(i).rstrip()
if __name__ == "__main__":
a = UserAdd()
a.modifyStateFile()
Python 스크립트 사용 방법:
# , ,
chmod +x useradd.py #
./useradd.py USERNAME #
Python 스크립트를 실행하면 다음으로Salt 명령을 실행하여 사용자를 만들 수 있습니다. 명령은 다음과 같습니다.
salt -G "os:CentOS" state.sls user_managent saltenv=test #
salt -G "os:CentOS" state.sls user_managent.useradd saltenv=test #
마지막으로 필요한 건 완성을 기다리면 돼요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.