2017년 3월 23일 목요일

Saltstack Installation

salt를 설치하는 방법을 다룬다. 처음 환경을 설정한다면, 관리용 서버에 salt master를 설치하고, master를 이용해서 관리할 각각의 서버 또는 가상머신(VM)에  salt minion을 설치 해야 한다. 처음에는 아키텍처에 대해 고민할 필요가 없고 나중에 재 설치 없이 쉽게 컴포넌트를 추가하고 설정을 바꿀수 있다.

인스톨 절차

  1. 부트 스크랩 스크립트 또는 각 플렛폼에 맞는 방법에 따라 salt master설치 (부트 스트랩 스크립트에 -M옵션 이용)
  2. salt minion과 master간 네트워크 연결이 가능한지 확인
  3. 관리 대상 서버에 salt minion 설치
  4. minion key 등록

인스톨 후 다음 명령을 수행해서 모든 salt minion에서 정상적인 응답이 오는지 확인한다.

 salt '*' test.ping

초기 설정

salt 설정은 매우 간단하다. master의 기본 설정에서 대부분 작동하고 추가적인 설정사항은 minion의 설정파일에 master의 위치를 지정하는 것 뿐이다.
설정파일은 /etc/salt에 위치하고, 파일의 이름은 구성 요소에 따라 master 또는 minion이다.

master

기본적으로 master는 모든 인터페이스(0.0.0.0)에 4505와 4506 port에 리슨 한다. 특정 IP에 바인드 하기 위해서는 master설정 파일에 "interface"지시자에 IP를 지정해 준다.
/etc/salt/master
-  #interface: 0.0.0.0
+ interface: 10.0.0.1
설정파일을 수정하면 salt master를 재시작 해야 한다.
+기호는 내용을 추가, -기호는 내용을 삭제하라는 의미임

minion

많은 salt minion 설정 옵션이 있지만, 설정하는 것은 간단하다. 기본 설정으로 minion은 DNS에 "salt"로 등록된 서버에 접속을 하도록 되어 있다. minion이 그 이름을 찾을 수 있다면 추가적인 설정이 필요 없다.
만약 "salt"라는 이름으로 IP를 해석할 수 없다면 minion설정 파일에 master지시자를 재정의 해줘야 한다.
/etc/salt/minion
- #master: salt
+ master: 10.0.0.1
설정파일을 수정하면 salt minion를 재시작 해야 한다.

salt 실행하기

salt master와 minion은 다음 명령을 이용해서 foreground 또는 daemon으로 실행할 수 있다

 salt-master (-d)
 salt-minion (-d)
문제해결을 위해서는 foreground모드로 실행하면서 log-level을 지정할 수 있다

salt-master --log-level=debug

root이외의 유저로 실행


salt를 root이외의 다른 사용자로 실행할 경우 master 설정파일의 user 파라미터를 설정한다.
추가로 아래의 디렉터리(하위 디렉터리를 포함하여)에 대한 읽기/쓰기 권한이 필요하다.
- /etc/salt
- /var/cache/salt
- /var/log/salt
- /var/run/salt

KEY IDENTITY


salt는 초기 키를 교환하기 전에 master와 minion을 식별할 수 있는 명령을 제공한다. 키 식별은 실수로 잘못된 마스터에 접속하거나, 초기 접속이 성공하기 전까지 MiTM공격을 방지한다.
salt master에서 다음 명령을 수행해서 마스터 키 핑거프린트를 출력한다.

salt-key -F master

master.pub를 복사하여 minion 설정 파일의 master_finger 지시자에 입력해준다.
salt minion에서도 핑거프린트를 출력한다.

salt-call --local key.finger

이 결과와 salt-key --finder minion id를 비교해 보라.

KEY MANAGEMENT


salt는 master와 minion간의 통신에 ASE 암호화를 사용한다. 이렇게 함으로써 minion으로 전달되는 명령은 변조될 수 없게 되고, master와 minion간의 통신은 신뢰 할 수 있는 key를 수락함으로써 인증된다.
명령을 minion으로 보내기 전에 master는 그 키를 수락해야 된다. salt-key명령을 master에서 수행.

salt-key -L

Unaccepted Key 항목에 아직 키를 수락하지 않은 minion의 목록이 나온다. 키를 수락하기 위해서는 다음 명령을 이용한다.

salt-key -A

salt-key명령은 키를 개별적으로 다루거나 한꺼번에 여러 개를 다룰 수 있다. -A옵션은 기다리고 있는 모든 키를 한번에 수락하는 것이다. 개별적으로 수락 할 때는 -a keyname을 사용한다.

SENDING COMMAND


master와 minion간에 통신이 되는지 확인하기 위해서는 test.ping명령을 이용한다.

 salt '*' test.ping

각 minion에서 True가 나오면 정상적으로 통신이 되는 것이다.

댓글 없음:

댓글 쓰기

salt-ssh를 이용한 salt minion 자동설치

salt-ssh의 작동방식 일반적으로 salt는 master와 minion이 zeroMQ를 이용하여 통신 이렇게 하려면 관리하려는 모든 서버에 minion이 설치되어야 함 salt-ssh는 minion 없이 서버를 관리할 수 있는 기능을 제공...