Skip to content

Commit

Permalink
런덱 내용 정리
Browse files Browse the repository at this point in the history
  • Loading branch information
YonghoChoi committed Jun 18, 2018
1 parent 841caf6 commit 135fe3b
Show file tree
Hide file tree
Showing 26 changed files with 435 additions and 0 deletions.
19 changes: 19 additions & 0 deletions md/Rundeck/1_Overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# 필수 개념

* 역할 기반 액세스 제어 정책 (Role-based Access Control Policies) : 사용자 또는 사용자 그룹에 프로젝트, 잡, 노드, 커맨드, API와 같은 리소스들에 대한 권한을 부여
* 액세스 제어 정책 가이드 : http://rundeck.org/docs/administration/access-control-policy.html
* 프로젝트 (Projects) : 모든 런덱의 작업은 프로젝트 컨텍스트 내에서 발생한다. Rundeck 서버에서 다수의 프로젝트를 관리 할 수 있다.
* 프로젝트 가이드 : http://rundeck.org/docs/administration/project-setup.html#project-readme.md-and-motd.md
* 잡 (Job) : 잡은 순차적으로 실행되는 각 스탭, 작업 옵션, 노드를 캡슐화한다.
* 잡 가이드 : http://rundeck.org/docs/manual/jobs.html
* 노드 (Nodes) : 네트워크 엑세스가 가능한 실제 호스트나 가상 인스턴스를 의미한다. Rundeck에서 resource model이라 불리는 것은 프로젝트에 속한 노드들을 의미한다.
* 노드 가이드 : http://rundeck.org/docs/manual/nodes.html
* 명령 (Commands) : 노드에서 실행되는 한줄의 커맨드 문자열이다. Rundeck은 커맨드 문자열을 평가하고 대상 노드에서 명령을 실행한다.
* 명령 가이드 : http://rundeck.org/docs/manual/commands.html
* 실행 (Executions) : 실행 중이거나 완료된 명령 또는 잡의 활동을 나타낸다. 실행 데이터를 통해 잡이나 명령의 진행 상황을 모니터링하고 실행 내역을 리포팅한다.
* 실행 가이드 : http://rundeck.org/docs/manual/executions.html
* 플러그인 (Plugins) : 플러그인은 노드에서 명령을 실행하고, 잡의 각 단계를 수행하고, 작업 상태에 대한 알림을 보내고, 네트워크 호스트에 대한 정보를 수집하고, 원격 서버에 파일을 복사하고, 로그를 저장 및 스트리밍하거나, 사용자 디렉토리와 상호작용하는데 사용된다.
* 플러그인 가이드 : http://rundeck.org/docs/plugins-user-guide/index.html



77 changes: 77 additions & 0 deletions md/Rundeck/2_Jobs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# 잡 (Jobs)

## Job을 사용하는 이유

* 반복적으로 실행되는 명령
* 그룹 내 다른 사용자가 동일한 기능을 필요로 하는 경우 재사용
* 자주 사용되는 작업의 경우에는 캡슐화되어서 다른 부분에서도 재사용



## 개요

* Job은 프로세스를 캡슐화하는 수단을 제공
* Job에 엑세스하기 위한 읽기, 쓰기, 실행, 삭제 권한은 액세스 제어 정책에 의해 관리된다.
* Job이 실행 중인 경우 진행 상황 모니터링 가능
* Job 목록
* 개별 실행 단계에 대한 결과 확인
* Job 실행 중단
* Job 실행에 대해 노드 정보, 각 단계별 성공 여부 및 지속 기간 등에 대한 정보가 저장된다.
* Job 실행 결과를 다운로드 하거나 외부 저장소로 전달, 메일 등으로 알림을 보낼 수 있다.



## Job 그룹

* Job은 지속적으로 추가 되어 점점 많아 질 것이기 때문에 그룹으로 구성하는 것이 유용하다.
* 그룹은 논리적인 Job의 집합이며 하나의 Job 그룹은 다른 Job 그룹 내에 존재할 수 있다.



## Job UUID

* Job이 생성될 때 고유한 식별자(UUID)가 할당된다.
* 지원 되는 형식에 한해서 UUID를 직접 할당 할 수도 있다.



## Job 실행

* 기본적으로 단일 실행으로 실행
* 한번에 하나의 Job만 실행
* Job 간의 의존성이 있는 경우 유용
* job간의 의존성이 없는 경우는 다중 실행이 유용할 수 있다.
* Multiple Excutions 옵션을 Yes로 지정하여 다중 실행으로 변경 가능
* Timeout 시간 설정 가능
* Job이 실패하는 경우 재시도 횟수와 재시도 간격 지정 가능
* Job이 발생시키는 로그의 크기가 너무 커질 것을 대비하여 로그 출력에 대한 제한 지정 가능
* 총 로그 라인의 최대 수
* 로그 파일의 최대 크기
* 노드별 로그 라인의 최대 수
* 로그 크기 제한에 걸릴 경우 Job을 중단시키거나 로그 출력만 중단 시킬 수 있다.
* 예약을 걸어서 주기적으로 Job이 실행되도록 할 수 있다.
* Unix crontab 형식으로 정의



