4. 태스크 생성
태스크(Task)는 사전 정의된 자동화 작업입니다.
에이전트가 설치된 노드에 명령을 실행하기 위해선 태스크를 정의해야 합니다.
본 튜토리얼에서 여러분은 DB 운영자인 ‘gildong’으로서 각 호스트의 가동 시간(uptime)을 조회하는 태스크를 생성할 것입니다.
그럼 다음과 같이 태스크를 생성해 보겠습니다:
스크립트 생성
태스크 정의 :
opmate task gentmpl 태스크 생성 :
opmate task create 태스크 발행 :
opmate task publish
스크립트 생성
우선 호스트에서 실행될 스크립트 파일을 작성합니다.
파일명은
#!/bin/bash
uptime
exit 0
태스크 정의
태스크를 생성할 때는 스크립트 외에도 스크립트를 누가, 언제, 어디서, 어떻게 실행할 건지 정의해야 됩니다.
이 때 사용되는 파일이 **태스크 정의서 파일(Task Definition Form, TDF)**입니다.
$ opmate task gentmpl -id task_uptime
> Requesting https://127.0.0.1:8443/opmate;user=gildong
> template has been saved to 'task_uptime.tdf'
이 파일을 통해 태스크 정보, 타깃 노드, 실행 스케줄, 사용자 권한 등을 설정할 수 있습니다.
주석을 참조하면서 템플릿 파일을 다음과 같이 수정합니다:
---
id: task_uptime
owner: gildong
script-account: root
description: 서버 가동 시간 조회
target:
- node-set: OS-TYPE:"^Linux$"
description: OS가 Linux인 모든 노드 대상으로 Task 실행
...
id으로 태스크의 ID값을 지정할 수 있습니다.
또한 target으로 태스크의 실행 대상이 되는 노드를 지정할 수 있습니다.
node-set을 추가하면서 정규 표현식으로 노드를 지정하면 됩니다.
본 예시에선
여기서
HOSTNAME, CSP-TAG 등의 다양한 필드를 조합해 노드를 필터링할 수 있습니다.
캐럿 기호
태스크 생성
앞서 작성한 스크립트 파일과 TDF 파일을 활용합니다.
$ opmate task create -tf task_uptime.tdf -sf task_uptime.sh
> Requesting https://127.0.0.1:8443/opmate;user=gildong
> task_uptime has been created successfully.
이 때 태스크는 수정 가능한 상태로 Master 서버에 등록됩니다.
태스크 발행
수정을 거쳐 태스크의 최종본이 확정되면 태스크를 발행해 실행 가능한 상태로 만듭니다.
$ opmate task publish -id task_uptime
> Requesting https://127.0.0.1:8443/opmate;user=gildong
> task_uptime has been published successfully.