Ansible Semaphore는 UI를 통해 Ansible의 상태를 조회하고 팀에서 Ansible 협업이 가능하게 해주는 오픈소스이고, 아래와 같은 기능들을 제공한다.
4가지 방식 지원 snap, package manager, docker, binary file - Link Github
# 설치
cd
pwd
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
# Setup Semaphore by using the following command
semaphore setup
1. Set up configuration for a MySQL/MariaDB database
2. Set up a path for your playbooks (auto-created)
3. Run database Migrations
4. Set up initial semaphore user & password
What database to use:
1 - MySQL
2 - BoltDB
3 - PostgreSQL
(default 1): 2
...
db filename (default /home/ubuntu/database.boltdb):
Playbook path (default /tmp/semaphore):
Public URL (optional, example: https://example.com/semaphore):
Enable email alerts? (yes/no) (default no):
Enable telegram alerts? (yes/no) (default no):
Enable slack alerts? (yes/no) (default no): yes
Slack Webhook URL: 각자 slack webhook 만들어서 넣어준다.
Enable LDAP authentication? (yes/no) (default no):
Config output directory (default /home/ubuntu/my-ansible):
...
> Username: kimchigood # 각자 자신의 닉네임
> Email: test@test.com
> Your name: kimchigood # 각자 자신의 닉네임
> Password: qwe123
# ./semaphore server --config /home/ubuntu/config.json
# nohup ./semaphore server --config /home/ubuntu/config.json &
# You can login with admin@localhost or gasida.
# config.json 파일 확인
cat ./config.json | jq
# (터미널 2) Now you can run Semaphore : 태스크 실행 시 로그 확인 용도로 계속 터미널 열어 둠
# nohup semaphore server --config=./config.json &
semaphore service --config=./config.json
# Semaphore will be available via this URL
echo -e "Semaphore Web = http://$(curl -s ipinfo.io/ip):3000"
# CLI 확인
semaphore -h
semaphore version
semaphore user list
# tmp project home
mkdir /tmp/semaphore
cat /home/ubuntu/.ssh/id_rsa
password
remote repo에 인증이 없는 경우
*git://*
*file://*
*https://*
) , or SSH(*ssh://*
)https://docs.semui.co/user-guide/environment
10.10.1.11
10.10.1.12
10.10.1.13
[web]
tnode1
tnode2
[db]
tnode3
[all:children]
web
db
[all:vars]
user=study
The start version of the artifact can be specified in a template parameter. Each run increments the artifact version.
Semaphore doesn't support artifacts out-of-box, it only provides task versioning.
You should implement the artifact creation yourself. Read the article CI/CD to know how to do this.
deploy
template is associated with a build
template./tmp/semaphore/fact.yml
cat << EOT > /tmp/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 }}
EOT
/tmp/semaphore/user.yml
cat << EOT > /tmp/semaphore/user.yml
---
- hosts: web
tasks:
- name: Create User {{ user }}
ansible.builtin.user:
name: "{{ user }}"
state: present
EOT
위 도전과제의 crontab 세팅을 Semaphore에서 할 수 있다.
Semaphore UI를 통해 Ansible playbook의 이력관리(성공/실패)가 가능하다.
Environment 값 변경
팀협업을 위해 user를 추가하여 관리도 가능하다.
Repository를 local filesystem이 아니라 remote 깃헙 저장소를 활요하여 Semaphore를 이용할 수 있다.