WHiO newsletter No.4

Kubernetes 이야기 1

Kubernetes는 구글에서 개발한 container orchestration tool이다. Kuberenetes 클러스터 구성은 지루한 작업이다. 최소 Kubernetes Master 1대, Minion 1대로 구성해야 하는데 내부 구성요소를 설치, 설정하는 것도 대단한 작업이다.

Read more...

WHiO Newsletter No. 3

WHiO 세 번째 소식지이다. 이번이 세 번째이니 아직 WHiO가 뭐지? 라고 생각하는 분들이 없을 수 있으나 그래도 궁금한 분들은 WHiO Newsletter No. 1 을 참조하길 바란다.

Read more...

Python Paramiko Password Change

리눅스 시스템 관리를 하다 보면 여러 서버의 사용자 패스워드를 일괄적으로 변경해야 하는 경우가 있다. 물론 시스템 관리자라면 보안적인 측면으로 사용자에 패스워드를 주기적으로 변경해야 한다.

LDAP 디렉토리 서버를 구성하여 통합계정관리가 가능하지만 해당 문서는 python script를 실행하여 일괄적으로 패스워드를 변경하는 방법을 작성한다. LDAP 디렉토리 서버 구성은 다음 문서에 작성이 되어질 예정이다.

2개의 파일이 필요하다. 1개는 패스워드를 변경하는 python script(chpasswd.py), 1개는 변경할 대상의 서버 리스트(chpasswd_list.txt)를 아래 내용을 참고하여 생성한다. 실행 방법 또한 아래 내용에서 확인 할 수 있다.

Paramiko

  • Python 2.6+, 3.3+에서 사용할 수 있는 SSHv2 구현체이다.
  • Client, Server 둘 다 사용이 가능하다.
  • 저 레벨 암호화를 위해서 PyCrypro(이부분은 Python C 확장으로 구현)를 제외한 나머지 부분들은 전부 Python으로만 구현되어있다.

Paramiko 모듈을 이용한 Python Script : chpasswd.py

#!/usr/bin/env python

import paramiko
import socket
import getpass
import sys


def input_passwd():

    mesg = "Password: "
    old = getpass.getpass("Current %s" % mesg)
    new = getpass.getpass("New %s" % mesg)
    re_new = getpass.getpass("Retype New %s" % mesg)

    if new != re_new:
        print "New RandomString does not match."
        exit(1)

    return old, new


def main(argv):
    if len(argv) < 2:
        print "USAGE : %s [srvlist.txt]" % argv[0]
        exit(1)

    srvlist_file = argv[1]

    old_password, new_password = input_passwd()
    print new_password

    srvlist = open(srvlist_file, 'r')
    lines = srvlist.readlines()

    for line in lines:

        line_sep = line.split()
        ip = line_sep[0]
        userlist = line_sep[1].split('/')
        for user in userlist:

            ssh = paramiko.SSHClient()
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            try:
                ssh.connect(ip, username='root', password='%s' % (old_password), timeout=5)

            except paramiko.ssh_exception.AuthenticationException:
                result = "Authentication failed"
            except socket.error:
                result = "Socket error"
            else:
                ssh.exec_command('echo "%s:%s" | chpasswd' % (user, new_password))
                result = "OK!"

            print "%s %s : %s " % (ip, user, result)

if __name__ == '__main__':
    main(sys.argv)

패스워드 변경 서버 리스트 : chpasswd_list.txt

패스워드 변경 서버 리스트를 아래 형식에 맞게 작성하여 생성한다. 사용자는 제한이 없으며 “/”를 입력하여 추가한다. 해당 파일의 이름은 형식에 제한이 없다. 원하는 이름으로 생성해도 된다.

hostname ip username/username/username..
# vi chpasswd_list.txt

test1           192.168.0.1    test/root
test2           192.168.0.2    test/root
test3           192.168.0.3    test/root
test4           192.168.0.4    test/root
test5           192.168.0.5    test/root
test6           192.168.0.6    test/root
test7           192.168.0.7    test/root

실행 방법

해당 스크립트는 paramiko 모듈을 사용하였기에 해당 모듈을 먼저 설치해야 한다. 아래의 순서로 설치를 진행한다.

# apt-get install build-essential libssl-dev libffi-dev python-dev
# apt-get install python-paramiko
  • 해당 스크립트는 서버들과 통신이 가능한 서버에서 구동해야 한다.
  • 인자값을 생략하고 스크립트를 구동하게 되면 친절한 사용방법이 나온다.