## 알림 및 히스토리

* Job의 시작, 완료, 성공, 실패에 대한 알림을 받을 수 있다.
* 이메일
* Webhook
* Webhook을 통해 slack이나 기타 어플과 연동 가능
* HipChat
* 그 외 알림 플러그인을 사용하여 Jira, PageDuty 등 다른 서비스와 연동 가능
* Job 실행 내역에 대한 History 확인 가능
* Job 정의에 대한 불러오기/내보내기 기능 지원



## 옵션

* 하나 이상의 옵션을 정의할 수 있고, 사용자에게 입력을 요구하도록 구성될 수 있다.
* 사용자 입력을 매개변수로 스크립트를 실행할 수 있다.
* 옵션에 스크립트 작성 가능
* 옵션에 URL을 사용하여 외부 소스를 실행하도록 구성할 수 있고, 이를 통해 다른 도구와 통합 가능
* job에 대한 명세에 XML, YAML 사용 가능
* job yaml : http://rundeck.org/docs/man5/job-yaml.html
34 changes: 34 additions & 0 deletions md/Rundeck/3_Nodes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# 노드 (Nodes)

* 네트워크로 엑세스 할 물리 호스트 또는 가상 인스턴스
* 노드 분류에 태그 사용
* 태그를 통해 필터 기능 지원



## 속성 네임스페이스 (Attribute Namespace)

* 노드에는 많은 특성들이 존재할 수 있는데 이를 네임스페이스를 사용하여 명명 규칙을 사용할 수 있다.

```
{namespace}:{name} = {value}
```

* 위와 같이 지정된 속성은 UI에서 자동으로 그룹화된다.

* 예를들어 web:pid=4872, web:state=RUNNING으로 지정한 경우 아래와 같이 그룹화

![](images/namespace.png)

* 네임스페이스 설정에 따라 필터링하고 필터를 저장하요 재사용할 수 있다.



## Node 동작

* 필터 결과 지정된 노드들에 일괄적으로 명령을 실행 할 수 있다.
* 명령은 Job을 기반으로 실행
* ACL에 의해 권한이 부여된 사용자에 한해서 명령을 수행할 수 있다.



46 changes: 46 additions & 0 deletions md/Rundeck/4_Commands.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# 명령 (Commands)

* 노드에서 실행되는 단일 명령 문자열
* Rundeck GUI에서 필터링 된 Node 그룹에 명령을 실행할 수 있다.
* SSH 또는 rd 쉘 도구를 통해 실행



![](images/command.png)

1. 명령 프롬프트 : 명령 문자열 입력
2. 명령 전송 설정 : 병렬 및 오류 제어를 위한 옵션 설정
3. 필터 표현식 : 노드를 그룹화하기 위한 필터 입력
4. 결과 필터링 목록 : 필터 표현식에 의해 그룹화 된 노드들이 목록으로 표시
5. 명령 실행 버튼 : 필터링 된 노드에 명령을 실행
6. 활동 보기 : 명령 실행 내역 보기



## 명령 실행

![](images/command_exec.png)

1. 실행 페이지로 연결 : 모든 실행에는 ID가 부여되고, 보고서를 볼 수 있는 별도의 페이지를 제공
2. 보기 옵션 : Output은 각 노드별로 시간 정보를 포함하여 자동으로 수집된다. 원하는 형태로 토글하여 볼 수 있다.
3. Output 수집 : 모든 Output은 각 노드별로 그룹화 된다.
4. Output 로그 링크 : 브라우저에서 바로 Output을 확인하거나 다운로드 받을 수 있다.



## 명령 실행 모니터링

![](images/command_monitoring.png)

1. 작업 취소 버튼 : 버튼을 눌러서 실행을 중지 시킬 수 있다.
2. 실행 상태 표시줄 : Output 보기를 닫은 상태에서도 Running 탭에서 진행 상황을 모니터링 할 수 있다.



## 명령 실행 후 리포팅

* 실행 출력만 별도로 표시되는 페이지
* 앞서 명령 실행 모니터링에서 봤던 실행 상태 표시줄을 클릭하여 리포팅 페이지로 이동 할 수 있다.

![](images/command_report.png)

134 changes: 134 additions & 0 deletions md/Rundeck/5_Excutions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# 실행 (Excutions)

