본문 바로가기

Devops/Jenkins

Jenkins CLI - Jenkins 유저 설정

반응형

Jenkins CLI 사용 시 Groovy를 사용해서 Jenkins 유저 설정을 해보는 것을 설명하려고 한다.

 

현재는 유저 생성, 패스워드 변경만 구현해보았다.

 

해당 기능도 쉘 스크립트를 같이 활용해서 생성 및 변경 작업을 하도록 구성하였다.

 

Jenkins 계정 정보 및 플러그인 이름을 입력 받아 변수에 저장하고 기본 url, jar 파일 등을 변수로 설정하여 코드를 재활용할 수 있게 구성하였다.

 

1) 유저 생성

user_create.sh

생성할 계정 정보를 변수에 저장 받고 그 변수를 파라미터로 groovy에 전달한다.

#!/bin/bash

CLI_JAR=jenkins-cli.jar
 
read -p "Jenkins 계정 입력 :" Jenkins_USER
read -sp "Jenkins 패스워드 입력 :" Jenkins_PW
echo
read -p "생성할 Jenkins 계정 입력 : " create_username
read -sp "생성할 Jenkins 패스워드 입력 : " create_password
echo

java -jar $CLI_JAR -s $JENKINS_URL -auth $Jenkins_USER:$Jenkins_PW groovy = < ./user_groovy/create-user.groovy "$create_username" "$create_password"


echo "'$create_username' 계정을(를) 생성 하였습니다. "


 

create-user.groovy

1.Security, Jenkins 관련 클래스들을 임포트한다.

2.쉘스크립트에서 전달된 파라미터 값을 username, password 변수로 받는다.

3.계정 정보를 Jenkins에 저장한다.

import hudson.security.*
import jenkins.model.*


def instance = Jenkins.getInstance()
def hudsonRealm = new HudsonPrivateSecurityRealm(false)

// 쉘 스크립트에서 전달된 파라미터를 받습니다
def username = args[0]
def password = args[1]

// 계정을 생성합니다
hudsonRealm.createAccount(username, password)
instance.setSecurityRealm(hudsonRealm)
instance.save()

 

계정 생성 스크립트 명령 실행 결과

 

콘솔에서 확인한 추가된 사용자

 

2) 유저 패스워드 변경

 

user_modify.sh

패스워드를 변경할 계정 및 변경될 패스워드를 변수에 저장 받고 그 변수를 파라미터로 groovy에 전달한다.

#!/bin/bash

CLI_JAR=jenkins-cli.jar

read -p "Jenkins 계정 입력 :" Jenkins_USER
read -sp "Jenkins 패스워드 입력 :" Jenkins_PW
echo
read -p "변경할 Jenkins 계정 입력 : " modify_username
read -sp "변경할 Jenkins 패스워드 입력 : " modify_password
echo

groovy ./user_groovy/change-passwd.groovy "$modify_username" "$modify_password"

java -jar $CLI_JAR -s $JENKINS_URL -auth $Jenkins_USER:$Jenkins_PW groovy = < ./user_groovy/change-passwd.groovy "$modify_username" "$modify_password"
echo "'$modify_username' 계정의 패스워드를 변경하였습니다. "

 

change-passwd.groovy

1.Security, Jenkins 관련 클래스들을 임포트한다.

2.쉘스크립트에서 전달된 파라미터 값을 username, password 변수로 받는다.

3. 변경된 패스워드 정보를 Jenkins에 저장한다.

 

추가적으로 email 정보 작성 또는 업데이트 부분은 동작은 하지만 일단 주석처리 해두었다.

import jenkins.model.*
import hudson.security.*
//import hudson.tasks.Mailer

def env = System.getenv()

def jenkins = Jenkins.getInstance()
 

// 쉘 스크립트에서 전달된 파라미터를 받습니다
def username = args[0]
def password = args[1]
 
// 계정 정보를 업데이트 합니다.
def user = jenkins.getSecurityRealm().getUser(username)
// 이메일 변경 시 활성화
//email= 'jenkins-admin@gmail.com'
//user.addProperty(new Mailer.UserProperty(email));
user.addProperty(hudson.security.HudsonPrivateSecurityRealm.Details.fromPlainPassword(password));

 

 

계정  패스워드 변경 명령어 실행 결과

 

정상 동작은 하지만  WARNING 및 No such라고 나오는 부분은 추후 확인이 필요해 보인다.

 

콘솔 접속 화면

반응형