안녕하세요. 달소입니다.
앞서 소개해드린 Ansible Web UI 프로젝트인 Semaphore를 직접 구축해보겠습니다.
구축 목적은 Ansible을 Web UI로 관리하면서 플레이북과 디바이스들을 관리하며 실행한 이력들에 대해서 모니터링할 수 있는 시스템을 구축하는것입니다.
Semaphore의 경우 Snap 부터 바이너리파일까지 여러가지 설치방법을 지원하지만 여기서는 Docker를 이용해서 구축해보겠습니다.
구축환경
Ubuntu 22.04.03 LTS
docker / docker-compose
이미지 – https://hub.docker.com/r/semaphoreui/semaphore
Semaphore 컨테이너 생성하기
mkdir -p /data/ansible
mkdir -p /data/ansible/playbook
chmod 777 /data/ansible/playbook
아래 docker-compose 자체는 예제이기때문에 입맛에 맞게 몇가지 수정해주시면됩니다.
기본 볼륨매핑도 제가 조금 수정했습니다. (db는 db폴더에, playbook도 별도 폴더로)
services:
# uncomment this section and comment out the mysql section to use postgres instead of mysql
mysql:
restart: unless-stopped
image: mysql:8.0
hostname: mysql
volumes:
- ./db:/var/lib/mysql
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
MYSQL_DATABASE: semaphore
MYSQL_USER: semaphore
MYSQL_PASSWORD: semaphore
semaphore:
restart: unless-stopped
ports:
- 3000:3000
image: semaphoreui/semaphore:latest
volumes:
- ./playbook:/tmp/semaphore/
environment:
SEMAPHORE_DB_USER: semaphore
SEMAPHORE_DB_PASS: semaphore
SEMAPHORE_DB_HOST: mysql # for postgres, change to: postgres
SEMAPHORE_DB_PORT: 3306 # change to 5432 for postgres
SEMAPHORE_DB_DIALECT: mysql # for postgres, change to: postgres
SEMAPHORE_DB: semaphore
SEMAPHORE_PLAYBOOK_PATH: /tmp/semaphore/
SEMAPHORE_ADMIN_PASSWORD: changeme
SEMAPHORE_ADMIN_NAME: admin
SEMAPHORE_ADMIN_EMAIL: admin@localhost
SEMAPHORE_ADMIN: admin
SEMAPHORE_ACCESS_KEY_ENCRYPTION: gs72mPntFATGJs9qK0pQ0rKtfidlexiMjYCH9gWKhTU=
SEMAPHORE_LDAP_ACTIVATED: 'no' # if you wish to use ldap, set to: 'yes'
SEMAPHORE_LDAP_HOST: dc01.local.example.com
SEMAPHORE_LDAP_PORT: '636'
SEMAPHORE_LDAP_NEEDTLS: 'yes'
SEMAPHORE_LDAP_DN_BIND: 'uid=bind_user,cn=users,cn=accounts,dc=local,dc=shiftsystems,dc=net'
SEMAPHORE_LDAP_PASSWORD: 'ldap_bind_account_password'
SEMAPHORE_LDAP_DN_SEARCH: 'dc=local,dc=example,dc=com'
SEMAPHORE_LDAP_SEARCH_FILTER: "(\u0026(uid=%s)(memberOf=cn=ipausers,cn=groups,cn=accounts,dc=local,dc=example,dc=com))"
depends_on:
- mysql # for postgres, change to: postgres
docker-compose up -d 를 사용하면 이미지 pull부터 진행합니다.
최초 실행시에는 db셋팅부터 진행되기때문에 약간의 시간이 걸리는편입니다.
컨테이너 생성이 모두 완료되었으면 ip:3000번 포트로 접속해주시면됩니다. (docker-compose logs -f 로 로그확인가능)
기본적인 admin 계정의 경우 위 docker-compose 에서 작한 내용으로 접속가능합니다.
아쉽지만 한국어 지원은 안됩니다..ㅠㅠ
프로젝트 이름을 만들어주세
저는 데모 프로젝트로 만들어봤습니다.
데모로 구성할경우 Repositories부터 Inventory,Task Templete등이 생성되고 이를통해서 대충 돌아가는건 어떻게 되는지 볼수있습니다.
기본 적으로 레포지터리 동기화나 인벤토리,템플릿등은 모두 playbook에서 내용 확인이 가능합니다.
구축은 듣던대로 엄청 쉽네요 ㅎㅎ
다만, 생각보다 기본셋팅을 해줘야하는게 많아서.. 기능테스트는 다음 기회로…