* 명령이나 잡이 실행되고 있는 상태 또는 완료된 내용에 대한 표시를 의미한다.
* 실행에 대한 데이터는 잡이나 명령에 대한 진행 상황을 모니터링하고 이 후 발생 상황을 리포팅하는데 사용된다.
* 각 실행에는 명령 또는 작업의 각 단계에서 생성된 Output과 노드의 레코드 및 각 단계별 시작/종료 시간 및 상태가 포함된다.
* 각 실행은 고유한 ID로 식별되고 URL로 표현될 수 있다.
* 이 URL은 Rundeck의 다른 사용자들과 공유 할 수 있다.



## 잡 실행 뷰 (Job Excution view)

![](images/excution_job.png)

* 잡 실행 화면은 이름과 그룹을 표시하고, 책 모양의 아이콘으로 표현된다.



## 명령 실행 뷰 (Command Excution view)

![](images/excution_command.png)

* 명령 문자열을 실행이름으로 표시하고 아이콘은 터미널 명령 프롬프트 모양(>_)으로 표현된다.
* "Save as a Job …" 버튼을 누르면 동일한 노드 필터 정보를 사용하여 명령으로부터 잡을 생성하고 명령 문자열을 사용하여 워크플로의 첫번째 단계를 자동으로 정의할 수 있다.



## Summary 탭

* 실행 페이지에서 가장 왼쪽에 위치한 탭
* 실행 상태에 대한 간략한 뷰를 제공



### 동작 중인 경우 Summary 탭

![](images/excution_state.png)

1. 실행 상태 아이콘이며, 이 아이콘의 색이 파란색이면 현재 실행 상태임을 의미한다.
2. 경과 시간 진행률 표시 줄이며 평균 경과 시간은 이전 실행된 결과에 의해 계산된다. 경과 시간이 평균 지속 시간 내에 있으면 진행 표시 줄의 색이 파란색으로 표시된다. 평균을 초과하는 경우 주황색으로 표시된다.
3. ACL 정책에 의한 권한이 부여된 사용자의 경우 실행을 중지시킬 수 있다.
4. 요약 외 모니터, 로그 출력, 정의 탭으로 이동할 수 있다.
5. 노드 요약 테이블에서는 현재 실행 대기 중 인 노드와 실행 중인 경우에는 진행 단계를 표시하고, 실행을 마친 노드를 표시한다.
6. 현재 실행 중인 노드와 단계를 표시한다. 현재의 단계를 클릭하면 모니터뷰로 연결된다.
7. 실행 내역을 표시한다.



### 동작이 완료된 Summary 탭

![](images/excution_summary_complete.png)

1. 실행 상태 아이콘이 녹색으로 표시되고 성공 했음을 나타낸다. 실패한 경우에는 빨간색으로 표시된다.
2. "Run Again…" 버튼을 눌러서 다시 실행 시킬 수 있다.
3. 실행에 대해 각 단계별로 성공 여부에 대한 퍼센티지를 표시한다.
* COMPLETE : 모든 단계 실행에 성공한 노드 수
* FAILED : 실패한 단계가 존재하는 노드 수
* INCOMPLETE : 일부 시작되지 않은 단계가 있는 노드 수
* NOT STARTED : 모든 단계가 시작되지 않은 노드 수



## Monitor 탭

* 실행이 진행 중인 경우 Monitor탭이 활성화 된다.
* Monitor 탭을 통해 노드의 실행 상태나 단계별 실행 상태를 볼 수 있다.

![](images/excution_monitor.png)

1. 노드명 왼쪽의 화살표 모양의 아이콘을 클릭하면 각 단계가 표시된다. 단계를 클릭하면 Output이 표시된다.
2. 단계에 대한 상태가 표시된다. 해당 노드의 모든 단계가 완료되면 "All Steps OK"로 전환된다. 그렇지 않은 경우 "Running"으로 표시된다.
3. 현재 실행 단계가 표시된다.
4. 시작 시간과 경과 시간이 표시된다.



## Report 탭

* 실행이 완료된 경우 Report 탭이 활성화 된다.
* Report 탭을 통해 완료된 실행에 대한 보고서를 확인할 수 있다.

![](images/excution_report.png)

1. 실행에 대해 각 단계별로 성공 여부에 대한 퍼센티지를 표시한다.
* 동작이 완료된 Summary 탭 참고
2. Monitor 탭에서 보여지는 정보와 동일



## Log Output 탭

* 각 단계에서 생성되는 Output은 Log Output 탭에 표시된다.

![](images/excution_logoutput.png)

1. View Option을 통해 출력할 항목에 대해 체크박스로 선택할 수 있다.

* Log view : Time / Node / Step
* Node view : By Node / Ansi Color

2. Rundeck에서 로그를 수신한 타임스탬프 (원격 서버에서 실제로 명령을 실행한 시간이 아님)