#./chpasswd.py [파일리스트]
#./chpasswd.py
USAGE : ./chpasswd.py [srvlist.txt]
  • 결과값
  • 인증이 실패할 경우 : [IP] [사용자] : Authentication failed
  • 통신이 안되는 경우 : [IP] [사용자] : Socket error
  • 정상적으로 변경된 경우 : [IP] [사용자] : OK!

WHiO newsletter No.2

WHiO 두번째 소식지이다. 아직 WHiO가 뭐지? 라고 생각하는 분들은 WHiO Newsletter No. 1 을 참조하길 바란다.

Read more...

bash alias 확장하기

KUBIC 실험 중 알아낸 정보입니다. KUBIC (KUBernetes Infrastructure for Containers)은 사내에서 진행 중인 kubernetes 기반 container 인프라 관리 프로젝트입니다.

kubernetes CLI client로 kubectl이 있는데 사용법은 다음과 같습니다. $ kubectl get po (pod 목록을 가져온다) $ kubectl create -f pod-filename.yaml (pod를 생성한다.)

매번 kubectl 이라고 치기 번거로워 .bash_aliases에 k=”kubectl” 정의하고

$ k get po
$ k create -f pod-filename.yaml

위와 같이 사용하다가 pod의 상태 변화를 보기 위해 다음과 같이

$ watch k get po

하면 ‘k not found’ 에러가 납니다.

man bash하여 alias 를 검색하니 alias는 첫 command에서만 검색이 되네요.

The first word of each simple command, if unquoted, is checked to see if it has an alias.

위에서 k는 watch 명령의 첫 인자값이므로 alias 확장이 되지 않습니다.

해결 방법은 watch도 alias에 넣는 겁니다.
man page를 보면,
If the last character of the alias value is a blank, then the next command word following the alias is also checked for alias expansion.

그렇다면, .bash_aliases에 watch=”watch ” 와 같이 뒤에 공백문자 하나 넣어 alias를 하나 더 만들어 아래와 같이 하면

$ . .bashrc
$ watch k get po

제대로 작동합니다.

.bashrc 안에 .bash_aliases를 읽는 부분이 있으므로 .bashrc를 다시 읽어들이면 새 alias가 됩니다.

WHiO newsletter No. 1

내부적으로는 오랬동안 통용되어온 단어인데 What’s Happening in iOrchard? 의 약자이다. 아이오차드에서 무슨 일이 일어나고 있지? 발음은 “위오~~~” 이다.

항상 내부적으로 강조하던 “공개소프트웨어를 학습하고, 적용하고, 응용하여 서비스하자”라는 것을 실천하는 의미로 WHiO 소식지를 시작한다.

학습은 “괴로운 인내를 통한 즐거운 창의”라고 한다. 학습의 인내 후에 즐거운 창의의 힘이 붙는다는 것이다. 우리도 공개소프트웨어 학습번을 통해 즐거운 창의를 하자는 의미에서 WHiO를 부정기적으로 편집하기로 했다.

자. 그럼 WHiO 내용 속으로 들어가 보자.

Read more...

2013년 말 기준 LGU+ 사내 VDI 구축 현황

2013년 말 기준, LGU+ 사내 VDI 구축 현황은 다음과 같습니다.

총 15대의 물리서버에 자사 펭그릭스 VDI 솔루션으로 구축하여 173 사용자가 현재 사용 중입니다.

대부분은 망분리 용으로 VDI를 사용하고 있습니다.

올해도 지속적인 VDI 성능 개선에 노력하겠습니다.

감사합니다.

LGU+ 서버 가상화 구축 350VM 돌파!

지난 2013년 LGU+ 사내에 점진적으로 가상화 시스템을 구축을 해 왔습니다.

2013년 12월 말 기준으로 350VM 구축을 돌파하였습니다.(총 352VM)

가상 머신의 용도는 웹 서비스, DNS서비스, 품질 겸증 서비스 등 다양합니다.

총 물리서버는 100대 정도이니 VM-to-PM ratio는 약 3.5:1 이라고 할 수 있겠습니다.

펭그릭스 클라우드 서비스 서버 확장

펭그릭스 클라우드 서비스의 메모리 자원을 100GB 더 확장하였습니다.

따라서 보다 많은 가상머신을 서비스할 수 있게 되었습니다.

지속적인 seamless한 확장을 통해 안정적인 클라우드 호스팅 서비스를 하도록 하겠습니다.

펭그릭스 PC 설치기 - 숭실대학교 편

구성

../../../_images/suni.jpg
  • Pengrix PC Gold 본체 1대
  • USB 허브 4개

숭실대 미디어학부 연구실에 지난 12월 설치한 펭그릭스 PC Gold edition 입니다.

Read more...