[Ansible - Semaphore Web설정] part 2

[분류별 설명]

Dashboard : 대시보드
Task Templates : Ansible-PlayBook 실행(Task)을 정의하는 템플릿을 작성합니다. (매개변수 포함)
Inventory : 대상서버들의 목록(ansible의 Hosts 파일로 생각하면 됩니다.)
Environment : 환경변수 설정
Key Store : Target 서버로 접근할때 사용할 Key(SSH Key or ID/Password 등…)
Repositories : Playbook 저장소 설정
Team : Project별 사용자 관리
 
Task Templates을 만들기 위해서는 KeyStore / Environment / Repositories / Inventory이 필요합니다.
Inventory와 Repository를 만들기 위해서도 KeyStore가 필요합니다.
따라서, 아래의 작업순서로 작업을 하는것이 초기 테스트하기 좋을것.
1차 : KeyStore / Environment
2차 : Repository / Inventory
3차 : Task Templates
 

 

Project 생성

telegram Chat ID 입력

 

SSH RSA Key 생성

[root@jh-semaphore ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
b9:f0:90:55:c7:98:23:da:84:ee:0c:f8:59:5a:73:78 root@jh-semaphore
The key's randomart image is:
+--[ RSA 2048]----+
|       .  .+.    |
|      . o.+..    |
|   . . =.. .     |
|  . . BoE.       |
|   . O++S        |
|    + o+ .       |
|        o        |
|                 |
|                 |
+-----------------+



## Private key 파일 확인
[root@jh-semaphore ~]# cat ~/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAyeyAA43IN6Cs341wCLcRrMDtxu92foylWYTZd2cGDRaqjqSz
URv6O0O60sp0nZLpp8qTx73cKNWSZ17SvZftkOYQr1Cdg+tz+XMJTK5ceV+OMN43
ZDSj2BZ9RS7KNyGMzhMXQ3WnfaEM8/yUG0RVyV3au6DrA/4108H5JmdslTv+7UMh
b3BZ40YG9sGJScwZkXKb6J5/odZNkeXoBgrG7uMSWOToDL5E0TJ7ieTdfjUEijnP
ZvnR8xG7ZIVY20g0IM69g/F8kBxkso9qNx2nlM54lNn82aPOtvwuPcKqKhloLVBx
OVU3setCnDAxFNH72S8dU8U/CKPLvhNjjsH1nQIDAQABAoIBAQDJQusNn8ISgBoO
8IDcjuwVDm9xu7iVxkYBBgNjmdJUNWVmrA73JzWw4H9UHutBK++siKPnkPvhz44P
bloLE2V86XNz6pw1oveDiP+Z6KjPaUjmuHbpb/ZnKXNPA6YWcWBQ/oJPgPOiqmWo
wvY0f1YqUVv1bB0Ta8vm9w4JE0kNLGsI8HFg4m01axBAjO0JWOEsxPVqo1FPokXg
OzovUwWlYHZemRmOTn9PqZVeTNUsHSDDdjyrg89Y7G1fIntn63I+H5P+4LiUtsg9
w3VbfnNO80mX6FmVWAdE0xmyUFJNI9VV54OxfNkqtGXHD/X5ff1Dko53KHpmGj+5
XdDRT4qBAoGBAPV2iXmlqLenSpIovQfM7in5pXmRg5CksfRXhQhUx/T/8ab0oRkz
J7xz5nXOSqrQ+pSgu/2vM/EavbTR4MROu4OzhMloEPJUL0iiDf+xen0XW7EZZygH
1c2usjxkJkVGsOxnaCLZBJXAq3xjG6sZhtDM4QgpGiLJPzAWESkVZ8YxAoGBANKX
f5LrAZqZwZK/byMJo7Ji/NoLEqQbmDiUlSz/VOAOWZC0ZVK2aRK+0KWRVKkTQWzg
XTBPF+SKr1idqfB9ANdcQ+buZ8/asHZpfBj0gAhRe24rmCKDDpBjRaG5N0vC8TWX
gKokBbCj+57Eo3JrfP3xCXfFYX8nffsKILXFS08tAoGBAMq4bA9gRjfu3MJbDMrd
b7CQ8h21lK+npSSEB2V7B20K2Bunm0jBm8ai/ak7hyUN1HVdTgTUZpRwHk6wqu3V
jD3XzAm+fYh1CFv3IpKSk/Otj9dygGRqHCRza9Y+a/D40fNb74AgNQ4sgjQHcflb
6qCVJCBmOaSTCjF/eAqzF/JxAoGAZ1JBGzoF7W4mlPMrectO70S1vdzU5oNLaecs
UYlsgQlJVD/NvokUgEfyYmktWk7COMLTtdH4bP7GDPo92GncMc1o2zJ46HfpQA98
/VloP6yKnIDzAWu/h4PNNA2FXbxlT9/nFpLZ39J0r27WqlqmVokeFg9XSGV9398W
MVh9HHkCgYA7fqcoau8L46eqrj+OI4zf6WAK5N46glaUVff8moUQhx7dxvdRKon+
7TmGv1tF1/J9BeZv21vzYK4zXPc9YC3XpPNxyu69WGSuhll7qKLU0MRPVA1yj6z2
txP1B14JYsENnJMrmisYExC62Na8JNyaqIyIUX21VMGRmD69kxvKxw==
-----END RSA PRIVATE KEY-----



## SSH public Key를 target 서버에 배포
# ssh-copy-id -I ~/.ssh/id_rsa.pub <Target Server User>@<Target Server IP>

[root@jh-semaphore ~]# cat  ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys


[root@jh-semaphore .ssh]# vi authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJ7IADjcg3oKzfjXAItxGswO3G73Z+jKVZhNl3ZwYNFqqOpLNRG/o7Q7rSynSdkumnypPHvdwo1ZJnXtK9l+2Q5hCvUJ2D63P5cwlMrlx5X44w3jdkNKPYFn1FLso3IYzOExdDdad9oQzz/JQbRFXJXdq7oOsD/jXTwfkmZ2yVO/7tQyFvcFnjRgb2wYlJzBmRcpvonn+h1k2R5egGCsbu4xJY5OgMvkTRMnuJ5N1+NQSKOc9m+dHzEbtkhVjbSDQgzr2D8XyQHGSyj2o3HaeUzniU2fzZo862/C49wqoqGWgtUHE5VTex60KcMDEU0fvZLx1TxT8Io8u+E2OOwfWd root@jh-semaphore
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqXgA3lpD5kB/tymjauiZuuatgLYpd5WTjipi5ZtZQp0zGTnkcDT+sHJabZBeenut7NSDmlCKyWBEEp/MtX2nnIjsqgeIE9KOxCwmWsV6Fu3O/NYMt/HQ1R4ABBejWAhWFvdTXj1VPDaG5MQ6u5Po20eiMAxSmPBJoANkGV8WGsR+KiIR9fqNy450i7k1/nJaZHbxnIzKjJG6gotxaRzqt+OxUFmX/11HU7aT2buVtDJlVXWjACXwfGqsLq39L33OuY1tTCKfYj8Sw7PwyGlHHU+20HbHsAQIzkZq/OchHPVidKc94ptNWVcYwVwsAFz8x2dFZ+SpYhQNSftrk6n35 root@target



[root@target .ssh]# vi authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqXgA3lpD5kB/tymjauiZuuatgLYpd5WTjipi5ZtZQp0zGTnkcDT+sHJabZBeenut7NSDmlCKyWBEEp/MtX2nnIjsqgeIE9KOxCwmWsV6Fu3O/NYMt/HQ1R4ABBejWAhWFvdTXj1VPDaG5MQ6u5Po20eiMAxSmPBJoANkGV8WGsR+KiIR9fqNy450i7k1/nJaZHbxnIzKjJG6gotxaRzqt+OxUFmX/11HU7aT2buVtDJlVXWjACXwfGqsLq39L33OuY1tTCKfYj8Sw7PwyGlHHU+20HbHsAQIzkZq/OchHPVidKc94ptNWVcYwVwsAFz8x2dFZ+SpYhQNSftrk6n35 root@target
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJ7IADjcg3oKzfjXAItxGswO3G73Z+jKVZhNl3ZwYNFqqOpLNRG/o7Q7rSynSdkumnypPHvdwo1ZJnXtK9l+2Q5hCvUJ2D63P5cwlMrlx5X44w3jdkNKPYFn1FLso3IYzOExdDdad9oQzz/JQbRFXJXdq7oOsD/jXTwfkmZ2yVO/7tQyFvcFnjRgb2wYlJzBmRcpvonn+h1k2R5egGCsbu4xJY5OgMvkTRMnuJ5N1+NQSKOc9m+dHzEbtkhVjbSDQgzr2D8XyQHGSyj2o3HaeUzniU2fzZo862/C49wqoqGWgtUHE5VTex60KcMDEU0fvZLx1TxT8Io8u+E2OOwfWd root@jh-semaphore



## 비밀번호 없이 target 서버에 접속 확인
[root@jh-semaphore .ssh]# ssh 192.168.100.53
Last login: Fri Apr 22 11:29:52 2022 from 192.168.100.31
[root@target ~]#

 

 

Key Store -> NEW KEY ->private key 입력 -> create

 

일반 git hub를 이용해도 되나 저는 Local git을 사용하였습니다.

Local Git 생성 
[root@jh-semaphore ~]# mkdir /semaphore/playbooks

[root@jh-semaphore ~]# cd /semaphore/playbooks/

[root@jh-semaphore playbooks]# vi CheckOSVersion.yml

---
- name: Check OS Version to Target Server
  hosts: all
  tasks:
  - name: Check OS Version
    register: result
    shell: cat /etc/redhat-release
  - debug:
      msg: "{{ result.stdout }}"
~

 

 

Local git Repo

[root@jh-semaphore playbooks]# git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint:     git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint:     git branch -m <name>
Initialized empty Git repository in /semaphore/playbooks/.git/



[root@jh-semaphore playbooks]# git config --global user.email "sempahore@example.com"

[root@jh-semaphore playbooks]# git config --global user.name "semaphore"


## 테스트 playbook파일 local git에 commit
[root@jh-semaphore playbooks]# git commit -m "CheckOSVersion.yml"
[master (root-commit) 70cde4e] CheckOSVersion.yml
1 file changed, 9 insertions(+)
create mode 100644 CheckOSVersion.yml

 

 

Repositories 생성

Repositories -> NEW REPOSITORY -> URL란에 로컬 playbook 경로 입력 -> CREATE 클릭

 

 

 Environment

Environment -> NEW ENVIRONMENT -> 입력 -> CREATE
환경변수는 JSON형태로 저장해야 합니다.
 

 

 

Inventory 생성

Inventory -> NEW INVENTORY -> 입력 -> CREATE

인벤토리 파일로 Ansible의 Hosts 파일이라고 생각하면 됩니다. static하게 대상 서버 ip써주었습니다.

 

 

▶Task Templates

Task : ansible-playbook을 실행합니다.
Build : Artifacts 를 만드는데 사용합니다.
Deploy : Target 서버에 Artifacts를 배포하는데 사용합니다.
미리 만들어 놓은 테스트용 CheckOSVersion.yml 파일을 입력해줍니다.

 

 

▶Task Templates 실행 

ACTIONS -> RUN 클릭

RUN클릭

 

success 확인 

 

 

참고

https://lifeplan-b.tistory.com/190?category=874512

 

Ansible Semaphore 2.8.53 사용법

오늘은 Ansible Semaphore의 사용법을 알아보기 위해서 작성하였습니다. Ansible Semapore Version : 2.8.53 Ansible Semaphore Install 과정이 필요하신 분은 이전글에서 확인을 바랍니다. 2022.03.24 - [IT Know..

lifeplan-b.tistory.com