3. 해당 단계가 수행된 노드의 이름

4. 노드에서 실행된 단계의 이름. 여기서 아이콘은 단계의 종류를 나타낸다. (잡인 경우 책 아이콘, 명령인 경우 명령 프롬프트 아이콘)

5. 단계에서 생성된 로그 Output. 표준 오류로 기록된 Output의 경우에는 갈적색(brownish red)으로 표시된다.

* View Option에서 Ansi Color가 체크되어 있는 경우에 색이 표시된다.

6. Raw 링크를 누르면 실행에 대한 메타 데이터 없이 로그 메시지만 표시한다.

```
- Web stopped (pid=8685) using method: web:stop
- Web stopped (pid=8928) using method: web:stop
- Web started (pid=15088)
- Web started (pid=15331)
```



## Definition 탭

* 잡과 명령을 통해서 실행하는 것 외에 Definition 설정을 통해 실행을 할 수 있다.
* Definition에서는 노드 필터식과 일치하는 노드들을 포함하고, 워크 플로우 전략, 오류 처리, 동시성 설정등을 할 수 있다.

![](images/excution_definition.png)

1. 각 단계가 실행 순서대로 번호가 부여된다.
2. 링크를 클릭하면 창에 스크립트가 표시된다.
3. 노드 필터링 표현식



15 changes: 15 additions & 0 deletions md/Rundeck/6_Activity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# 활동 (Activity)

* 명령이나 잡을 실행한 기록은 Rundeck 서버에 저장이되는데, Activity 페이지에서 확인 가능하다.

![](images/activity.png)

* 기본적으로 실행 중인 실행 및 최근 실행 내역이 나열된다.
* 필터를 적용할 수 있다.
* 시간범위
* 잡 이름
* 사용자
* 임시 명령
* 결과
* 필터는 저장이 가능하기 때문에 반복적으로 사용되는 필터는 저장해서 사용하면 유용하다.
* 성공한 실행 목록의 경우 출력 메시지를 확인할 수 있는 링크가 제공되고, 실패한 실행 목록의 경우 빨간색 텍스트로 노드 수가 표시된다.
50 changes: 50 additions & 0 deletions md/Rundeck/7_Configure.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# 구성 (Configure)
![](images/configure.png)

## 프로젝트 구성 (Project Configuration)

![](images/configure_project.png)

* Resource Model Source : 프로젝트의 리소스 모델 소스를 추가하고 수정할 수 있다. 이 소스에는 프로젝트의 노드 정의가 들어있고, 초기 프로젝트를 생성하고 나면 하나의 소스가 이미 정의되어 있다.
* 리소스 모델 소스의 유형은 기본적으로 파일, 디렉토리, 스크립트, URL 소스(GET)가 지원되고, 추가적으로 플러그인을 통해 다른 유형을 지정할 수 있다.
* Default Node Executor : Rundeck이 노드에서 명령을 실행하면 Node Executor를 통해서 명령을 실행한다. 기본적으로 SSH를 사용하며 다른 Executor를 사용할 수도 있다.
* Default File Copier : Rundeck이 노드에서 스크립트를 실행할 때 File Copier를 통해 스크립트를 먼저 노드에 파일로 복사하고 난 뒤에 스크립트를 실행한다. 기본적으로 SCP를 사용하며 다른 Copier를 사용할 수도 있다.



## Key Storage

* 공개키, 개인키와 같은 암호를 관리하는 API 및 GUI를 제공한다.

* 저장된 키는 Node Executor, File Copier에서 사용된다.

* 키는 파일을 업로드하거나 텍스트를 입력하여 저장할 수 있다.

* 키를 저장할 디렉토리에 대해 디렉토리 구조를 미리 정의하여 키를 구성할 수 있다.

* 예) 세개의 필드를 사용해서 키 관리

```
keys/projects/{project}/nodes/{node}/{identity}.pem convention
```
* {project} : 프로젝트 이름
* {node} : 노드 이름
* {identity} : 사용자의 이름
## 시스템 설정 & 보안
* Rundeck GUI를 통해 /etc/rundeck/framework.properties 파일 내용을 수정할 수 있다.
![](images/configure_system.png)
* Rundeck GUI를 통해 /etc/rundeck/jaas-loginmodule.conf 파일 내용을 수정할 수 있다.
![](images/configure_security.png)
Binary file added md/Rundeck/images/activity.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/command.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/command_exec.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/command_monitoring.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/command_report.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/configure.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/configure_project.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/configure_security.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/configure_system.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/excution_command.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/excution_definition.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/excution_job.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/excution_logoutput.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/excution_monitor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/excution_report.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/excution_state.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/excution_summary_complete.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added md/Rundeck/images/namespace.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 135fe3b

Please sign in to comment.