# 설치를 위한 패키지 다운로드
wget https://github.com/ansible-semaphore/semaphore/releases/download/v2.9.45/semaphore_2.9.45_linux_amd64.deb
sudo dpkg -i semaphore_2.9.45_linux_amd64.deb
# Semaphore 설치
semaphore setup
# Database 는 Test 기 때문에 Semaphore 내장 BoltDB 를 사용합니다.
What database to use:
1 - MySQL
2 - BoltDB
3 - PostgreSQL
(default 1): 2
# 그 외는 모두 Default 설정으로 하되, Slack 알림 테스트를 위해 Webhook URL 을 설정해줍니다.
Enable slack alerts? (yes/no) (default no): yes
Slack Webhook URL: <개인 WEBHOOK URL>
# 접근할 유저 입력
> Username: kimalarm
> Email: kimalarm@localhost
> Your name: kimalarm
> Password: <password>
# 설치 완료 시, Config.json 파일 생성
cat ./config.json | jq
1.3. Semaphore 실행
앞서 생성된 Config.json 파일을 가지고 Semaphore 를 실행합니다.
semaphore service --config=./config.json
이후 Semaphore 가 설치된 서버의 3000번 포트로 접근하면 GUI 환경이 나옵니다.
2. Semaphore 활용
2.1. Key Store
Semaphore 에서 대상 노드를 관리하기 위해서는 Ansible 과 마찬가지로 ssh 접근이 필요합니다. 이 때 사용되는 것이 key store 입니다.
Semaphore 에서는 다음과 같은 3가지 Key 를 지원합니다.
SSH
Remote Hosts, Remote Repo 에 SSH 접속 시 사용
Login With Password
로그인 계정에 대한 암호와 토큰
None
Remote Repo 에 인증이 없는 경우
2.2. Repositories
Playbook 과 Role 이 위치한 곳을 의미합니다.
Semaphore 에서는 다음과 같은 3가지 저장소를 지원합니다.
로컬 Git Repo - git://
로컬 파일시스템 - file://
리모트 Git Repo - ssh:// , https://
2.3. Environment
Ansible 추가 변수를 저장하는 곳으로 JSON 포맷으로 작성합니다.
2.4. Inventory
Playbook 이 실행될 호스트 목록입니다.
2.5. Task Templates
플레이북의 실행을 정의한 템플릿입니다.
Task : Playbook
Task Template : Playbook 을 어떻게 실행할 것인가 정의
우선, Ansible Server 에 Playbook 을 하나 생성해놓습니다. 이 때 Playbook 은 Semaphore 설치 시 설정한 디렉터리에 넣습니다.
- fact.yml
---
- hosts: all
tasks:
- name: Print all facts
ansible.builtin.debug:
msg: >
The default IPv4 address of {{ ansible_facts.fqdn }}
is {{ ansible_facts.default_ipv4.address }}
해당 플레이북을 활용하는 Task Template 을 생성해보겠습니다.
이후 Task 에서 직접 RUN 을 눌러주거나 5분이 지나면 자동으로 Playbook 이 실행됩니다.