Category Archives: Infra

Iaas, Provisioning tool – Chef, Ansible, Puppet, Rex, Provy, Fabric

# 서버 프로비저닝 툴을 뭘 쓸지
최근 컨테이너(도커)와 Serverless 사용으로 서버 프로비저닝은 중요도가 좀 떨어지긴 했는데..
그래도 개발환경 구성이나.. 인스턴스 초기구성을 할 때 아쉬울 때가 있어서 다시 찾게 됐다.

예전엔 chef가 쨩이었던 것 같은데… 관련책도 두권 사서 봤었고..
근데 최근엔 이 회사가 굉장히 폐쇄적으로 변한 것 같다.
그래서 chef를 버리고 다른것으로 옮기려고 찾아보는 중인데~

## Chef
유료. 인데다가 꽤나 비쌈.
최근에 변경이 많았는지 옛날책들 보고 하면 되는게 없다.
오픈소스가 아니라서 왠지 쓰기 싫어짐.
옛날엔 오픈이었던 것 같기도 한데…

## Puppet
유료. chef랑 비슷한 것 같다.

## Ansible
https://www.ansible.com/
유료. 지만 오픈소스 정책 병행.
open stack에 사용되고 있다.
dsl 형태의 툴을 사용하려면 선택할 것 같은데…

## Fabrid
http://www.fabfile.org/
툴이라기보다는 python ssh 라이브러리.
이걸 베이스로 개발된 툴들이 좀 있는 것 같다.

## Rex
https://github.com/RexOps/Rex
오픈소스.
perl 기반 툴
perl까지 해야되나…

## Provy
http://heynemann.github.io/provy/
오픈소스.
파이썬 기반

# ~
뭘 쓸지 아직 결론을 내진 못했는데..
DSL형태는 Ansible.
코드는 조금이라도 익숙한 파이선 기반의 provy를 쓰게되지 않을까??? 싶다.

인프라쪽은 본업도 아닌데 너무 많이 시간을 잡아먹는다.

Serverless Architcture 적용 – 기술조사

올해의 핫 키워드 서버리스 아키텍처

갑자기 떠올랐다고 해야되나.. 내가 갑자기 알게된건가

AWS서밋2018 가서 보고 이게 이렇게 핫한 기술이라는걸 알게 됐다.

컨테이너 기반 개발/배포에 어느정도 익숙해져 갈 즈음이라… 이게 왜 필요한지 잘 이해가 안 갔었달까
(뭐 그냥 로그수집 할 때나 쓰면 적당하겠군)

그런데 최근 파일업로드 서버를 만들다가 갑자기 생각이 들었다.

여기다가 쓰면 되는거구나…

한번 생각나고 나니까 여기저기 적용할만한 구석이 보이기 시작한다.

개발환경

테스트 없이 배포까지 한 번에 할 수 있는 사람이 있긴할까?

역시 테스트가 필수적이다. 실서버에 배포를 하면 시간도 오래 걸리고, 돈도 들고, 운영중인 서비스라면 서비스가 중단된다.

로컬에서 빠르게 코딩-테스트할 환경이 필요한데

AWS, GCP 모두 테스트 환경을 제공 해 주고 있다.

로컬에 설치해서 개발이 가능한 솔루션도 많이 있다. 집에다가 한개 설치 해 놓고 개발용으로 써도 될 것 같다.

서버리스 솔루션

https://github.com/kubeless/kubeless

Home Page


https://www.openfaas.com/
https://openwhisk.apache.org/

FAAS

AWS는 다양한 언어를 제공 해 주고 있는 데 반해.
GCP는 아직 걸음마 단계… js만 사용가능하다.

kubernets 기반에 설치해서 사용이 가능한 fission도 있고
다른 서버리스 솔루션들을 kubernetes에 설치해서 써도 될 것 같지만….
그럴거면 그냥 컨테이너를 띄우지…

Serverless가 간편하다고 하지만.. SpringBoot나 다른기술들에 어느정도 익숙하다면 시간차이는 크지 않다.
AWS를 쓰면 구축 난이도가 좀 높은 API게이트웨이까지 사용할 수 있어서 더 좋을 것 같다.
AWS의존적인 시스템을 만들지 않으려고 했지만.. 이건 뭐 답이 없다. 그냥 의존적으로 가다가 문제가 생기면 빼는게 나을 것 같다.

로컬테스트는 이것저것 해보겠지만… 실 서비스는 AWS, API Gateway, DynamoDB/Aurora가 거의 확정.

PowerShell 명령어로 윈도우 환경변수Env 관리

Registry에서 환경변수의 경로

‘Path’에 gradle 경로 append

Gradle HOME 추가

 

뽀너스

자주 쓰는 명령

Ubuntu 사용자 추가삭제

 

가끔 생각이 안날때가 있어서

 

[Mac] Mac 패키지 관리 툴 – Homebrew + Cask

Homebrew

