5. 태스크 실행 및 권한 확인
태스크가 정상적으로 발행됐다면, 태스크를 실행(Execution) 할 수 있습니다.
태스크가 실행되면 실행 인스턴스가 만들어지고, 실행 인스턴스별로 실행 ID를 부여받게 됩니다.
태스크 실행
$ opmate execution run -ts task_uptime
> Requesting https://127.0.0.1:8443/opmate;user=gildong
> execution #1 has been created successfully.
- ‘Execution #1‘으로 태스크가 실행된 것을 확인할 수 있습니다.
- 이때 ‘1’ 은 해당 실행의 실행 ID입니다.
Execution 결과 조회
$ opmate execution listnode -id 1
> Requesting https://127.0.0.1:8443/opmate;user=gildong
+--------------------------------------+-----------------+---------------+-----------+---------+
| NODE-SESSION-ID | HOSTNAME | REMOTE-ADDR | STATUS | RESULT |
+--------------------------------------+-----------------+---------------+-----------+---------+
| 9510d4b6-4269-4b00-a2be-cb408c6e668d | APP-DEV-LINUX | 11.22.33.46 | stopped | n/a |
| 01d5020e-dc5f-4744-ad9c-22f23727db76 | DB-DEV-LINUX | 11.22.33.43 | completed | success |
| ea3117fe-2c16-4533-afb7-8b0fe7685251 | DB-PROD-LINUX | 11.22.33.45 | completed | success |
+--------------------------------------+-----------------+---------------+-----------+---------+
> ROWS COUNT : 3/3
모든 리눅스 노드를 대상으로 태스크를 실행했기에 총 3개의 노드가 조회됩니다.
여기서 STATUS가
STATUS가
만약 STATUS가
실행 완료된 노드 중 하나인 ‘DB-DEV-LINUX’를
$ opmate execution viewnode -id 1 -nd 01d5020e-dc5f-4744-ad9c-22f23727db76
> Requesting https://127.0.0.1:8443/opmate;user=gildong
+-----------------+--------------------------------------+
| FIELD | VALUE |
+-----------------+--------------------------------------+
| NODE-SESSION-ID | 01d5020e-dc5f-4744-ad9c-22f23727db76 |
| HOSTNAME | DB-DEV-LINUX |
| REMOTE-ADDRESS | 11.22.33.43 |
| ACCOUNT | root |
| STATUS | completed |
| RESULT | success |
| EXIT-NUM | 0 |
| FORCE-STOP | n/a |
| START-DATE | 2024-03-20 16:14:19 KST |
| END-DATE | 2024-03-20 16:14:20 KST |
+-----------------+--------------------------------------+
[STDOUT]
07:14:20 up 4:45, 0 users, load average: 0.05, 0.03, 0.01
[STDERR]
No content.
표준 출력(STDOUT)으로 스크립트(
그렇다면 이번엔 STATUS가
$ opmate execution viewnode -id 1 -nd 9510d4b6-4269-4b00-a2be-cb408c6e668d
> Requesting https://127.0.0.1:8443/opmate;user=gildong
+-----------------+--------------------------------------+
| FIELD | VALUE |
+-----------------+--------------------------------------+
| NODE-SESSION-ID | 9510d4b6-4269-4b00-a2be-cb408c6e668d |
| HOSTNAME | APP-DEV-LINUX |
| REMOTE-ADDRESS | 11.22.33.46 |
| ACCOUNT | root |
| STATUS | stopped : no role of node |
| RESULT | n/a |
| EXIT-NUM | |
| FORCE-STOP | n/a |
| START-DATE | |
| END-DATE | |
+-----------------+--------------------------------------+
[STDOUT]
No content.
[STDERR]
No content.
그러면 role이란 과연 무엇이고, 왜 태스크 실행이 중단되었을까요?
권한 확인
역할(Role)은 노드에서의 태스크 실행 권한입니다.
태스크의 소유자(Owner)가 노드를 태스크의 대상으로 지정할 때는 반드시 지정한 노드에 대한 역할을 가지고 있어야 합니다.
그럼 ‘gildong’ 이 어떤 역할을 가지고 있는 지 조회해 보겠습니다.
우선
$ opmate role list
> Requesting https://127.0.0.1:8443/opmate;user=gildong
+-------------+------------+
| ID | NAME |
+-------------+------------+
| ro-app-dev | APP 개발자 |
| ro-db-admin | DB 관리자 |
| ro-db-dev | DB 개발자 |
+-------------+------------+
>ROWS COUNT : 3/3
총 3개의 역할이 조회됩니다.
다시 한번 상기하자면, ‘gildong’은 DB 관리자입니다.
따라서
$ opmate role view -id ro-db-admin
> Requesting https://127.0.0.1:8443/opmate;user=gildong
+----------+------------------------------------+
| FIELD | VALUE |
+----------+------------------------------------+
| ID | ro-db-admin |
| NAME | DB 관리자 |
| CREATED | 2024-03-20 16:02:14 KST BY admin |
| UPDATED | 2024-03-20 16:14:04 KST BY admin |
+----------+------------------------------------+
| NODE-SET | #1. HOSTNAME:"^DB-" AS * # DB 서버 |
+----------+------------------------------------+
| USER | admin(관리자) |
| | gildong(홍길동) |
+----------+------------------------------------+
USER는 역할을 사용할 수 있는 사용자입니다. 예시에선 ‘admin’과 ‘gildong’ 이 해당합니다.
NODE-SET은 역할을 가진 사용자가 사용할 수 있는 노드입니다. 정규 표현식으로 지정되어 있습니다.
예시에서는 호스트명이 ‘DB-‘로 시작되는 모든 노드가 지정되어 있는데요,
‘DB 관리자’ 역할만 가지고 있는 ‘gildong’ 에게는 해당 노드에 대한 권한, 즉 역할이 없습니다.
따라서 해당 노드를 제외하여, DB 노드에서만 태스크를 실행하고 싶다면
4장: 태스크 정의에서 만들었던 태스크 정의서(
---
id: task_uptime
owner: gildong
publisher: gildong
script-account: root
description: 서버 가동 시간 조회
target:
- node-set: HOSTNAME:"^DB-", OS-TYPE:"^Linux$"
description: OS가 Linux인 모든 DB 대상으로 Task 실행
이는
수정 후 task_uptime 태스크를 수정(
$ opmate execution listnode -id 2
> Requesting https://127.0.0.1:8443/opmate;user=gildong
+--------------------------------------+-----------------+---------------+-----------+---------+
| NODE-SESSION-ID | HOSTNAME | REMOTE-ADDR | STATUS | RESULT |
+--------------------------------------+-----------------+---------------+-----------+---------+
| 01d5020e-dc5f-4744-ad9c-22f23727db76 | DB-DEV-LINUX | 11.22.33.43 | completed | success |
| ea3117fe-2c16-4533-afb7-8b0fe7685251 | DB-PROD-LINUX | 11.22.33.45 | completed | success |
+--------------------------------------+-----------------+---------------+-----------+---------+
> ROWS COUNT : 2/2
‘APP-DEV-LINUX’ 노드가 실행 목록에서 제외된 것을 확인할 수 있습니다.