Search

Salt Stack (Salt Project)

Salt Stack (Salt Project)은 인프라스트럭처를 코드로 작성하고 관리하는 오픈 소스 소프트웨어이다. Salt Stack은 원격 컴퓨터의 강제 관리(enforced state management)를 위한 도구이며, Salt Stack을 사용하여 서버, 가상 머신, IoT 디바이스, 컨테이너 등을 관리할 수 있다.
Salt Stack은 Python으로 작성되었으며, 인프라스트럭처를 코드(Infrastructure as Code)로 관리하고 자동화하는 데 사용된다. Salt Stack은 설정 관리(configuration management)에 사용되며, 설정 파일, 패키지 설치, 서비스 관리 등을 위한 도구를 제공한다.
Salt Stack은 모듈화된 플러그인 아키텍처를 사용하며, 원격 실행(remote execution), 원격 프로시저 호출(remote procedure calls), 원격 셸(remote shell)을 위한 인터페이스를 제공한다. Salt Stack은 에이전트-마스터(agent-master) 아키텍처를 사용하며, 솔트 마스터는 중앙 집중식으로 에이전트를 관리하고 제어한다.
Salt Stack은 오픈 소스 소프트웨어로 Apache 2.0 라이선스로 배포된다. Salt Stack은 2011년에 출시되었으며, 많은 기업에서 인프라스트럭처 관리 및 자동화에 사용하고 있다.

Salt Stack의 주요 기능

설정 관리(Configuration Management): 설정 파일, 패키지, 서비스 관리를 위한 도구 제공
원격 실행(Remote Execution): 명령을 원격 컴퓨터에 실행하고 결과를 반환
원격 프로시저 호출(Remote Procedure Calls): 원격 컴퓨터에서 프로시저를 호출하고 결과를 반환
원격 셸(Remote Shell): 원격 컴퓨터에서 셸 세션을 실행
모듈화된 아키텍처: 300개 이상의 모듈을 지원하며, 모듈은 쉽게 확장할 수 있다.
인프라스트럭처를 코드(Infrastructure as Code)로 관리: 설정을 YAML 파일로 정의하여 버전 관리에 사용할 수 있다.
에이전트-마스터 아키텍처: 에이전트는 마스터의 지시에 따라 대상 시스템을 제어하고 관리한다.
고가용성(High Availability): 마스터의 중복(redundancy)을 지원하여 가용성을 높일 수 있다.
커뮤니티 기반: 활발한 오픈 소스 커뮤니티를 기반으로 개발되고 있다.
높은 확장성(Scalability): 대규모 인프라를 지원할 수 있는 확장성을 제공한다.

Salt Stack 아키텍처

Salt Stack은 에이전트-마스터(agent-master) 아키텍처를 사용한다.
Salt Master: 중앙 집중식으로 에이전트를 제어하고 관리한다. 에이전트로부터 상태 데이터를 수신하고, 대상 시스템의 원하는 상태를 결정하여 에이전트에 지시를 내린다.
Salt Minion: 대상 시스템에서 실행되며, 솔트 마스터의 지시에 따라 시스템을 제어하고 관리한다. 솔트 에이전트는 시스템의 현재 상태 데이터를 솔트 마스터에 보고한다.
Salt Master는 중앙 집중식으로 에이전트를 제어하기 때문에 단일 지점의 장애(single point of failure)가 될 수 있다. 이를 해결하기 위해 Salt Master의 중복(redundancy)을 구성할 수 있다.
Salt Minion과 Salt Master는 ZERO MQ 메시징 라이브러리를 사용하여 통신한다.
Salt Minion과 Salt Master간의 통신은 암호화되어 있으며, TLS를 사용한다.
Salt Minion과 Salt Master는 서로 다른 네트워크에 위치할 수 있다.
Salt Minion은 Salt Master에 자신을 등록한다. Salt Master는 등록된 Salt Minion을 인증하고 관리한다.

Salt Stack 설치

1.
Salt Master 설치 ( Cent OS 7 )
sudo rpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/latest/SALTSTACK-GPG-KEY.pub curl -fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo sudo yum install salt-master
Bash
복사
2.
Salt Master Config
a.
/etc/salt/master.d/network.conf
# The network interface to bind to interface: 192.0.2.20 # The Request/Reply port ret_port: 4506 # The port minions bind to for commands, aka the publish port publish_port: 4505
Bash
복사
3.
Windows에 Salt Minion 설치
설치중에 MASTER의 IP ADDRESS와 Minion이름을 넣어야 하니까 미리 준비할 것.
설치 후 바로 실행
4.
Salt Master에서 설치한 Minion 승인
sudo salt-key --list-all sudo salt-key --accept=<key>
Bash
복사
5.
Connect 확인
sudo salt '*' test.ping
Bash
복사

기타 정보

Salt Master에서 state파일 저장하는 위치

/srv/salt/
Bash
복사

명령어

KEY
sudo salt-key --list-all //키 리스트 보기 sudo salt-key --accept=<key> //특정 키 등록 sudo salt-key --accept-all //모든 대기중인 키 등록 sudo salt-key -d <key> //특정 키 삭제
Bash
복사