DevOps, Linux

SaltStack 에서 Jinja 사용시 유용한 팁

Salt 는 Jinja Template 을 지원해 Salt 파일 작성시에 프로그래밍이 가능하도록 되어 있습니다.  예를들어 배포판별로 아파치 웹 서버의 패키지 이름이 다른데, Jinja Template 를 이용하면 프로그래밍을 할 수 있습니다.

Salt 의 grains 을 이용해서 배포판을 가지고 오고 조건식(if statement)를 이용해서 패키지명을 명시해주고 있습니다. 하지만 이렇게하면 Salt 자체의 YAML 문법과 섞여서 읽기가 힘든 부분이 있습니다. 그래서 이를 다음과 같이 개선할 수 있습니다.

조건식을 앞으로 빼고 변수를 이용해서 패키지명을 저장해주고 이 변수를 Salt YAML 문법에 사용하는 것입니다. 앞에 버전보다는 Jinja […]

HowTo, Linux

Vim 디렉토리 구조.

Vim 은 Unix/Linux 시스템에서 가장 있기는 편집기(Editor) 입니다. 터미널상에서 다양한 파일들을 편집할 수 있고 다양한 기능을 제공 합니다. 다양한 기능들은 플러그인(Plugin) 들로 제작되어 필요로하는 기능들만 사용할 수 있습니다. 이러한 플러그인들은 Vim 의 디렉토리에 넣기만하면 동작하도록 아주 간편하게 되어 있습니다. 이 문서는 다음의 문서를 직역해서 만들어졌습니다. 이글의 저작권도 원글에 있음을 밝힙니다. Learn Vimscript the Hard Way 기본 레이아웃(Basic Layout) Vim 은 여러파일들로 분리된 플러그인들을 지원합니다.  “~/.vim” 디렉토리 아래에 새성할 수 있는 아주 많은 다른 디렉토리들은 많은 것을 의미합니다. 이제 아주 중요한 […]

DevOps, Linux

salt-ssh, 에이전트 없이 SaltStack 사용하기

SaltStack 은 기본적으로 서버/클라이언트 구조를 가집니다. 서버는 중앙집중식으로 Salt-master 라 불리우고 각각의 관리대상이 되는 서버들에는 클라이언트로 Agent 가 설치되는데 이것을 Salt-minion 이라고 부릅니다. 이 둘이 통신을 주고받으면서 작동하게 되는 방식입니다. 하지만, 새로운 서버를 설치했을때에는 Agent 가 없기 때문에 SSH 로 원격 접속이 가능하다고 하더라도 Salt-minion 을 설치하기 전까지 수동으로 사람이 서버를 다루어야 하는 불편함이 존재합니다. 그래서 Saltstack 은 Salt-minion이 없이 SSH를 통해서 Salt 를 실행시킬 수 있도록 모듈을 제작했는데, 그것이 바로 Salt-ssh 입니다. Environment 이 글을 예제는 전부 다음의 환경에서 […]

Uncategorized

한국에서 시스템 엔지니어로 산다는거.

한국에서 가장 큰 병폐가 무엇일까? 자주자주 그리고 오랫동안 생각해온 문제였고 사회생활을 비롯한 각종 활동에서도 이러한 물음에 대한 답을 찾기위한 약간의 실험같은 것을 했었다. 이에 대한 물음에 적절한 또 다른 물음은 ‘당신 곁에서 나약해보이고 없어보이는, 능력이던 재력이던간에, 사람이 있을 경우에 어떻게 대할 것인가?’ 라는 것이 있다. 한국에서 ‘없어보인다’ 라는 말은 굉장히 많은 의미를 담아낼 수 있는 말이다. 능력이 없을수도 있고 재력이 없을수도 있고 외모가 없을수도 있고 전체적으로 풍기는 이미지가 못미더울 수도 있는 가져다 붙이면 다 되는 말이라고나 할까. 내 직업은 시스템 […]

HowTo, Linux

리눅스 공유 메모리

리눅스 공유 메모리는 아주 특별하고 중요합니다. 튜닝하는데 있어서 매우 중요한 요소이기 때문입니다. PostgreSQL 를 세팅할때에도 반드시 해줘야 하는 것이기에 정확하게 무엇인지 짚고 넘어가고자 아는 선에 적습니다. 페이지(Page) 가장 먼저 이야기할 것이 바로 페이지(Page) 입니다. 리눅스 시스템은 메모리를 가상으로 만들어 관리합니다. 웃기게도 리눅스 시스템에서 동작하는 프로그램들은 자신들이 시스템의 모든 메모리를 사용할 수 있다, 아니 그보다 더 많은 메모리를 사용할 수 있다라고 착각을 합니다. 이는 리눅스 시스템이 메모리를 가상화해서 프로그램들에게 보여주기 때문입니다. 문제는 리눅스 시스템은 가상화된 메모리들을 페이지(Page)라는 단위로 쪼개서 관리합니다. 특정 […]

