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: 대상 시스템에서 실행되며, 솔트 마스터의 지시에 따라 시스템을 제어하고 관리한다. 솔트 에이전트는 시스템의 현재 상태 데이터를 솔트 마스터에 보고한다.