일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- k8s
- Kubernetes
- awx
- kolla-ansible
- kolla
- golang
- KVM
- Kubeflow
- ceph-ansible
- repository
- libvirt
- Arch
- Ansible
- grafana-loki
- OpenStack
- HTML
- archlinux
- cloud-init
- terraform
- i3
- ceph
- ubuntu
- Docker
- cephadm
- nfs-provisioner
- Octavia
- Linux
- port open
- pacman
- yum
- Today
- Total
YJWANG
[Ansible-semaphore 설치] AWX, Ansible-tower 대안 본문
https://docs.ansible-semaphore.com/administration-guide/installation#docker
Ansible-semaphore는 AWX, ansible-tower와 같은 ansible을 관리하기 위한 software입니다.
AWX의 docker 설치하는 hot-potato 환경이 편리하거나 안정적이지 않다 생각하여 대안으로 ansible-semaphore를 사용하고자합니다.
1. 사전 작업
1) docker 설치
https://yjwang.tistory.com/132
2) docker-compose 설치
https://yjwang.tistory.com/153
3) ansible 설치
# apt install ansible
2. Ansible-semaphore 설치
1) docker-compose directory 생성
# mkdir -p /etc/semaphore
2) semaphore directory 생성
# mkdir -p /etc/semaphore/playbooks
3) docker-compose 파일 생성
# cat << EOF >> /etc/semaphore/docker-compose.yml
version: '2'
services:
mysql:
restart: unless-stopped
ports:
- 13306:3306
image: mysql:5.6
hostname: mysql
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
MYSQL_DATABASE: semaphore
MYSQL_USER: semaphore
MYSQL_PASSWORD: semaphore
volumes:
- mysql-data:/var/lib/mysql
semaphore:
restart: unless-stopped
ports:
- 13000:3000
image: ansiblesemaphore/semaphore:latest
volumes:
- /etc/semaphore/playbooks:/data/playbooks
- /etc/ansible:/etc/ansible
environment:
SEMAPHORE_DB_USER: semaphore
SEMAPHORE_DB_PASS: semaphore
SEMAPHORE_DB_HOST: mysql
SEMAPHORE_DB_PORT: 3306
SEMAPHORE_DB: semaphore
SEMAPHORE_PLAYBOOK_PATH: /tmp/semaphore/
SEMAPHORE_ADMIN_PASSWORD: testtest
SEMAPHORE_ADMIN_NAME: admin
SEMAPHORE_ADMIN_EMAIL: admin@localhost
SEMAPHORE_ADMIN: admin
depends_on:
- mysql
volumes:
mysql-data:
EOF
4) container 시작
# cd /etc/semaphore/
# docker-compose up -d
..
Creating semaphore_mysql_1 ... done
Creating semaphore_semaphore_1 ... done
5) 생성한 container 실행 여부 확인
# docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------
semaphore_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:13306->3306/tcp,:::13306->3306/tcp
semaphore_semaphore_1 /sbin/tini -- /usr/local/b ... Up 0.0.0.0:13000->3000/tcp,:::13000->3000/tcp
6) ansible-config 수정
# grep -Ev "^$|^#" /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False
[inventory]
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]
7) ansible-semaphore 접속
http://<server>:13000
admin / testtest
3. Ansible semaphore 구성
1) project 생성
virt-go-u20-10 서버에 test-create-file.yml playbook을 실행하도록 구성할 예정입니다.
2) Semaphore에서 사용할 ssh-key 생성
# ssh-keygen -N "" -f semph_rsa
Generating public/private rsa key pair.
# cat semph_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEAtkK6crA6ndO80n1/LoKXNYt8xIWXIwfRSviWKcmJ6KnVWkj4Jwz1
Su8UO0BIQ9zrxwqh6S/qTeiBecWcVOatYRBrFEjMb1IanjEJTS7CJbyxM/9c+SNdZyspD9
1duL12EiXOBrCV8iRB3c9+v2wSIJbwB9bpSeatzxkl4URRiIfV3GnM9I/FdmaFFBkAteoO
yUyUQmUPXWYMxs+vcSXSN0n3uU1Umn5GwhTRVcq2Diydx2vLmzatyvveab1SKAOjjkyX3M
...
3) ssh key를 배포할 서버에 clone
# ssh-copy-id -i semph_rsa root@10.62.62.10
4) key-store에 key 생성
None key도 생성합니다.
5) Env 생성
Env를 사용하지 않을 것으로 빈 파일을 생성합니다.
6) Inventory 생성
7) Repository 생성
Public git이나 ssh로 외부 환경이 아닌 Local filesystem을 repo로 사용하는 법에 대해 다루겠습니다.
7-1) test playbook 파일 다운로드
# cd /etc/semaphore/playbooks
# curl https://raw.githubusercontent.com/YoungjuWang/yjwang-playbooks/master/test-create-file.yml -o test-create-file.yml
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 357 100 357 0 0 1182 0 --:--:-- --:--:-- --:--:-- 1182
7-2) local git repo 생성
# git init
Initialized empty Git repository in /etc/semaphore/playbooks/.git/
7-3) test playbook commit
# git add test-create-file.yml
# git commit -m "test-create-file.yml"
[master (root-commit) 8c7243e] test-create-file.yml
1 file changed, 18 insertions(+)
create mode 100644 test-create-file.yml
7-4) repo 생성
8. Task Template 생성
9. Playbook 실행
실행하면 아래와 같이 console 화면이 나오고 output을 볼 수 있습니다.
10. history 확인
Dashboard를 통해 최근 playbook의 실행 상태를 확인할 수 있으며 #1 , #2와 같은 버튼을 통해 최근 실행 이력과 로그를 확인할 수 있습니다.
후기?
1) 장점
- 구성이 간편하다.
- 설정이 직관적이라 편하다.
- Ansible Tower나 AWX보다 세련된 UI?
- API 제공
2) 단점
- 타 제품 대비 잘 모르겠습니다.
github에서 4.5k를 받고 많이 개발되고 있는 오픈소스라서 개인적으로 안정성 면에서의 불안함은 없이 진행했습니다. 다만 Reference가 많지 않아 Trouble-shooting 시 자료가 많을까? 라는 걱정은 있었습니다.