Semaphore v2.17은 인프라 자동화 및 DevOps 팀을 위한 새로운 기능과 개선 사항을 제공합니다. 이번 릴리스는 개발자 경험을 향상하고 Infrastructure as Code 워크플로를 더 매끄럽게 만드는 데 초점을 맞췄습니다.
주요 기능 개요
-
TOTP 앱에서 발급자(issuer) 이름 사용자 지정
이제 TOTP(Time-based One-Time Password) 인증 앱에 Semaphore를 등록할 때 발급자(issuer) 이름을 사용자 지정할 수 있습니다. 인증 앱 내에서 Semaphore 계정을 더 명확히 구분할 수 있어, 특히 여러 2FA 토큰을 관리하는 사용자에게 유용합니다.
자세히 알아보기 » -
환경 변수에서 시크릿 읽기
이제 시크릿을 환경 변수에 연결할 수 있습니다.
자세히 알아보기 » -
일회성 예약 작업
cron 스케줄뿐 아니라 특정 날짜와 시간에 단 한 번만 실행되는 작업을 예약할 수 있습니다.
자세히 알아보기 » -
커스터마이즈 가능한 뷰
템플릿 뷰를 훨씬 더 유연하게 사용자화할 수 있습니다.
자세히 알아보기 » -
모든 작업 중지
Stop all 버튼으로 템플릿의 모든 실행 중인 작업을 한 번에 중지할 수 있습니다. 롤아웃을 빠르게 중단하거나 실수로 시작한 작업을 취소할 때 유용합니다.
자세히 알아보기 » -
Syslog 서버 지원
Semaphore는 이제 로그를 외부 syslog 서버로 전송할 수 있어 로그 수집을 중앙화하고 기존 모니터링 및 알림 파이프라인과 통합하기 쉬워졌습니다.
자세히 알아보기 » -
DB 마이그레이션 롤백
데이터베이스 마이그레이션을 롤백할 수 있게 되어 필요 시 Semaphore를 안전하게 다운그레이드하기 쉬워졌습니다.
자세히 알아보기 » -
설문 변수, CLI 인수 등의 드래그 앤 드롭
설문 변수, CLI 인수 및 기타 목록 항목을 드래그 앤 드롭으로 재정렬할 수 있습니다.
자세히 알아보기 » -
CLI를 통한 프로젝트 내보내기/가져오기
명령줄에서 프로젝트를 내보내고 가져와 백업, 마이그레이션 및 환경 간 반복 설정을 간소화할 수 있습니다.
자세히 알아보기 » -
BoltDB → SQLite/MySQL/Postgres 마이그레이션 CLI 도구
BoltDB에서 SQLite, MySQL 또는 Postgres로 Semaphore 데이터를 이동하는 새로운 CLI 마이그레이터가 추가되었습니다. BoltDB는 더 이상 권장되지 않으며 v3.0에서 제거될 예정입니다.
자세히 알아보기 » -
Devolutions Server 지원(Enterprise)
Enterprise 설치는 이제 HashiCorp Vault와 유사하게 Devolutions Server를 시크릿 백엔드로 통합할 수 있습니다.
자세히 알아보기 » -
사용자 정의 역할 및 확장 RBAC(Enterprise)
조직의 접근 모델에 맞춰 권한을 세부 설정할 수 있는 사용자 정의 역할을 정의할 수 있습니다.
자세히 알아보기 » -
Active-active 고가용성(Enterprise)
로드 밸런서 뒤에서 여러 Semaphore 인스턴스를 동시에 활성(active) 상태로 실행해 가용성을 높일 수 있습니다(Primary/Standby 없음).
자세히 알아보기 » -
개선된 로깅
로그에 더 많은 컨텍스트가 포함됩니다.
자세히 알아보기 » -
환경 변수를 통한 구독 키(PRO)
PRO 구독 키를 환경 변수로 제공할 수 있어 컨테이너화된 배포 및 자동화된 배포에 편리합니다.
자세히 알아보기 »
기능
TOTP 앱에서 발급자(issuer) 이름 사용자 지정
Semaphore v2.17은 TOTP(Time-based One-Time Password) 인증 앱에 표시되는 발급자(issuer) 이름을 사용자 지정하는 새로운 옵션을 도입합니다.
목적:
발급자 이름은 인증 앱에서 어느 계정이 Semaphore에 해당하는지 식별하는 데 도움을 줍니다. 특히 여러 조직이나 환경의 계정을 관리할 때 유용합니다.
설정 방법:
발급자 이름은 다음 두 가지 방법으로 설정할 수 있습니다.
-
환경 변수
Semaphore 시작 시 환경 변수
SEMAPHORE_TOTP_ISSUER에 원하는 발급자 이름을 설정합니다.예시(Docker Compose):
environment: - SEMAPHORE_TOTP_ISSUER=MyCompany Semaphore예시(Standalone):
SEMAPHORE_TOTP_ISSUER="MyCompany Semaphore" ./semaphore server -
설정 파일
config.json파일의auth섹션 안에 다음 옵션을 설정합니다:{ "auth": { "totp": { "issuer": "MyCompany Semaphore" } } }
우선순위:
환경 변수와 설정 파일 옵션이 둘 다 설정되어 있으면 환경 변수(SEMAPHORE_TOTP_ISSUER)가 우선합니다.
기본값:
설정하지 않으면 기본 발급자 이름은 Semaphore입니다.
결과:
사용자가 인증 앱에 Semaphore TOTP 계정을 추가하면 선택한 발급자 이름이 표시되어 여러 계정 간 식별이 쉬워집니다.
모든 사용 가능한 환경 변수에 대한 자세한 내용은 설치 환경 변수 문서를 참조하세요.
일회성 예약 작업
Semaphore는 이제 cron 스케줄 외에 **일회성 스케줄(one-time schedules)**을 지원합니다. 특정 날짜와 시간에 단 한 번 실행해야 하는 작업에 이 옵션을 사용하세요.
사용 사례:
- 승인된 변경 창 동안 유지보수 작업 실행
- 일회성 롤아웃 또는 백필(backfill) 작업 시작
커스터마이즈 가능한 뷰
템플릿 뷰를 이제 더 유연하게 사용자화할 수 있어 표시되는 내용과 배치를 워크플로에 맞게 조정할 수 있습니다.
-
이제 All 탭을 바의 어느 위치로든 이동할 수 있습니다.
-
일반 프로젝트 사용자에게는 All 탭을 완전히 숨길 수 있습니다.
-
특정 뷰의 기본 템플릿 정렬을 변경할 수 있습니다.
일반적인 개선 사항:
- 템플릿 관련 정보의 더 나은 구성
- 뷰 콘텐츠 배치에 대한 더 큰 유연성
모든 작업 중지
이제 템플릿의 모든 실행 중인 작업을 한 번에 중지할 수 있습니다. 롤아웃을 빠르게 중단하거나 실수로 시작된 작업을 취소하는 데 도움이 됩니다.
Syslog 서버 지원
Semaphore는 이제 로그를 외부 syslog 서버로 전달할 수 있어 로그 수집을 중앙화하고 기존 모니터링 및 알림 파이프라인과 통합하기 쉬워졌습니다.
config.json:
{
"syslog": {
"enabled": true,
"network": "udp",
"address": "localhost:514",
"tag": "semaphore"
}
}
환경 변수:
export SEMAPHORE_SYSLOG_ENABLED=True
export SEMAPHORE_SYSLOG_NETWORK=udp
export SEMAPHORE_SYSLOG_ADDRESS=localhost:514
export SEMAPHORE_SYSLOG_TAG=semaphore
DB 마이그레이션 롤백
데이터베이스 마이그레이션을 롤백할 수 있게 되어 업그레이드 문제에서 더 안전하게 복구하고, 필요한 경우 다운그레이드를 단순화할 수 있습니다.
semaphore migrate --undo-to 2.16
설문 변수, CLI 인수 등의 드래그 앤 드롭
이제 설문 변수, CLI 인수 및 기타 목록 항목을 드래그 앤 드롭으로 재정렬할 수 있어 템플릿 유지관리와 검토가 더 쉬워졌습니다.
CLI를 통한 프로젝트 내보내기/가져오기
Semaphore는 이제 프로젝트 자동 가져오기를 지원합니다.
Docker 컨테이너는 이를 위해 환경 변수 SEMAPHORE_IMPORT_PROJECT_FILE 및 SEMAPHORE_IMPORT_PROJECT_NAME를 받습니다.
CLI로 프로젝트를 가져와야 하는 경우 다음 명령을 사용할 수 있습니다:
semaphore project import --file /path/to/the/backup.json --project-name "Demo project"
프로젝트 이름이 제공되지 않으면, 백업 메타데이터의 프로젝트 이름이 사용됩니다.
디렉터리의 모든 프로젝트를 가져오려면 다음 명령을 사용하세요:
semaphore project import --dir /path/to/the/dir
프로젝트를 내보내려면 다음 명령을 사용할 수 있습니다:
semaphore project export --project-name "Demo project" --file /path/to/the/backup.json
모든 프로젝트를 디렉터리로 내보내려면:
semaphore project export --dir /path/to/the/dir
이 명령을 cron과 결합하면 자동 프로젝트 백업을 구현할 수 있습니다.
BoltDB → SQLite/MySQL/Postgres 마이그레이션 CLI 도구
새로운 CLI 마이그레이터는 Semaphore 데이터를 BoltDB에서 SQLite, MySQL 또는 Postgres로 옮기는 데 도움이 됩니다. BoltDB는 더 이상 권장되지 않으며 v3.0에서 제거될 예정입니다.
semaphore migrate --from-boltdb /path/to/boltdb/file
Devolutions Server 지원(Enterprise)
Enterprise 설치는 이제 HashiCorp Vault와 유사하게 Devolutions Server를 시크릿 백엔드로 통합할 수 있습니다.
사용자 정의 역할 및 확장 RBAC(Enterprise)
Semaphore UI는 이제 프로젝트 수준 및 전역 사용자 정의 역할을 지원하여 작업과 템플릿에 대한 세분화된 접근 제어를 가능하게 합니다. RBAC는 Semaphore 리소스 전반에 걸쳐 더 세밀한 제어를 제공하도록 확장되어, 팀이 최소 권한 원칙을 더 정확하게 적용할 수 있도록 돕습니다.
Enterprise 사용자는 조직의 접근 요구 사항에 맞춰 권한을 세부적으로 설정할 수 있는 사용자 정의 역할을 정의할 수 있습니다.
프로젝트 소유자와 관리자는 이러한 역할을 특정 템플릿에 할당하고, 작업 실행/보기/관리 권한을 목적에 맞게 부여할 수 있습니다.
Active-active 고가용성(Enterprise)
일반적인 단일 노드 설정에서 Semaphore 프로세스 하나가 모든 것을 수행합니다: 웹 UI 제공, 예약 작업 실행, 작업 실행, 브라우저로의 실시간 업데이트 전송 등. 해당 프로세스가 중단되면 모든 것이 멈춥니다.
Active-active HA에서는 로드 밸런서 뒤에서 여러 개의 동일한 Semaphore 인스턴스를 실행합니다. 모든 인스턴스가 동시에 완전히 활성 상태이며 "primary"나 "standby"가 없습니다. 어떤 노드든 어떤 요청이든 처리하고, 어떤 작업이든 실행하며, 어떤 스케줄이든 트리거할 수 있습니다. 공유 Redis 인스턴스를 통해 서로 충돌하지 않도록 조정합니다.
모든 인스턴스는 동일한 두 백엔드에 연결합니다:
- 데이터베이스(Postgres 또는 MySQL) — 프로젝트, 템플릿, 스케줄, 작업 이력, 사용자 등 모든 영속 데이터의 단일 진실 소스
- Redis — 조정 레이어. Redis는 세 가지 목적을 가집니다:
- 분산 락(distributed locks) — 두 노드가 동일한 작업을 실행하지 않도록 방지
- Pub/Sub 메시징 — 노드 간 실시간 이벤트 중계
- 공유 작업 큐 상태 — 모든 노드가 동일한 큐 상태를 보도록 함
{
"ha": {
"enabled": true,
"node_id": "node1",
"redis": {
"addr": "localhost:6379"
}
}
}
개선된 로깅
로깅이 개선되어 더 많은 컨텍스트와 명확성을 제공하며, 실패 원인 파악과 실행 중 무슨 일이 일어났는지 이해하는 데 도움이 됩니다.
환경 변수를 통한 구독 키(PRO)
PRO 구독 키를 이제 환경 변수로 제공할 수 있어 컨테이너화된 배포와 CI/CD 기반 롤아웃에 유용합니다.