[공식 사이트](https://brew.sh/index_ko.html)

예전에는 Mac에서 패키지관리를 할 때 MacPort를 많이 썼는데
요새는 Homebrew진영에 주도권을 넘겨준 모양새다.

Port는 소스코드를 받아서 컴파일 후 설치를 하는데 Brew는 미리 컴파일된 파일을 다운받아 바로 설치를 하니 속도가 빠르고 오류가 적다.

설치 방법

스크립트

사용법

Homebrew Cask

[공식 사이트](https://caskroom.github.io)

기존의 Homebrew가 라이브러리, 데몬 설치에 사용됐다면
Cask는 유틸리티 설치에도 사용된다

사용법

검색은 공식사이트에서 해도 된다

https://caskroom.github.io/search

사용후기

cask 설치 실패가 나는 경우도 종종 있다.

환경때문에 그런 것 같지는 않고 자주 안 쓰는 패키지는 관리가 안되는 경우가 종종 있는 것 같다.

공식앱스토어가 아닌 이런곳에서 패키지를 설치하는게 보안상 안좋을 수도 있을 것 같다. 리포지터리나 dns가 해킹당하는 경우 아니면 패키지에 바이러스를 심어서 배포하는 경우에는 위험할 수도 있다.

괜찮겠지?

Vagrant berkshelf 동작이 안되는 경우

vagrant도 ruby  기반이라서 내장 ruby gem을 가지고 있다

내장 ruby gem과 rbenv/rvm/그냥설치… 된 다양한 루비환경이 분리되어있기 때문에 생기는 문제

 

운이 좋으면 두개를 겹쳐서 설치해도 되는 경우도 있다.

명령어가 있는 gem은 설치시 path를 셋팅한다.

운이 좋으면 높은 우선순위를 잡아서 실행이 될수도 있다.

 

 

 

해결하려면 다른환경에 설치된 gem을 지우고 vagrant 내장 gem을 따로 설치 해 주면 된다.

gem uninstall chef chef-zero berkshelf knife-solo

맞나? 이거 대충써놨다가 수정하려니까 기억이 안난다.

딱봐도 아닌데… 이걸 지우는게 해결책일리가 없다.

 

vagrant 내장 gem을 설치해야할 것 같은데

다음에 생각나면 다시 해봐야겠다.

 

 

Vagrant에서 .bashrc source가 먹히지 않는 문제

오류상황

vagrant shell에서 rbenv가 안먹힌다.

vagrant ssh 접속해서 보니 설치가 잘 돼 있고 path도 잡혀있는데

vagrant 설치시에 command not found가 발생

source가 안먹히는건가? 라고 생각

 

검색해보니

키워드 :

  • vagrant
  • command not found
  • source
  • not working

맘에드는 대답이 안나왔는데… 찾다보니 이런게 보인다.

https://stackoverflow.com/questions/29628635/why-is-source-home-vagrant-bashrc-not-working-in-a-vagrant-shell-provisionin

.bashrc에 인터렉티브 쉘이 아닌경우 리턴을 시키는문구가 있다고?

 

ubuntu .bashrc를 확인

.bashrc의 맨 앞에 이런게 있다.

If not running interactively, don’t do anything.
인터렉티브 쉘이 아닌경우, 아무것도 하지마.

rbenv공식 메뉴얼에는 .bashrc에 패스를 잡으라고 돼 있었는데..(메뉴얼이 바뀐건가? bash_profile에 하라고 돼있네)
어쨌든 이전 메뉴얼대로 하면 안돌아간다.

위의 검색결과에 나오는 스택오버플로우에는
.bashrc에서 return명령을 없애라고 하는데… 필요해서 해놨겠지.. 이 방법은 안쓰겠다.
대신에 .bash_profile/.profile에서 패스를 잡고 source .profile을 하면 된다.
아니면 .custom_profile을 만들어서 임포트해도 되고 .profile.d/를 써도될듯

Ruby Version 관리 툴 – rvm.io rbenv

개요

rvm보다 가볍고 시스템에 영향을 주지 않는다(삭제하기쉽다)는 이유로 rbenv으로 루비 버전관리 툴의 대세가 넘어간 것 같다.

rvm

http://rvm.io 접속해서 스크립트로 설치

rbenv

설치는 좀 더 성가시다.
공식 주소 :
https://github.com/rbenv/rbenv
install명령을 쓰려면 이것도 깔아줘야한다 :
https://github.com/rbenv/ruby-build

ubuntu 17.04 desk

Load Balancing

개요

부하분산 방법

MSA
하드웨어방식 vs 소프트웨어 방식
예전에는 L4하드웨어방식만 썼는데 클라우드. 그리고 글로벌화되면서 상황이 좀 바뀌었다.

DNS

L$

L4
좋기야 하지.. 그런데 비싸다.
예전에는 많이 썼는데 요즘은??
클라우드에서도 L4를 지원해주긴하는데
속에서 몰래 소프트웨어방식으로 처리하는거 아닐까

Iptables

안해봤는데 될것같아

HaProxy

많이쓰는방법

ApacheHttpd – Proxy

Nginx – Proxy

Windows PowerShell, 윈도우 10을 쓰다보니…

윈도우10 쓰다가 우연히 발견했는데 …
쓰다보니 맘에들어 작업표시줄에 커맨드라인 대신 걸어놓고 쓴다.

CommandPrompt는 Dos의 콘솔창같은 느낌이라면 PowerShell은 LinuxTerminal의 좋은점을 좀 가져온 느낌이다. 색깔 때문인지 입력하는 느낌도 묘하게 다른게 많이 생소하다.
Gnu처럼 명령어도 좀 복잡한게 CommandPrompt보다 다양한 명령이 가능할 것 같다

실행은 두 가지 모드가 있던데 명령어 보이는 복잡한 창이랑.. 심플한 창이랑
뭐라고 명령어 입력하면 명령어 안내창이 나오기도 하던데…
일부러 공부할 생각은 없고.. 노가다성 작업이 필요할 때 마다 찾아보면서 하는게 좋지 않을까?

원래 윈도우 서버에서 쓰였던 것 같은데… 이제 이걸로 통합하려고 하는건가?

 

윈도우10 밑에 검색에 PowerShell 치면 나온다