Database, PostgreSQL

pg_terminate_backend, pg_cancel_backend

PostgreSQL 에서 쿼리를 취소시키위한 함수로 pg_terminate_backend, pg_cancel_backend 를 제공 합니다. 공식문서에는 다음과 같이 나와 있습니다. – pg_cancel_backend(pidint) : Cancel a backend’s current query. You can execute this against another backend that has exactly the same role as the user calling the function. In all other cases, you must be a superuser. – pg_terminate_backend(pidint) : Terminate a backend. You can execute this against another backend that has exactly the same role as the user calling the function. In all other cases, […]

Database, PostgreSQL

PostgreSQL 프로세스를 Kill 하면 발생하는 일

PostgreSQL 은 프로세스 복제 모델로 동작합니다. 접속을 하면 Postmaster 라 불리는 부모프로세스를 복제해서 접속을 하고 쿼리를 처리하도록 합니다. 그런데 데이터베이스를 운영하다보면 불필요한 쿼리를 없앤다고 운영체제에서 kill 명령어를 이용하는 경우가 있습니다. 결론부터 말하면 절대로 해서는 안되는 일 입니다. 이렇게하게되면 PostgreSQL은 다음과같이 모든 프로세스를 죽이고 서버를 재시작합니다.

클라이언트와 접속중인 프로세스라서 kill -9를 해도 상관이 없다고 하겠지만 전혀 그렇지 않습니다. 위의 경우에는 데이터가 아무것도 없어서 금방 재시작이 되었지만 아주 바쁜 서버의 경우에, 다시 말해서 트랜잭션이 많은 서버에서는 재시작하는데도 상당히 오랜시간이 걸릴 수 […]

HowTo, Linux

Phoronix 벤치마크 하기

이 글은 Phoronix 벤치마크 하기 에 대한 글  입니다. Phoronix 는 리눅스  벤치마크 테스트 툴 입니다. 이툴은 하드웨어 벤치마크와 소프트웨어 벤치마크를 모두 지원 합니다. 하드웨어 벤치마크는 새로운 사양의 서버가 들어왔을때에 CPU, RAM 대역폭, DISK I/O 성능들을 측정을 말하며 소프트웨어 벤치마크는 GCC 컴파일러, Kernel 성능들을 측정하는 것일 말합니다. Phoronix 의 성능측정 결과는 HTML 파일로 저장이 되며 https://openbenchmarking.org 자동으로 포스팅하는 기능이 있어 여러사람과 결과를 공유할 수 있습니다. Installation 설치환경은 CentOS 6 입니다. CentOS 의 경우에 Epel Yum 저장소를 추가하면 다음과 같이 Phoronix […]

HowTo, Linux

powerline vim 플러그인 설치

vim 를 사용하다보면 상태바에 많은 정보를 표시해주면 좋습니다. 이를 위해서 .vimrc 에다가 많은 설정을 사용해서 사용하지만 이것을 아예 Plugin으로 할 수 있도록 제공해주고 있습니다. Vundle 설치 vim 플로그인을 쉽게 설치하고 제거하기를 도와주는 플로그인 매니저중에 Vundle 를 사용하겠습니다. 설치는 다음과 같이 해줍니다.

설치는 이와같이 Vundle.vim 파일을 넣어주면 끝납니다. .vimrc 파일 수정 인터넷을 보면 다양하게 .vimrc 파일이 있습니다. 이 파일에는 어떤 플러그인을 할지도 정의되어 있습니다.

위의 내용에 필요한 것들을 하나씩 설치해야 합니다. vim Plugin 설치하기 이제 필요한 것들은 모두 되었습니다. […]

HowTo, Linux

Ubuntu 에 zsh 설정하기

zsh 을 이용하면 다양한 테마를 사용할 수 있고 이 테마들은 각 작업때마다 터미널에 관련 작업 상태들을 표시해주어 편리합니다. 예를들어 git 를 사용하시는 분들은 zsh 를 설치하고 테마를 설정해주면 터미널에 git 관련 상태들이 프롬프트에 표시되어 편리합니다. 이 문서는 Ubuntu 에 zsh 설정하기 에 관한 글 입니다. zsh 설치 Ubuntu 의 경우 zsh 설치는 아주 쉽습니다. apt-get 을 이용해서 설치합니다.

테마 설치 및 설정 테마는 각 계정당 해줍니다. 사용할 계정에 설정을 해주시면 됩니다.

마지막에 기본쉘을 바꾸기위해서 사용자 계정의 패스워드를 물어보고 […]