본문 바로가기
Linux

SaltStack - 1. Basic Install and Join

by 올엠 2021. 2. 15.
반응형

최근에 SaltStack에 대해서 업무적으로 활용을 해야 하는 상황이라 관련 자료를 찾아 스터디를 하게 되었다.

saltstack 홈페이지에 가면 많은 자료를 확인할 수 있지만, 여기에서는 중요한 부분만 요약하여 정리해 보도록 하겠다.

아래 사이트가 saltstack 메인 사이트로 전체 자료를 보고 싶은 사람은 아래 링크를 참고하도록 하자.

https://docs.saltproject.io/en/getstarted/overview.html

 

SaltStack Components

Runners Modules that execute on the Salt master to perform supporting tasks. Salt runners report job status, connection status, read data from external APIs, query connected Salt minions, and more. For example, the Orchestrate runner coordinates configurat

docs.saltproject.io

SaltStack은 기본적으로 마스터 서버와 클라이언트라고 하는 Minion 서버로 구성되며,

Master 서버에서 실행할 명령을 Minion을 지정하여 전달하면, 실행후 해당 결과를 마스터 서버로 전달하는 구조로 실행 결과를 확인할 수 있는 Stateful을 방식이다.

 

 

 

SaltStack 기본 구조

1. Salt Master Install

Mater

$sudo apt-get install salt-master

$sudo apt-get install salt-ssh

설치를 완료하면 시스템 데몬으로 등록됨

salt-master.service

주요 환경 설정 파일/etc/salt/master

# The address of the interface to bind to:
interface: xxx.xxx.xxx.xxx

# The tcp port used by the publisher:
publish_port: 4505

Interface이외에는 기본 값을 사용하면 되며, minion의 기본 통신 포트는 TCP 4505 포트임

디버그 모드 실행

$sudo systemctl stop salt-master

$sudo salt-master -l debug

 

2. Slat Minion Install

Minion

$sudo apt-get install salt-minion

설치를 완료하면 시스템 데몬으로 등록됨

현재 AWS의 경우 Sec.Arc. 팀에서 사전에 설치해 놓은 데몬이 있기 때문에 별도로 설치가 필요하지 않음

 

주요 환경 설정 파일 /etc/salt/minion

master:
  - xxx.xxx.xxx.xxx

minion 옵션중 master:를 구성한 마스터 서버 IP를 입력하면 연결이 완료된다.

 

정상 동작 확인을 위해 디버깅 모드 실행은 서비스 데몬을 중지 하고 실행하여 동작 현황을 확인 할 수 있다.

디버그 모드 실행

#sudo systemctl stop salt-minion

#sudo salt-monion -l debug

 

3. Minion Join

기본적으로 minion이 통신을 요청하면 마스터에서 승인을 해줘야 마스터에 가입이 가능한 구조

Minion 승인을 위해 구분하는 id는 별도로 지정하지 않으면, Hostname(AWS는 인스턴스 id)이 구분 키로 확인된다.

(salt-key -L 를 통해 확인가능)

 

기본적으로는 Minion 승인 작업을 진행해야 한다. Mater에서 salt-key -L  명령을 통해 리스트를 확인하자.

$sudo salt-key -L
##리스트 확인후 대기중인 id를 -a를 통해 승인
$sudo salt-key -a <id>

auto-accept 필드를 이용하여 자동으로 승인하는 것도 가능하다.

https://docs.saltproject.io/en/latest/ref/configuration/master.html?highlight=autosign_file#auto-acceptㅇ

 

Configuring the Salt Master

extmod_whitelist/extmod_blacklist By using this dictionary, the modules that are synced to the master's extmod cache using saltutil.sync_* can be limited. If nothing is set to a specific type, then all modules are accepted. To block all modules of a specif

docs.saltproject.io

이제 클라이언트 minion이 정상적으로 응답을 하는지 test.ping을 통해 확인하여 True를 반환한다면 명령을 실행할 준비가 된 것이다.

## 가입 ID가 기본으로 사용됨

$sudo salt '*' test.ping

 

## CIDR 방식으로 사용가능

$sudo salt -S xxx.xxx.xxx.xxx/24 test.ping

 

반응형