Ansible을 GUI로 관리하기. Ansible Semaphore

 

안녕하세요. 달소입니다.

 

앞서 소개해드린 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부터 진행합니다.

 

image.png.jpg

최초 실행시에는 db셋팅부터 진행되기때문에 약간의 시간이 걸리는편입니다.

컨테이너 생성이 모두 완료되었으면 ip:3000번 포트로 접속해주시면됩니다. (docker-compose logs -f 로 로그확인가능)

 

기본적인 admin 계정의 경우 위 docker-compose 에서 작한 내용으로 접속가능합니다.

 

image.png.jpg

 

아쉽지만 한국어 지원은 안됩니다..ㅠㅠ 

프로젝트 이름을 만들어주세

 

image.png.jpg

 

저는 데모 프로젝트로 만들어봤습니다.

 

image.png.jpg

 

데모로 구성할경우 Repositories부터 Inventory,Task Templete등이 생성되고 이를통해서 대충 돌아가는건 어떻게 되는지 볼수있습니다.

기본 적으로 레포지터리 동기화나 인벤토리,템플릿등은 모두 playbook에서 내용 확인이 가능합니다.

 

image.png.jpg

 

 

image.png.jpg

구축은 듣던대로 엄청 쉽네요 ㅎㅎ

다만, 생각보다 기본셋팅을 해줘야하는게 많아서.. 기능테스트는 다음 기회로…

 

 

 

————————————————–

사이트 리뉴얼중입니다~

서버(Linux, ESXi), NAS(헤놀로지, ESXi 및 IT관련 정보, 기타 등등을 공유하는 커뮤니티 SVRFORUM을 새로 만들었습니다.
많은 가입(?) 부탁드립니다~
https://svrforum.com

이전글들은 모두 상단 메뉴의 Blog 글 모음에있습니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

홈서버 IT 커뮤니티 SVRFORUM
Link