Anyframe Oden

version 1.3.0

본 문서의 저작권은 삼성SDS에 있으며 Anyframe 오픈소스 커뮤니티 활동의 목적하에서 자유로운 이용이 가능합니다. 본 문서를 복제, 배포할 경우에는 저작권자를 명시하여 주시기 바라며 본 문서를 변경하실 경우에는 원문과 변경된 내용을 표시하여 주시기 바랍니다. 원문과 변경된 문서에 대한 상업적 용도의 활용은 허용되지 않습니다. 본 문서에 오류가 있다고 판단될 경우 이슈로 등록해 주시면 적절한 조치를 취하도록 하겠습니다.

2010.07.09


1. Overview
1.1. Introduction
1.2. Key Features
2. Concepts
2.1. Architecture
2.2. Servers and Agents
2.2.1. Servers
2.2.2. Agents
2.3. Deploying Items
2.3.1. Policies
2.3.2. Tasks
2.4. User Interface
2.4.1. Command Line Interface
2.4.2. Ant Script
2.4.3. Graphical User Interface
3. Getting Started
3.1. Getting Started
3.1.1. 설치 및 실행
3.1.2. 배포
3.1.3. 인증
3.1.4. 변경파일만 배포
3.1.5. ant 연계
3.1.6. 외부 app과 연계
3.1.7. 기타
4. Install and Configuration
4.1. System Requirements
4.2. Installing Anyframe Oden
4.2.1. Server and Agents
4.2.2. Eclipse Plug-in(별도 제공)
5. Working with Command Line
5.1. Introduction to Oden Command Line
5.1.1. 커맨드라인에서 명령어 실행
5.1.2. Web Console에서 명령어 실행
5.2. Oden Commands
5.2.1. Policy Command
5.2.2. Task Command
5.2.3. History Command
5.2.4. Agent Command
5.2.5. Status Command
5.3. Viewing Help
5.3.1. Policy Command의 사용법 조회
6. Working with Ant Script
6.1. Introduction to Oden Ant Script
6.2. Install Oden Ant Script
6.2.1. Jar 파일 다운로드
6.2.2. Configuration
6.3. Apply with Oden Ant Script
6.3.1. <oden-task/>
6.3.2. <deploy/>
6.3.3. <remove/>
6.3.4. <agent/>
6.4. Example Code
6.4.1. Build 파일 속성 정의
6.4.2. Agent grouping 정보 파일
6.4.3. Build 파일에 Oden 포함
7. Working with Eclipse Plug-in (별도 제공)
7.1. Introduction to Oden Eclipse Plug-in
7.2. Oden Explorer
7.2.1. Servers
7.2.2. Build Repositories
7.3. Oden Policy and Task Editor
7.3.1. Policies Tab
7.3.2. Tasks Tab
7.4. Oden Job Manager
7.4.1. Deploy by Task
7.4.2. Deploy by Note
7.5. Oden Deployment History
7.5.1. Searching Deployment History
7.5.2. Advanced Search
7.5.3. Undo and Retry
7.6. Oden Dashboard
7.6.1. Dashboard
7.6.2. Transmit Results
7.7. Oden Snapshot (모듈 별도 제공)
7.7.1. Managing Snapshot Plans
7.7.2. Managing Snapshots
7.7.3. Rollback with Snapshots

1.Overview

Anyframe Open Deployment ENvironment (이하 Oden) [1] 은 CI [2] 환경을 통해 빌드된 어플리케이션 컴포넌트 및 각종 설정파일, 웹파일 등을 원하는 배포대상서버에 편리하게 배포할 수 있도록 하는 배포관리 툴이다. 본 장에서는 Oden의 개발 배경 및 주요 특징에 대한 간략한 소개를 제공한다.

1.1.Introduction

최근의 일반적인 중대형 개발 프로젝트의 프로세스는 요구정의로부터 시작하여 분석 및 아키텍처정의, 설계, 개발, 이행 등으로 진행하는 것이 최근의 추세이며, 여러 벤더들은 이러한 각 공정 단계에 특화된 다양한 툴을 제공하고 있다. 그러나 분석/아키텍처정의/설계 단계에서 활용할 수 있는 다양한 툴과는 달리, 개발단계 이후 활용할 수 있는 툴의 범위는 다소 부족한 듯 하다. 특히, 개발한 어플리케이션 컴포넌트들을 개발서버 및 테스트서버 혹은 그 너머의 운영서버 등에 배포할 수 있는 전문화된 배포관리 툴에 대한 선택의 폭은 매우 작은 것이 현실이다.

이러한 전문적인 배포관리툴의 부재로 인해, 현장 프로젝트에서는 몇가지 어려움에 직면하게 된다.

첫째, 자동화 및 정형화된 배포관리가 이루어지지 않아 프로젝트 진행 및 운영 시 추가적인 리소스가 필요하게 된다.

  • 기존에는 수작업 또는 CI엔진에 의한 복사 등으로 배포를 실시하였는데, 이를 관리하기 위해 QAO [3] 혹은 SA [4] 에 의한 배포관리가 전문적으로 이루어져야 했음

  • 배포대상서버가 여러대일 경우, 해당 작업을 단순반복하여 처리해야 하므로 번거로운 작업을 수행해야 함

둘째, 배포 시 고려할 수 있는 다양한 배포 방법에 일일이 대응하기가 어렵게 된다.

  • 전문적인 배포관리 툴이 없다면 전체 배포, 원하는 것만 배포, 변경된 사항만 배포 등 현장에서 요구하는 다양한 배포 방식에 일일이 대응하기 어려움

  • 특히, 개발서버에서는 대개 변경된 사항만 배포되면 족함에도 불구하고, 일일이 비교하는 것이 번거롭기 때문에 전체를 한꺼번에 배포할 경우가 많음

  • 실제로 일일이 비교하여 배포하는 경우라도, 누락되는 것이 있어 결국 배포에 실패하게 되는 경우가 발생함

셋째, 표준화 및 정형화된 프로세스에 기반한 개발 및 이행단계 진행이 어렵게 된다.

  • 프로세스화된 배포 환경의 부재는 매번 배포시마다 업무의 혼란 및 리소스의 낭비 여지를 제공하게 됨

  • 이를 위해 배포 정책 설정, 스냅샷/롤백, 로그분석, 스케쥴링/배치, 워크플로우 적용 등 다양한 기능들이 필요함

Oden은 이러한 어려움을 극복하기 위한 자동화된 배포관리 환경을 제공한다.

1.2.Key Features

Oden은 다음과 같은 주요 특징을 지닌다.

첫째, 현장 프로젝트의 다양한 상황에 대응하기 위한 개방적이고 유연한 구조를 지향한다.

  • 현장의 추가기능 요구에 유연하게 대응할 수 있도록 플러그인 형태(OSGi Bundle)로 기능을 추가할 수 있는 플랫폼을 활용하였음

  • Http프로토콜을 통해 명령어 형태로 Oden과 연계할 수 있어, 기존 이관 시스템과의 연계가 편리

둘째, 다양한 형태의 배포 방법을 지원한다.

  • 일괄 배포

  • 변경된 것만 배포

  • 실패한 것만 배포

셋째, 배포관련 다양한 부가기능 및 가이드를 제공한다.

  • 배포 취소 기능

  • 이력 조회 기능

  • 서버간 정합성 검증 기능

넷째, 다양한 배포환경에 적용할 수 있도록 안정적인 성능을 보장한다.

  • 대량, 대용량 배포물에 대한 안정적인 배포실행 제공 [5]

  • 물리적 디스크 I/O를 최대한 줄여 속도 확보

  • 적은 메모리와 디스크(약 2MB) 사용량

다섯째, 다양한 인터페이스를 제공한다.

  • CLI 환경을 통한 배포 실행 및 모니터링

  • Web UI를 통한 배포 실행 및 모니터링

  • Eclipse plugin 을 통한 배포 실행 및 모니터링

  • Ant 연계를 통한 배포 실행



[1] Oden은 OSGi, Eclipse 등 Java 기술을 활용하고 있으며, 손쉽게 확장이 가능한 개방형 아키텍처를 지향한다. 더불어 각종 UNIX, Mac OS X, Microsoft Windows 등 다양한 플랫폼 환경을 지원한다.

[2] Continuous Integration: 빌드, 테스트, 배포 등의 일련의 절차를 통합/자동화함으로써 소프트웨어 딜리버리의 시간을 단축시키는 기법 및 이를 가능하게 하는 것

[3] Quality Assurance Officer: 품질관리자

[4] Software Architect: 소프트웨어 아키텍트

[5] Anyframe Oden 개발팀 내부의 자체적인 성능검사 결과, 대량(250,000여 개의 컴포넌트) 및 대용량(6GB 정도의 용량) 배포환경에서 안정적인 배포결과를 보여주었다.

2.Concepts

본 장에서는 Oden에 대한 보다 상세한 이해를 돕기 위해, Oden에서 지향하는 아키텍처의 형태 및 주요 구성요소에 대한 소개를 제공한다.

2.1.Architecture

Oden을 활용한 배포관리 환경은 크게 다음과 같은 구성요소로 이루어진다.

  • Server and Agent

    배포관련 각종 작업을 수행하는 핵심모듈로, Server는 빌드리파지토리 에, Agent는 배포대상서버에 설치되며, CLI 기반 UI를 제공함

  • Build Repository

    CI 환경에 의해 빌드된 각종 컴포넌트들이 저장된 장소로, 배포대상서버의 디렉토리 구조와 동일하게 구성되어야 함

  • GUI Tool

    Eclipse Plug-in 등을 활용하여 Oden 관련 각종 배포작업을 수행하는 GUI 환경

Oden을 활용하기 위해 Eclipse Plug-in을 사용할 경우, Eclipse의 Plug-in 기반 아키텍처의 장점에 의해, 모델링-코드생성-빌드-테스트-배포 및 형상/이슈관리를 유기적으로 통합시킬 수 있다. 이러한 일련의 흐름을 예를 들어 설명하면 다음과 같다.

  1. 설계모델링을 통해 Eclipse 프로젝트 및 소스코드를 생성한다.

  2. 생성된 코드를 바탕으로 필요한 비즈니스로직을 추가하여 프로그램을 작성한다.

  3. 이러한 개발을 진행할 때에는 테스트케이스를 함께 생성하여 진행함으로써 개발생산성 및 유지보수성을 증대시킨다.

  4. CI 엔진과 연계하여 빌드 시 테스트 수행을 포함하여 통합빌드를 진행한다.

  5. 배포관리툴과 연계하여 원하는 배포대상서버에 배포를 실시한다.

  6. 이러한 일련의 과정을 이슈관리 시스템 및 형상관리 시스템과 연계시켜 체계적으로 관리한다.

다음 그림은 이러한 유기적인 통합의 모습을 개념적으로 나타낸 것이다.

Oden을 활용한 배포환경 구성 시에는 Server는 빌드리파지토리에 위치시키고, Agent는 배포대상서버에 위치시켜야 한다. 설치 관련 자세한 사항은 "Installing Anyframe Oden" 을 참고하도록 한다.

Oden을 활용하여 배포대상물을 원하는 배포대상서버에 배포하고, 로그를 통해 결과를 조회하며, 원하지 않는 경우 직전 배포상태로 되돌릴 수 있다. 이러한 일련의 내용을 각 구간별로 설명하면 다음과 같다.

  • CI서버를 통해 배포대상물을 빌드

  • Oden UI(CLI, Web, Ant, Eclipse)를 통해 배포 요청

  • 배포대상물에 대한 변경감지하여 변경대상 Agent로 전달

  • Agent통해 배포 및 배포내역 저장

  • Oden UI를 통해 배포결과 확인

다음 그림은 이러한 배포 흐름을 개념적으로 설명한 것이다.

2.2.Servers and Agents

Oden의 Server 및 Agent는 배포작업을 실질적으로 관할하고 수행하는 역할을 수행한다.

Server 및 Agent는 배포할 것들을 확인, 감지, 목록화, 전송, 배포하는 일련의 작업들을 수행하며, 이러한 것들은 각각의 기능구성 및 설치 환경 등을 고려하여 개별 번들 [6] 로 구성되어 있다.

2.2.1.Servers

Oden Server는 각종 UI 환경과의 연계를 위한 서비스를 제공한다. 사용자는 Oden UI 를 통해 Oden Server로 명령을 내리고, Oden Server는 Agent에 적절한 요청을 보낸다.

Oden Server는 Build Repository가 있는 서버에 설치하여야 한다. Build Repository 로 부터 배포대상 파일을 읽어 Agent로 전송한다.

2.2.2.Agents

Oden Agent는 Oden Server로부터 전달받은 배포대상물을 지정된 위치에 배포 및 Server로 부터 받은 각 종 요청을 수행한다.

파일이 배포될 서버에 각각 한 개씩 설치해야 한다.

2.3.Deploying Items

Oden은 배포작업의 효율성을 위해 배포정책(Policy) 및 배포작업(Task)에 의해 배포를 실시한다.

2.3.1.Policies

특정 아이템을 배포하겠다는 내용을 “배포정책”으로 서버에 저장하여, 개별 사용자가 정의한 배포정책을 다수의 사용자가 공유하여 활용할 수 있다.

배포정책에 대한 보다 자세한 내용은 "Policy Command""Oden Policy and Task Editor" 등을 참고한다.

2.3.2.Tasks

하나 이상의 배포정책을 묶어서 “배포작업”으로 설정한 후, 해당 배포작업을 실행시키면, 배포작업 내에 정의된 배포정책에 의해 배포대상물들이 배포된다. 배포작업에 대한 보다 자세한 내용은 "Task Command""Oden Policy and Task Editor" 등을 참고한다.

배포를 수행하는데 번거롭게 여겨질 수도 있는 배포정책(Policy)와 배포작업(Task)의 다단계 구성을 한 이유는 다음과 같다.

  • 한번 작성한 배포정책을 여러사람이 여러번 재사용할 수 있도록 하게 함

  • 배포정책 자체를 꼭 필요한 범위만으로 설정할 수 있는 모듈 구성으로 만들어서 빈번한 배포 시에 보다 신속한 배포작업을 가능하게 함

  • 여러개의 배포정책을 하나로 묶어서 한번에 실행하는 배포작업을 구성할 수 있도록 하게 함

이상의 Policy와 Task 간의 관계를 그림으로 나타내면 다음과 같다.

2.4.User Interface

Oden은 기본적으로 CLI(Command Line Interface) 환경을 제공하며, 사용의 편리를 위해 별도의 GUI환경을 제공한다.

2.4.1.Command Line Interface

Oden Server에서 제공하는 스크립트를 통해 Oden으로 명령어를 전달할 수 있다. 보다 자세한 사항은 "Working with Command Line" 을 참고한다.

2.4.2.Ant Script

Ant 스크립트로 Oden Server에 배포를 요청할 수 있다. 자세한 내용은 "Working with Ant Script" 을 참고한다.

2.4.3.Graphical User Interface

Oden Eclipse Plug-in은 배포관리를 위한 Oden Server와 연계 하여 배포관리를 지원하는 플러그인으로, 배포 용이성 및 높은 신뢰성을 기대하게 해 준다. 보다 자세한 사항은 "Working with Eclipse Plug-in" 을 참고한다.



[6] Oden Server 및 Agent는 OSGi 표준사양을 따르는 개별 번들로 구성되어 있다.

3.Getting Started

본 장에서는 짧은 시간내에 Oden의 전반적인 기능에 대해 알아볼 수 있도록 가이드를 제공한다.

3.1.Getting Started

3.1.1.설치 및 실행

파일이 있는 시스템에는 Oden을 Server모드로, 파일이 배포될 시스템에는 Oden을 Agent모드로 구동해야 한다. 여기서는 편의상 동일 시스템에 Server와 Agent를 모두 설치하고 진행한다. Oden이 설치될 디렉토리 및 상위 디렉토리에 공백이 있어서는 안된다. Windows의 바탕화면의 경우 상위 폴더에 공백이 있기 때문에, Oden이 제대로 실행되지 않을 수도 있다.

3.1.1.1.server 실행

  • Anyframe-Oden-x.x.x-bin.zip의 압축 해제

  • bin폴더로 이동하여 startup.cmd 실행

3.1.1.2.agent 실행

  • bin폴더로 이동하여 startup-agent.cmd 실행(startup.cmd는 server모드, startup-agent.cmd는 agent모드로 Oden을 구동시킨다.)

3.1.1.3.server에 agent등록 확인

서버가 설치된 경로로 가서 conf/config.xml에 아래의 내용이 있는지 확인한다. agent의 위치나 port등이 수정되었을 경우 혹은 새 agent를 추가할 경우 이 내용을 수정해 주어야 한다.

<agent name="sampleapp">
  <address host="localhost" port="9872"/>
  <default-location value="target"/>
  <backup-location value="snapshot"/>
</agent>
			
  • sampleapp는 배포위치를 지칭하는 별칭

  • localhost는 배포될 url(agent가 설치된 서버의 url)

  • port는 agent의 포트(디폴트 9872. agent.ini에서 수정 가능)

  • default-location은 파일이 배포될 경로 (상대 path일 경우 oden이 설치된 path를 기준으로 최종경로를 찾는다.)

  • backup-location은 배포시 생성되는 임시파일이 저장될 경로 (상대 path일 경우 oden이 설치된 path를 기준으로 최종경로를 찾는다.)

3.1.1.4.연결 확인

Oden이 설치된 경로의 bin폴더로 가서 아래와 같이 입력

runc.cmd agent info sampleapp
			

... status = true ... 가 나오면 sampleapp과의 연결 성공

3.1.2.배포

3.1.2.1.웹콘솔 실행

커맨드라인이 아닌 웹브라우저로도 명령 실행 가능. 웹브라우저에서 아래의 url 입력

http://localhost:9860/wconsole.html
			
  • localhost는 server가 설치된 서버의 url

  • 9860은 server의 포트(oden.ini에서 수정 가능)

3.1.2.2.배포정책 추가

policy info명령어를 입력하여 아래와 같은 배포 정책이 추가되어 있는지 확인한다.

sampleapp = -r "file://doc" -i "**" -d "sampleapp:~"
			
  • sampleapp는 이 배포정책의 이름

  • -r file://doc는 배포될 파일이 존재하는 경로(oden설치폴더 이하의 doc 폴더)

  • -i "**" 배포될 파일 지정(**는 하위 디렉터리 포함함을 의미. 일부 쉘에서는 *를 디렉터리내의 모든 파일목록으로 변경해 버리므로 ""로 묶어주는 것이 좋다.)

  • -d sampleapp:~ (config.xml에 지정한 sampleapp의 default-location으로 배포하겠음을 의미)

3.1.2.3.배포

위에서 확인한 sampleapp 배포정책을 수행한다. doc이하의 파일들이 sampleapp의 default-location인 target폴더로 배포될 것이다.

task run sampleapp -sync
			
  • -sync는 배포가 끝날때까지 기다리라는 옵션. 배포량이 많을 경우 -sync옵션을 사용하면 대기 시간이 길어지므로, -sync를 사용하지 않고 배포 한 뒤, status info 명령어를 통해 진행사항을 확인하길 권장한다.

3.1.2.4.결과 확인

최근에 배포한 날짜의 목록을 조회하려면 아래와 같이 입력한다.
history info
			

가장 최근에 배포에 대한 상세 내역을 보려면 아래와 같이 입력한다.

history show
			

Oden이 설치된 폴더 이하에 target 폴더가 새로 생성되었고, doc이하의 파일들이 배포되었음을 확인한다.

3.1.3.인증

3.1.3.1.계정 추가

  • 서버가 설치된 경로의 bin폴더로 이동

  • acc.cmd <id> <pwd> 입력 (유저를 삭제하려면 conf/account.txt에서 해당 라인 삭제. 디폴트 계정: oden/oden0 )

기 등록된 계정의 password를 변경하고 싶다면, acc.cmd <기존계정> <새 password>를 입력하면 된다.

3.1.3.2.웹으로 실행

  • 웹콘솔(http://localhost:9860/wconsole.html) 실행하여 help입력

  • id와 pwd묻는 창이 뜨면 위에서 추가한 계정이나 디폴트 계정(oden/oden0)를 입력한다.

  • 정상적으로 결과가 나오는지 확인한다.

3.1.3.3.커맨드라인으로 실행

커맨드라인으로 Oden에 명령을 내릴 경우, 별도로 id와 pwd를 입력받지 않기 때문에, 어느 계정으로 수행할 것인지 미리 설정해 주어야 한다.

  • 커맨드라인으로 실행시 사용할 유저를 설정하기 위해 conf/oden.ini 오픈

  • console.user 에 추가된 유저id중 하나 입력(default로 oden계정이 설정되어 있다.)

  • bin폴더로 이동한 뒤, runc.cmd help를 입력하여 결과가 제대로 나온다면 성공

3.1.4.변경파일만 배포

Oden은 원본파일과 배포된 파일의 시간과 size등을 비교하여 변경된 파일만 배포할 수 있다. 실제 CI환경을 통해 작업시, 빌드 단계에서 부터 수정된코드만 빌드(Incremental Build)를 해주어야 하나, 여기서는 빌드작업없이 배포될 파일을 직접 수정한 뒤, 변경된 파일만 배포가 되었음을 확인할 것이다.

3.1.4.1.배포될 파일 수정

doc/html폴더로 이동하여 ch02.html을 오픈한다.

적당한 위치의 글자를 수정하거나 스페이스등을 입력하여, 파일을 수정한다.

3.1.4.2.파일 배포

WebConsole이나 커맨드라인을 통해 아래의 명령을 입력한다.

task run sampleapp-update -sync
			

1개의 파일만 배포가 되었음을 확인한다. 상세 배포내역은 history show명령어를 통해 확인할 수 있다.

Incremental build란?

변경파일만 배포하기 위해서는 ant에서 제공하는 Incremental build로 빌드하여야 함. ant의 javac는 소스에 해당하는 .class파일이 존재하지 않을 때만 빌드를 수행하므로 변경된 소스의 .class만 삭제해 주는 것이 원리.

<target name="init">
  <depend srcdir="${src}" destdir="${dest}" closure="yes"/>
  <delete dir="${dist}"/>
  <mkdir dir="${dist}"/>
</target>
			

ant의 depend 태그를 이용하여 변경이 일어난 소스와 해당 소스와 의존성이 있는 .class파일만 삭제(기존에 빌드된 파일을 전부 삭제하면 안됨. depend로 변경된 파일만 삭제하여야 함)

<target name="build">
  <javac srcdir="${src}" destdir="${dest}">
    <classpath>
      <fileset dir="${lib}"/>
    </classpath>
  </javac>
</target>
			

컴파일은 기존 방식과 동일

Oden에 배포작업 추가시(task add 혹은 policy add 명령어 이용) -u 옵션을 붙여, 변경된 파일만 배포하도록 해야 한다.

유의사항

  • CTIP을 통해 형상관리에서 빌드할 파일들을 내려 받을 시 update된 파일만 받도록 설정하여야 함(일반적으로 디폴트 설정임).

  • ant스크립트에서 copy명령어 사용시 아래처럼 preservelastmodified="true"로 주어야 함.

<copy todir="${dist}" preservelastmodified="true">...</copy>
			

3.1.5.ant 연계

3.1.5.1.oden ant태그를 통한 배포

lib-ant폴더로 이동한 뒤, sample.xml을 오픈하여 아래의 내용을 확인한다.

<taskdef resource="oden-task.properties" classpath="anyframe.oden.ant.jar"/>
<target name="deploy">
  <oden-task server="localhost" port="9860" 
  	id="oden" pw="oden0">
    <deploy repository="file://doc" includes="**">
      <agent name="sampleapp"/>
    </deploy>
  </oden-task>
</target>
			

위 스크립트를 실행하면 localhost:9860에 설치되어 있는 Oden에 oden/oden0로 접속하여, file://doc이하의 모든 파일을 sampleapp의 default-location이하에 배포할 것이다.

ant -f sample.xml

수행 후 doc이하의 파일들이 target폴더로 배포될 것이며, 결과는 history info나 history show로 확인 가능하다. ant로 배포하였을 경우 배포정책명이 자동으로 oden_ant_task로 설정되서 수행된다.

3.1.6.외부 app과 연계

3.1.6.1.jquery를 통한 oden연계

$.ajaxSetup({
  url: 'http://localhost:9860/shell',
  type: 'post',
  success: function(result){
    result = eval(result);
    var history = result[0];
    alert('id: ' + history.id);
  }
});
$.ajax({data: 'history info' + ' -json'});
// json형태로 결과를 받기 위해서는 명령어에 -json옵션을 붙여줘야 함.
// json의 결과 형태는 명령어 창에 -json옵션을 붙여 명령어를 실행하면 알 수 있음.
			

3.1.6.2.java를 통한 oden연계

URLConnection con = new URL("http://localhost:9860/shell").openConnection();
con.setDoOutput(true);

PrintWriter pw = new PrintWriter(con.getOutputStream());
pw.print("history info - json");
pw.flush();

BufferedReader br = new BufferedReader(new InputStreamReader(
  con.getInputStream()));
StringBuffer buf = new StringBuffer();
String line = null;
while((line=br.readLine()) != null) {
  buf.append(line + "\n");
}
System.out.println(buf.toString());
br.close();
pw.close();
			

3.1.7.기타

3.1.7.1.현재 작업중인 상황 확인 및 중지

status info

현재 진행중이거나 대기중인 작업들 목록 보여줌.

status stop <id>
			

정지할 작업의 id를 입력하여 작업 정지

3.1.7.2.서버에 배포된 파일 정합성 체크

서버들간에 배포된 파일이 동일한지 체크

agent compare -t target0 target1 target2
			
  • target0, target1, target2는 conf/config.xml에 정의되어 있어야 함.

  • 해당 위치의 파일들을 비교하여 동일한 파일이 존재하는지 체크

4.Install and Configuration

본 장에서는 Oden을 사용하기 위한 설치요구사항과 설치 및 설정에 대한 소개를 제공한다.

4.1.System Requirements

Anyframe Oden을 설치하기 위해서는 다음의 요구사항을 충족해야 한다.

  • Oden Server 및 Agent 설치요구사항

    • Java Runtime Environment 1.5 or above

    • 약 8MB of free physical disk space

  • Oden Eclipse Plug-in 설치요구사항

    • Java Runtime Environment 1.5 or above

    • Eclipse IDE for Java EE Developers (Ganymede/Galileo) or equivalent

    • Anyframe Common 3.0.0 or above

    • 기타 하드웨어 및 소프트웨어 요구사항은 위 Eclipse 버전별 요구사항을 따름

Note

Anyframe Java 개발을 원활하게 진행하기 위해 "Anyframe Open Source Community" 에서 배포하는 Eclipse 배포본의 사용을 권장한다.

4.2.Installing Anyframe Oden

4.2.1.Server and Agents

Oden은 Server모드와 Agent모드가 존재한다. Agent는 파일이 배포될 서버인 배포대상서버 (Target Server) [7] 에 설치되어 Oden Server에서 지시하는 명령에 따라 파일을 배포한다. Oden Server는 여러개의 Agent를 관리하며 사용자는 커맨드 라인이나 Eclipse Plug-in과 같은 UI환경을 통해 Oden Server에 명령을 내리게 된다. 사용자는 Agent에 직접 명령을 내릴 수 없으며, Oden Server를 통해 Agent에 명령을 내려야 한다.

4.2.1.1.Installing Server and Agents

배포될 파일이 존재하는 빌드리파지토리 (Build Repository) [8] 에 Oden Server를 설치해야 한다.

Oden의 압축을 풀면 아래와 같은 구조로 되어 있다.

[Oden 설치 디렉토리]
	|
	+---- bin
	|  |
	|  +---- oden-x.x.x.jar    // 실행할 바이너리 파일 
	|
	+---- bundle    // Oden 실행시 필요한 library 파일들이 들어 있음. 
	|
	+---- conf	
	   |
	   +---- oden.ini    // Oden Server 설정파일 
	   |
	   +---- config.xml    // Oden Agent 설정파일

Oden Agent로 동작시에는 conf/oden.ini파일 대신 conf/agent.ini파일을 참조하여 동작한다.

4.2.1.2.Configuring Server and Agents

Build Repository에 Oden Server를 설치하고 Target Server에 Oden Agent를 설치했다고 가정하고 Oden 설정을 하는 방법을 설명하도록 하겠다. Oden Server에서 Oden Agent를 인식시키게 하기 위해서는 conf/config.xml에 Oden Agent의 정보를 입력해 주어야 한다. conf/config.xml을 열어 Oden Agent가 제대로 등록이 되어 있는지 확인한다.

...
<agents>
    <agent name="agent0">
        <address host="177.11.22.33" port="9872"/>
        <default-location value="C:/tomcat/webapps/anyframe-app"/>
        <backup-location value="C:/oden/backup"/>
    </agent>
</agents>
...

Oden Agent가 설치된 Target Server의 주소(여기서는 177.11.22.33)를 <address .../> 란에 넣어 주었다. Agent의 기본 포트는 9872이며 실행시 -port옵션을 통해 변경할 수 있다. Oden Agent에 배포할 때 배포할 기본 위치를 default-location에 설정하며, 여기서는 Target Server에 있는 application의 root 디렉터리를 default-location으로 지정하였다. backup-location은 파일 백업이나 배포 취소를 위해 임시로 사용하는 경로이며, 필수로 설정되어 있어야 한다. (default-location과 동일하거나 default-location 하위 경로를 설정해 주어서는 안된다.) config.xml에 Agent정보를 추가하였으면, 우선 Oden을 사용할 준비는 끝났다. (config.xml 수정 후 재부팅하지 않아도 된다.)

oden.ini 와 config.xml을 통해 Oden Server의 설정을 변경할 수 있다. Oden Agent는 agent.ini를 통해 설정을 변경할 수 있다.

Note

oden.ini(agent.ini)를 통해 Oden Server(Agent)자체의 설정을 변경할 수 있다. 변경 내용을 적용하기 위해서는 Oden을 재구동 시켜야 한다.

  • bundle.libs: Oden library 목록. bundle 폴더에 있는 jar 파일중 이 목록 외의 파일만 active 상태가 되며, 이 목록에 설정된 파일은 비활성화 상태가 되어 library 로써만 사용된다. 일반적으로 사용자가 수정할 필요는 없다.

  • log.level: log파일에 뿌려질 로그 레벨(1 = error, 2 = warning, 3 = info, 4 = debug). 로그파일은 meta폴더에서 확인할 수 있다. Oden에 문제가 생겼을 시 디버깅하기 위한 용도로 사용되며, 일반적으로 수정할 필요는 없다.

  • http.port: Web UI 혹은 Oden과 통신할 때 사용되는 포트.

  • deploy.undo: 배포전 기존 파일을 백업할지 여부. 백업을 하게 되면 가장 최근 배포에 대해 배포 취소가 가능하다. 단 백업본 관리하는데 리소스(시간, 용량)가 들게 된다.(true/false)

  • console.user: 커맨드라인으로 명령어 실행시 사용할 user id. accounts.txt에 미리 등록되어 있어야 함.

  • deploy.readtimeout: Server에서 Agent로 요청시 응답이 오기까지 대기하는 시간. 기본 120초. deploy.undo가 활성화되어 있을 경우, 백업으로 인해 응답이 오기까지 시간이 오래 걸릴 수 있다.

Note

Oden Agent를 Oden Server에서 인식하게 하기 위해서는 config.xml에 Agent정보를 추가해 줘야 한다. Oden Server 실행과 동시에 구동되는 Oden Agent의 정보 역시 config.xml에 설정해 줘야 한다. config.xml의 값은 Oden Server의 재구동 없이 바로 적용된다. 기본 형태는 아래와 같다.

<oden>
    <agents>
        <agent name="">
            <address host="" port=""/>
            <default-location value=""/>
            <backup-location value=""/>
            <location name="" value=""/>
            <location /> ...
        </agent>
        <agent name="">
            <!-- 이 곳에 두번째 Agent의 정보를 설정한다. -->
        </agent>
    </agents>
</oden>

agent name에 Agent를 지칭할 Unique한 값을 넣어준다. 이 이름은 Oden 명령어에서 사용될 것이다. address의 host속성에는 Agent가 설치된 서버의 IP(Server에 내장된 Agent일 경우 localhost)를 입력한다. address의 port속성에는 Agent의 포트(기본값 9872. oden.ini 혹은 실행시 -port옵션에서 수정할 수 있다.) 값을 입력한다. 수정하지 않았다면 기본 값인 9872를 입력하여 준다. default-location은 Agent로 파일을 전송할 때 파일이 배포될 경로로 절대 경로를 입력한다(필수). backup-location은 파일 백업 혹은 배포 취소를 위해 임시로 사용하는 디렉터리이다. 필수로 지정되어 있어야 하며 절대 default-location과 동일하거나 default-location 하위에 존재하여서는 안된다(필수). location은 default-location 외에 사용할 경로를 지정하는 태그이다. 역시 절대 경로를 입력해야 한다. Agent가 여러개 일 경우 동일한 방식으로 다른 서버에 설치되어 있는 Agent 정보를 추가해 주면 된다.

4.2.1.3.Starting Up Server and Agents

Oden Server 및 Agent의 설치 및 설정이 끝났으면, 아래의 명령으로 Oden을 Server모드로 구동시킬 수 있다.

bin/startup.sh
(Windows 에서는 Oden의 bin폴더로 이동한 뒤 startup.cmd를 실행한다.)

아래의 명령으로 Oden을 Agent모드로 구동시킬 수 있다.

<bin/startup-agent.sh
(Windows 에서는 Oden의 bin폴더로 이동한 뒤 startup-agent.cmd를 실행한다.)

Oden Server를 실행시킨 뒤 커맨드라인을 통해 Oden 명령어를 실행시킬 수 있다.

>cd bin
>runc.cmd help

Important

Server 및 Agent 실행 시, Target Server의 파일 및 디렉토리에 대한 소유자(ownership) 및 권한(permission)에 유의한다. Oden을 통해 배포한 파일은 Agent를 구동시킨 사용자의 소유 및 권한(umask)를 갖게 된다. 배포할 폴더에 Agent를 구동시킨 사용자가 접근 권한이 없다면 배포는 실패하게 될 것이다.

Oden이 설치되는 경로에 공백이 있으면 안된다. Windows의 바탕화면이나 내폴더의 경우, 중간에 공백이 있는 경로가 있으므로 Oden이 제대로 동작하지 않을 것이다.

4.2.2.Eclipse Plug-in(별도 제공)

Anyframe Oden은 Eclipse Plug-in으로도 제공된다. 다음은 Plug-in 설치에 대한 안내이다.

4.2.2.1.Installing Eclipse Plug-in

Eclipse의 Help > Install New Software 를 통해서 Anyframe Update Site 인 http://dev.anyframejava.org/update 을 추가한다.

Important

Anyframe Oden은 Anyframe Common이 설치되어 있어야 설치가 가능하다.

Eclipse 3.4, Eclipse 3.5의 경우에는 Anyframe Oden에 Anyframe Common이 포함되어 있으므로 따로 설치하지 않아도 된다.

설치가 완료되면, Eclipse의 Help > About Elicpse 를 통해서 확인할 수 있다.

4.2.2.2.Configuring Eclipse Plug-in

Server, Agent의 설정은 Working with Command Line을 참조한다.



[7] 이 문서에서는 파일이 배포될 서버를 Target Server라 칭한다.

[8] 이 문서에서는 배포할 파일이 존재하는 장소를 Build Repository라 칭한다. 일반적으로 빌드가 끝나고 class나 lib과 같은 바이너리 파일이 존재하는 장소가 될 것이다.

5.Working with Command Line

Oden 명령어를 실행시키기 위해 runc라는 커맨드라인 명령어를 제공한다. runc.cmd(runc.sh) 이후에 Oden명령어를 입력하면 Oden에 명령을 전달할 수 있다.

5.1.Introduction to Oden Command Line

5.1.1.커맨드라인에서 명령어 실행

bin폴더의 runc.sh(혹은 runc.cmd) 명령어를 통해 Oden 명령어를 커맨드라인에서 실행시킬 수 있다.

bin/runc.sh history info
		

5.1.2.Web Console에서 명령어 실행

웹브라우저에서 아래의 url 입력

http://localhost:9860/wconsole.html
		
  • localhost는 server가 설치된 서버의 url

  • 9860은 server의 포트(디폴트 9860)

5.2.Oden Commands

Oden 스크립트나 Web Console을 통해 Oden Commands를 실행시킬 수 있다. 인자에 스페이스가 들어가 있으면 " "로 묶어줘야 한다.

5.2.1.Policy Command

Policy Command를 통해 Policy를 설정하고 테스트해 볼 수 있다. Oden에서 배포 작업을 수행하는 단위는 Task이지만, Task는 여러개의 Policy들로 구성되어 있기 때문에 Task를 설정하기 전에 Policy를 설정해야만 한다. [9]

5.2.1.1.policy add

Policy를 추가하기 위한 명령어. 동일한 이름을 가진 Policy가 있을 경우 덮어 쓴다.

policy add <policy-name> 
	[-r[epo] file://<path>] 
	-i[nclude] <wildcard-location> ... [-e[xclude] <wildcard-location> ...] 
	[-u[pdate] | -del] 
	-d[est] <agent-name>:<$<location-var>[/<path> | ~[/<path>] | <absolute-path>]> ... 
	[-desc <description>]

‘-r’은 Oden Server에서 접근할 Build Repository를 의미한다. '-del' 옵션을 지정할 경우(삭제) '-r' 옵션의 값은 무시된다.

‘-i’는 Build Repository에서 어떤 파일들을 배포할 것인지 지정하는 옵션이다. *같은 wildcard문자를 사용할 수 있으며, 하위경로까지 포함하려면 **를 사용해야 한다. 여러개의 인자가 있을 경우 ‘스페이스’로 구분한다. ‘-e’ 옵션을 지정할 경우 지정된 파일들은 배포대상에서 제외된다. 들어가는 인자의 형태는 ‘-i’ 옵션과 동일하다.

참고

일부 쉘에서는 *문자를 입력하면 현재 디렉터리 내의 파일 목록으로 변경시켜버리므로, "**" 이런식으로 ""로 묶어 주는 것이 좋다.

‘-u’ 옵션을 지정할 경우 Agent에 기 배포되어 있는 파일과 비교(날짜 비교) 하여 변경된 파일만 배포한다. '-del' 옵션이 있을 경우 Agent에 배포된 파일 중 지정한 파일은 삭제된다.

‘-d’는 배포될 경로를 지정한다. 경로는 Agent명 + ':' + 하위 경로로 구성된다. Agent명은 conf/config.xml에 등록이 되어 있어야 한다. 하위 경로는 절대경로, default-location의 상대경로, 타 location의 상대경로가 올 수 있다. default-location 이하에 배포하려면 '~' 다음에 경로를 입력하면 된다. config.xml에 설정된 다른 location명에 배포하려면 '$'다음에 location명을 입력하고 그 하위 경로를 주면 된다. 배포할 Agent가 여러개일 경우 스페이스로 구분한다.

  • 로컬 파일을 agent0의 특정경로에 배포

    policy add p0 -r "file://C:/Build Repository/anyframe-app" -i "**" -d agent0:C:/works -desc "local files to agent0"

    C:/Build Repository/anyframe-app의 모든 file(하위경로 포함)들을 agent0(conf/config.xml에 설정되어 있어야 함)의 C:/works폴더에 배포함. 옵션의 인자에 스페이스가 있을 경우 쌍따옴표로 묶어야 한다. **는 하위의 모든 경로를 포함함을 의미한다. 경로가 포함되면 그 안의 파일들도 배포가 되기 때문에 결국 **만 지정을 해주면 하위경로의 모든 파일을 배포함을 의미한다.

  • 로컬 파일을 agent0의 default-location으로 배포

    policy add p1 -r "file://C:/Build Repository/anyframe-app" -i "**" -d agent0:~ -desc "local files to agent0"

    C:/Build Repository/anyframe-app의 모든 file(하위경로 포함)들을 agent0(conf/config.xml에 설정되어 있어야 함)의 default-location에 배포함. 옵션의 인자에 스페이스가 있을 경우 쌍따옴표로 묶어야 한다. **는 하위의 모든 경로를 포함함을 의미한다. 경로가 포함되면 그 안의 파일들도 배포가 되기 때문에 결국 **만 지정을 해주면 하위경로의 모든 파일을 배포함을 의미한다.

  • 특정확장자를 제외한 파일만 배포

    policy add p2 -r "file://C:/Build Repository/anyframe-app" -i "**" -e "**/*.svn" -d agent0:$temp

    C:/Build Repository/anyframe-app의 모든 file(하위경로 포함)들중 svn확장자를 가진 파일이나 폴더를 제외하고 agent0의 temp에 배포함. temp는 conf/config.xml의 location에 정의되어 있어야 한다.

  • FTP로 특정확장자의 파일들을 여러 Agent로 배포 #1 (FTP 모듈 별도 제공)

    policy add p3 -r ftp://172.16.70.77 /anyframe-app/images guest 1111 -i "**/*.jpg" "**/*.gif" -d agent0$images agent1$images

    172.16.70.77의 FTP에 guest/1111 계정으로 접근한 뒤 anyframe-app/images 하위의 모든 jpg, gif, png파일들을 agent0와 agent1의 images 경로로 배포함. agent0와 agent1, agent0의 images, agent1의 images는 conf/config.xml에 정의되어 있어야 한다.

  • FTP로 특정확장자의 파일들을 여러 Agent로 배포 #2

    policy add p4 -r ftp://172.16.70.77 /anyframe-app guest 1111 -i "images/**/*.jpg" "images/**/*.gif" -d agent0:~ agent1:~

    이번 예제는 config.xml에 images location을 등록하지 않고도 위의 예제와 동일한 결과를 얻을 수 있음을 보여준다. -i 옵션에서 지정된 경로는 그 경로 그대로 Agent로 배포된다. 예를들어 -i sample/**로 배포할 파일을 지정하면 Agent에 sample폴더 이하의 파일이 바로 배포되는 것이 아니라, sample폴더가 먼저 생성이 된 후 그 안에 파일들이 배포된다. conf/config.xml에 매번 location을 등록하는 것이 번거롭다면 이런식으로 사용하기 바란다.

  • 변경된 파일만 배포

    policy add p5 -r ftp://172.16.70.77 /anyframe-app/classes guest 1111 -i "**" -u -d agent0:/User/classes

    172.16.70.77의 FTP에 guest/1111 계정으로 접근한 뒤 classes폴더의 모든 파일들(하위경로 포함)과 agent0의 /User/classes의 파일들과 비교하여 날짜가 변경된 파일만 배포함. conf/config.xml에 agent0(agent태그)와 classes(location태그)가 정의되어 있어야 한다.

Note

Ant를 이용하여 변경된 소스코드만 빌드하도록 할 수 있다.

Ant의 javac 태스크는 기본적으로 소스 폴더와 빌드 폴더를 비교하여 class파일이 존재하지 않는 소스 코드에 대해서만 빌드를 수행하도록 되어 있다. 그래서 일반적으로 ant 스크립트 작성 javac를 수행하기 전에 빌드 폴더를 전부 삭제하여 Full Build를 수행한다. ant의 depend 태스크를 사용하면 빌드 폴더를 전부 삭제하지 않고 변경이 일어난 class 와 그것과 의존관계가 있는 class파일만 삭제할 수 있다. 이 후 javac 태스크에서는 존재하는 파일은 제외하고 존재하지 않는 파일(depend에 의해 삭제된 변경된 class 및 그것과 의존성이 있는 class)에 대해서만 빌드를 수행하므로 변경된 파일에 대해서만 빌드가 가능하다. 이렇게 변경된 파일과 그것과 의존성이 있는 파일에 대해서만 빌드하는 것을 Incremental Build라고 한다. 아래 예제는 depend 태스크를 이용하여 Incremental Build를 수행하는 스크립트를 보여준다.

<target name="inc-build">
    <depend srcdir="src/main/java" destdir="build/classes" closure="yes" />
    <javac srcdir="src/main/java" destdir="build/classes">
        <classpath>
            <path refid="compile.classpath" />
        </classpath>
    </javac>
</target>

depend 태스크에 의해 src/main/java와 build/classes를 비교하여 변경된 파일과 의존성있는 파일에 대해서만 class파일이 삭제된다. javac 태스크에 의해 삭제된 파일에 대해서만 빌드가 일어난다. 이 후 Oden Policy의 -u옵션을 통해 변경된 바이너리 파일만 배포가 가능하다.

5.2.1.2.policy info

Policy의 정보를 조회하기 위한 명령어. policy-name을 지정하지 않았을 경우 등록된 모든 Policy의 정보를 보여준다.

policy info [<policy-name>]

5.2.1.3.policy del

Policy 삭제 명령어. policy-name에 해당하는 Policy를 삭제한다.

policy del <policy-name>

5.2.1.4.policy test

Policy가 어떤 파일들을 배포할 것인지 테스트해 보는 명령어. 배포가 될 파일들의 리스트가 나타난다. 실제로 배포하지는 않는다.

policy test [<policy-name>]

5.2.2.Task Command

Task는 Oden의 실제 배포작업을 수행하는 단위이다. Task는 여러개의 Policy들로 구성되어 있다. Task 명령어를 통해 실행할 Policy를 가진 Task들을 설정하고 실행할 수 있다.

5.2.2.1.task add

새 Task를 생성하기 위한 명령어. 동일한 이름을 가진 Task가 있을 경우 덮어 쓴다.

task add <task-name>
	-p[olicy] <policy-name> ... 
	-desc <description>
  • 두개의 Policy를 가지는 Task 생성

    task add t0 -p p0 p1

    Policy p0와 p1을 가지는 Task t0 생성. Policy Command를 통해 p0와 p1이 이미 등록되어 있어야 한다.

Task와 Policy를 동시에 추가하려면 아래와 같이 쓸 수 있다. 동일한 명의 policy와 task를 각각 생성하는 것과 동일하다.

task add <task-name> 
	[-r[epo] file://<path>] 
	-i[nclude] <wildcard-location> ... [-e[xclude] <wildcard-location> ...] 
	[-u[pdate] | -del] 
	-d[est] <agent-name>[/<location-variable-name>] ... 
	[-desc <description>]
  • ‘-r’은 Oden Server에서 접근할 Build Repository를 의미한다.

  • ‘-i’는 Build Repository에서 어떤 파일들을 배포할 것인지 지정하는 옵션이다. *같은 wildcard문자를 사용할 수 있으며, 하위경로까지 포함하려면 **를 사용해야 한다. 여러개의 인자가 있을 경우 ‘스페이스’로 구분한다. ‘-e’ 옵션을 지정할 경우 지정된 파일들은 배포대상에서 제외된다. 들어가는 인자의 형태는 ‘-i’ 옵션과 동일하다.

  • ‘-u’ 옵션을 지정할 경우 Agent에 기 배포되어 있는 파일과 비교(날짜 비교) 하여 변경된 파일만 배포한다. jar파일일 경우 jar파일내에 포함되어 있는 파일 중 변경된 파일만 update하게 된다.

  • ‘-d’는 Agent명과 Agent의 location을 지정한다. Agent와 location은 conf/config.xml에 이미 등록이 되어 있어야 한다. Agent와 location명은 / 로 구분하며, location을 지정하지 않았을 경우 conf/config.xml에 지정된 default-location에 배포하게 된다. 배포할 Agent가 여러개일 경우 스페이스로 구분한다.

5.2.2.2.task info

Task의 정보를 조회하기 위한 명령어. task-name을 지정하지 않았을 경우 등록된 모든 Task의 정보를 보여준다.

task info [<task-name>]

5.2.2.3.task del

등록된 Task 삭제 명령어. task-name에 해당하는 Task를 삭제한다.

task del <task-name>

5.2.2.4.task test

Task가 어떤 파일들을 배포할 것인지 미리 확인해 보는 명령어. 실제로 파일을 배포하지는 않는다.

task test <task-name>

5.2.2.5.task run

Task를 실행하는 명령어. task-name에 해당하는 Task를 실행한다. -sync옵션이 있으면 task가 끝날때까지 기다린다. -sync옵션이 없으면 status명령어를 통해 task가 진행중인지 확인하고, history명령어를 통해 결과를 확인해야 한다. 배포량이 많을 경우 -sync옵션을 사용하면 대기 시간이 길어지므로, -sync를 사용하지 않고 배포 한 뒤, status info 명령어를 통해 진행사항을 확인하길 권장한다.

task run <task-name> [-sync]

5.2.3.History Command

History 명령어를 통해 배포된 내역을 조회할 수 있다. Task 명령어를 통해 배포된 내역을 조회할 수 있다.

5.2.3.1.history info

history가 기록된 내역 조회. 해당 날짜의 history 리스트를 간략히 출력한다. 날짜를 지정하지 않으면 최근 날짜의 배포된 리스트가 출력된다.

history info [-d[ate] <start-date: YYYYMMDD> <end-date: YYYYMMDD>
	[-u[ser] <user-access-ip>]
	[-f[ailonly]] 

‘-u’ 옵션은 배포 명령어를 수행시킨 사용자를 검색하기 위한 옵션이다. 인증기능을 활성화 시켰으면 사용자의 id가 활성화되지 않았었다면 사용자의 ip가 기록되어 있을 것이다. 70.7로 시작하는 모든 사용자가 배포한 내역을 검색하려면 ‘-u 70.7’ 로 인자를 주면 된다.

5.2.3.2.history show

Oden을 통해 배포된 내역을 조회한다. 옵션이 없을 경우 최근에 배포된 Policy의 내역을 보여준다.

'-f'는 실패한 내역만 출력케 하는 옵션이다. 상세 내역 중 실패한 내역만 출력한다.

history show [<txid>]
	[-u[ser] <user-access-ip>] 
	[-a[gent] <host-name>] 
	[-p[ath] <path>] 
	[-f[ailonly]]

txid가 주어지면 해당 history내역에서 상세 검색을 한다. txid를 지정하지 않으면 최근 history내역에서 상세 검색을 한다.

‘-u’ 옵션은 배포 명령어를 수행시킨 사용자를 검색하기 위한 옵션이다. 인증기능을 활성화 시켰으면 사용자의 id가 활성화되지 않았었다면 사용자의 ip가 기록되어 있을 것이다. 70.7로 시작하는 모든 사용자가 배포한 내역을 검색하려면 ‘-u 70.7’ 로 인자를 주면 된다.

‘-a’ 옵션은 Agent의 IP를 지칭한다. Oden Server에 내장된 Agent인 경우 IP에 localhost로 기록이 된다.

‘-p’는 배포한 파일의 경로를 지정하는 옵션이며 지정한 경로가 들어가 있는 모든 내역을 출력한다. 예를 들어 ‘-p anyframe’을 입력하면 경로에 anyframe이 들어가 있는 모든 내역을 출력한다.

'-f'는 실패한 내역만 출력케 하는 옵션이다. 상세 내역 중 실패한 내역만 출력한다.

  • 오늘 배포 내역 조회

    history info

    오늘 배포한 내역을 조회한다.

  • 특정 배포 내역 상세 조회

    history show 123456789

    배포 id 가 123456789 인 배포의 상세 내역을 출력한다.

    Note

    Oden Server에 내장된 Agent에 배포를 하면 history에는 localhost로 기록이 된다.

  • 특정기간동안 배포한 내역 조회.

    history show -d 20090101 20090601

    2009/1/1 부터 2009/6/1까지 배포한 내역 조회.

5.2.3.3.history undo

txid에 해당하는 배포파일들의 배포를 취소. 가장 최근에 배포한 내역만 취소가 가능하다. (Server의 oden.ini의 history.undo옵션이 true여야 사용 가능하다.) -p 옵션이 있다면 배포된 파일 중 -p옵션에 지정된 파일의 배포만 취소한다. -p의 첫번째 인자는 Agent명과 절대경로 이며 이 후 인자는 절대경로 이후의 파일들의 상대경로들이다.

history undo <txid>
	[-p[ath] <agent-name>:<absolute-path> <file-path> ...]

5.2.3.4.history redeploy

실패한 파일들 재배포 명령어. txid의 배포 파일 중 실패파일들만 재배포 한다. 특정파일이 agent1, agent2에 배포되다가 agent2에서만 배포가 실패하였을 경우 파일의 정합성을 맞추기 위해 agent1, agent2 모두에 다시 배포된다.

history redeploy <txid> -sync

5.2.4.Agent Command

conf/config.xml에 설정된 Agent에 관한 설정을 조회하기 위한 명령어이다. conf/config.xml에 설정된 Agent정보는 다른 명령어들을 실행할 때 사용되며, 이 명령어를 통해 그 정보들을 조회해 볼 수 있다. Agent정보는 수정할 수는 없으며, 수정하기 위해서는 conf/config.xml을 직접 수정하여야 한다. conf/config.xml 수정 후 재구동할 필요없이 바로 적용된다.

5.2.4.1.agent info

config.xml에 등록된 agent의 정보 및 상태 확인 명령어. agent-name을 지정하였을 경우 지정한 Agent의 정보가 상세히 출력된다. -detail 옵션이 있을 경우 등록된 모든 Agent 의 상세 정보가 출력된다. -detail 옵션을 주지 않았을 경우 등록된 모든 Agent 의 기본 정보만 출력된다. -detail 옵션을 주었을시, Agent의 주소가 잘못 설정되었을 경우, timeout될 때까지 기다리게 되므로 결과까지의 시간이 오래 걸릴 수 있음에 유의 한다. Agent 상세정보 결과에서 status항목은 현재 해당 Agent와 통신할 수 있는지 여부를 나타낸다.(true/false)

agent info [<agent-name> | -detail]

5.2.4.2.agent compare

Agent에 배포되어 있는 파일 비교 명령어. -t옵션에 비교하고 싶은 Agent 이름을 입력하면, 해당 Agent들의 default-location을 기준으로 모든 파일을 비교하여 일치 여부를 판단한다. 해당파일이 지정한 Agent중 한 군데라도 없으면 불일치로 판단하며, 모든 파일이 있지만 해당 파일들의 size나 timestamp가 틀릴 경우에도 불일치로 판단한다.

agent compare -t[arget] <agent-name> ...

5.2.5.Status Command

진행중인 배포내역을 확인하는 명령어이다. (History 명령어는 기 배포된 내역과 관련된 명령어 이며, Status 명령어는 현재 진행중인 배포 내역과 관련된 명령어이다.)

5.2.5.1.status info

현재 진행중인 작업의 진행현황 혹은 대기 중인 작업 리스트를 출력한다.

status info

5.2.5.2.status stop

현재 진행중이거나 대기중인 배포 작업을 취소한다.

status stop <txid>

5.3.Viewing Help

Oden Shell에서 제공하는 모든 명령어의 목록을 보기 위해서는 help를 입력하면 된다. 각 명령어의 상세 사용법을 보기 위해서는 명령어 뒤에 help를 붙이거나 뒤의 인자를 제외한 명령어 이름만 입력하면 된다.

5.3.1.Policy Command의 사용법 조회

policy 혹은 policy help

Policy Command의 사용법을 출력한다.



[9] Policy를 바로 실행할 수 없다. 해당 Policy를 가진 Task를 구성하여 실행햐야 된다.

6.Working with Ant Script

본 장에서는 Ant Script를 통해 Oden 명령어를 실행시키는 방법에 대한 설명을 제공한다.

6.1.Introduction to Oden Ant Script

Anyframe Open Deployment ENvironment(이하 Oden)를 통해 배포 환경을 구성하게 되면 CI 환경을 통해 빌드된 어플리케이션 컴포넌트 및 각종 설정파일, 웹파일 등을 원하는 배포대상서버에 편리하게 배포할 수 있다. 하지만 CI 환경은 지속적으로 새로운 상태를 유지하지만, 배포대상서버에는 수동으로 배포해줘야 하는 어려움이 있다. 이러한 불편함을 해소하기 위해 CI 환경 내에서 Oden을 자동 실행할 수 있도록 Oden Ant를 제공한다.

Oden Ant는 Ant Task로 제공되며, CI 환경을 유지시키는 빌드파일(ant script)에 Task를 추가하여 사용할 수 있다.

6.2.Install Oden Ant Script

Anyframe Oden Ant Script를 사용하기 위해서는 별도의 jar 파일 및 설정이 필요하다.

6.2.1.Jar 파일 다운로드

Oden Ant를 사용하기 위해서는 "Anyframe Open Source Community" 에서 배포하는 anyframe.oden.ant.jar 파일을 다운로드 받아야 한다.

anyframe.oden.ant.jar 파일의 위치는 사용자의 임의대로 두어도 상관없다.

6.2.2.Configuration

Oden Ant를 빌드파일에 추가해서 사용하기 위해서는 몇가지 설정이 필요하다.

만약 빌드파일 위치를 기준으로 다운로드 받은 jar 파일의 위치가 lib /anyframe.oden.ant.jar이라면 oden-ant 스크립트 사용을 위해 아래와 같이 선언해 주어야 한다.

<taskdef resource="oden-task.properties" classpath="lib/anyframe.oden.ant.jar"/>
<typedef resource="oden-type.properties" classpath="lib/anyframe.oden.ant.jar"/>

Note

Bold체로 표시한 부분은 사용자가 임의로 변경해도 되는 부분이다. 단, 일치시켜야 하는 부분에 유의해서 변경하도록 한다. Eclipse상에서 content assist 기능이 필요하지 않다면 oden-type.properties 부분은 선언하지 않아도 된다.

6.3.Apply with Oden Ant Script

Oden에서 제공하는 Ant Scipt를 빌드 파일에 적용하는 방법에 대해 설명한다.

6.3.1.<oden-task/>

Oden Ant에서는 배포를 위해 <oden-task/>라는 Ant Task를 제공한다. 이 Task는 Oden을 통한 배포에 관련된 모든 기능을 제공하고 있다. Oden의 개념과 비교할때, policy, task 명령어가 갖고 있는 모든 기능을 포함한다.

6.3.1.1.<oden-task/> parameters

<oden-task/>가 갖고 있는 parameter에 관한 정보들이다. 서버에 설정되어 있는 task로 배포할 경우 name attribute에 해당 task명을 입력한다.

표 6.1.

AttributeDescriptionRequiredDefault
serverOden Server가 설치된 곳의 URLYesN/A
portOden Server가 설치된 곳의 Oden Server 접근 PortYesN/A
failundo배포 진행중 실패할 경우, 가장 최근의 배포 성공 상태로 변경Nofalse
name기 저장된 task 이름NoN/A

Note

6.3.1.2.<oden-task/> nested elements

oden-task이하에 올 수 있는 하위 태그들이다. name attribute의 값이 설정되었을 경우, 하위 태그들은 사용할 수 없다.

6.3.2.<deploy/>

<deploy/>는 Oden의 policy 명령어와 유사한 개념이며, 어떤 리소스를 어느곳으로 보낼 것인지에 대한 설정을 하게된다.

6.3.2.1.<deploy/> parameters

<deploy/>가 갖고 있는 parameter에 관한 정보들이다.

표 6.2.

AttributeDescriptionRequiredDefault
repositoryOden Server에서 접근할 Build Repository. file://<경로>와 같은 형태로 Repository의 경로를 입력한다.YesN/A
includesBuild Repository에서 어떤 파일을 배포할 것인지에 대한 옵션. wild card 사용 가능(,(콤마)로 구분하여 여러 값을 입력할 수 있다.) YesN/A
excludesBuild Repository에서 배포 대상에서 제외할 파일 지정에 대한 옵션(,(콤마)를 기준으로 여러값을 넣을 수 있다.)NoN/A
updateonly변경된 파일만 배포할 것인지에 대한 옵션Nofalse

6.3.2.2.<deploy/> nested elements

6.3.3.<remove/>

<remove/>는 Oden의 policy 명령어 중 -d 옵션을 사용하는 명령어와 유사한 개념이며, 지정한 리소스는 Oden Server에서 삭제되게 된다.

6.3.3.1.<remove/> parameters

<remove/>가 갖고 있는 parameter에 관한 정보들이다.

표 6.3.

AttributeDescriptionRequiredDefault
includesOden Server의 어떤 파일을 삭제할 것인지에 대한 옵션. wild card 사용 가능(,(콤마)로 구분하여 여러 값을 입력할 수 있다.)YesN/A
excludesOden Server에서 어떤 파일을 제외할 것인지에 대한 옵션. wild card 사용 가능(,(콤마)를 기준으로 여러값을 넣을 수 있다.)NoN/A

6.3.3.2.<remove/> nested elements

6.3.4.<agent/>

<agent/>는 Oden Server에 등록된 Agent의 정보를 나타낸다. 여기에 배포 대상 위치를 지정할 수 있다.

6.3.4.1.Agent Grouping

agent를 각각 지정할 수도 있지만, 미리 agent를 그룹핑하여 별도의 xml에 정의한 뒤, ant에서 사용할 수도 있다.

<?xml version="1.0" encoding="UTF-8"?>
		
<agents>
	<group id="group1">
		<agent name="web1" path=""/>
		<agent name="web2" path="oden/web2/root"/>
		<agent name="web3" path="/Users/oden/web2/root"/>
	</group>
	<group id="group2">
		<agent name="channel1"/>
		<agent name="channel2" path="oden/channel2/branch"/>
		<agent name="channel3" path="c:/oden/channel2/branch"/>
	</group>
</agents>

6.3.4.2.<agent/> parameters

<agent/>가 갖고 있는 parameter에 관한 정보들이다.

Note

<agent/>는 agent 이름을 통해 지정해주는 방법과, 여러 agent를 grouping한 정보를 담은 파일을 통해 지정해주는 방법이 있다. 사용하는 parameter가 다르므로 혼동하지 않도록 한다.

  • Agent를 직접 지정하는 방법

    표 6.4.

    AttributeDescriptionRequiredDefault
    nameOden Server의 conf/config.xml 파일에 정의된 agent 이름YesN/A
    path 각 Agent에 어느 곳으로 배포할지를 정한다.(config.xml 파일 기준)
    • path=""이거나 path 속성이 기술되지 않았을 경우 : default-location으로 배포

    • path 속성이 c: 등의 드라이브 명(Windows OS)이나, /(Mac OS)으로 시작될 경우 : 지정한 절대 경로로 배포

    • 그외 : default-location을 기준으로 기술한 내용을 가진 하위의 위치로 배포

    No 

  • Agent Grouping 정보를 사용하는 방법

    표 6.5.

    AttributeDescriptionRequiredDefault
    importAgent 정보가 들어있는 xml 파일의 위치 및 파일명YesN/A
    groups배포 대상 Group(,(콤마)로 구분하여 여러 값을 입력할 수 있다.)YesN/A

6.4.Example Code

Oden Ant를 실제 사용하는 예이다.

6.4.1.Build 파일 속성 정의

oden태그를 사용하기 위해서는 아래와 같이 정의해 주어야 한다. anyframe.oden.ant.jar파일이 build.xml과 동일 폴더에 존재한다고 가정하였다.

<taskdef resource="oden-task.properties" classpath="anyframe.oden.ant.jar" />

6.4.2.Agent grouping 정보 파일

Agent를 grouping한 정보를 담은 파일은 build.xml 파일이 있는 폴더를 기준으로 /xml/agentInfo.xml에 만들었다. 내용은 다음과 같다.

<?xml version="1.0" encoding="UTF-8"?>
		
<agents>
	<group id="group1">
		<agent name="web1" path=""/>
		<agent name="web2" path="oden/web2/root"/>
		<agent name="web3" path="/Users/oden/web2/root"/>
	</group>
	<group id="group2">
		<agent name="channel1"/>
		<agent name="channel2" path="oden/channel2/branch"/>
		<agent name="channel3" path="c:/oden/channel2/branch"/>
	</group>
</agents>

6.4.3.Build 파일에 Oden 포함

다음은 build.xml에 들어가야할 내용이다.

<oden-task server="localhost" port="9860" failundo="true">
		<deploy updateonly="false" repository="file://C:/oden/test" includes="*.zip">
			<agent name="web2" />
		</deploy>
		// file://C:/oden/test의 모든 zip파일을 web2의 default-location(config.xml에 정의)에 배포.
		
		<deploy updateonly="true" repository="file://D:/eclipse/plugins" includes="**" excludes="*.jar">
			<agent import="xml/agentInfo.xml" groups="group1" />
		</deploy>
		// group1(xml/agentInfo.xml에 정의)에 속한 모든 agent에 변경된 파일만 배포. 
		
		<remove includes="**/*.jar">
			<agent import="xml/agentInfo.xml" groups="group2" />
		</remove>
		// group2에 설정한 모든 agent의 **/*.jar파일 삭제 
	
	</oden-task>

	<oden-task server="localhost" port="9860" name="task1" />
	// 기존에 정의된 task1이라는 정책에 따라 배포. 

7.Working with Eclipse Plug-in (별도 제공)

본 장에서는 Oden의 Eclipse plug-in 기반 GUI 환경에 대한 보다 상세한 이해를 위한 설명을 제공한다.

7.1.Introduction to Oden Eclipse Plug-in

Oden Eclipse Plug-in은 배포관리를 위한 Oden Server와 연계 하여 배포관리를 지원하는 플러그인으로, 다음과 같은 주요 특장점을 통해 배포 용이성 및 높은 신뢰성을 기대하게 해 준다.

  • 배포/이관 담당자에게 친숙한 Eclipse Plug-in UI를 제공하여 사용자 이용 용이성을 제공함

  • 배포 이력 관리를 통한 배포의 정합성 및 무결성을 확보하여 해당 응용프로그램의 연속성을 보장함

  • Update 옵션 및 Snapshot 기능 제공으로 불필요한 리소스 낭비요소를 제거하고 배포에 관한 신뢰성을 보장함

  • Build Repository를 트리 구조로 제공하고 즉시 배포가 가능하게 하여 신속한 장애 복구가 가능하게 함

Oden Eclipse Plug-in은 Oden Explorer, Oden Policy and Task Editor, Oden Job Manager, Oden Deployment History, Oden Dashboard, Oden Snapshot 등으로 구성된다.

7.2.Oden Explorer

Oden Explorer View는 배포 환경 구성을 위한 Server와 Repository를 구성할 수 있으며, Task와 Policy를 편집할 수 있는 Policy & Task Editor 및 통계성 데이터를 볼 수 있는 Oden Dashboard 등에 대한 접근이 가능하다.

  • Oden Explorer View 열기

    Eclipse 메뉴를 통해 Window > Show View > Other... > Anyframe > Oden Explorer

  • Oden Explorer View 구성

    Oden Explorer View는 크게 Oden Servers와 Build Repositories로 구성 되어 있으며 Oden Server 및 Build Repository 등에 대한 연결 프로파일을 대화창을 통해 관리할 수 있다. 관리할 수 있는 기능은 각 프로파일에 대한 신규 생성, 편집, 복제, 삭제 등이다.

7.2.1.Servers

Oden을 활용한 배포환경 구성 시 설치한 Oden Server의 프로파일을 관리한다. 하나의 Oden Server에 대해서도 관리의 편의를 위해 여러개의 프로파일을 만들 수 있다.

7.2.1.1.Managing Oden Server Profiles

Context Menu를 통해 Oden Server의 프로파일을 관리하며 메뉴는 다음과 같다.

  • New Oden Server Profile...

    "Oden Severs" 항목에서 호출한 Context Menu를 통해, Oden Server 프로파일을 새로 만들 수 있음

  • Edit Oden Server Profile...

    생성한 Oden Server 프로파일에 대한 편집 기능을 제공함

  • Duplicate Oden Server Profile...

    생성한 Oden Server 프로파일에 대한 복제 기능을 제공함. 기본적으로 "[기존 Oden Server 프로파일 이름] - duplicated"의 이름이 부여되며, 그 외 정보는 기존 정보를 바탕으로 기본값으로 설정됨

  • Delete Oden Server Profile...

    생성한 Oden Server 프로파일에 대한 삭제 기능을 제공한다. 해당 프로파일을 통해 Editor가 열려 있을 경우, 해당 Editor를 닫음

Server를 생성하기 위한 정보들은 아래와 같다.

  • Nickname : 생성하는 Server의 별칭을 입력한다.

  • Address : Oden Server가 설치된 곳의 hostname 또는 IP 주소를 포트 번호를 포함하여 입력한다. eg. localhost:9860

  • User name is not required for this profile setting. : Oden Sever에 접근 시 인증 과정이 필요 없을 경우 체크한다.

  • User Name : 계정이 필요한 경우 아이디를 입력한다.

  • Password : 계정이 필요한 경우 암호를 입력한다.

Note

Oden Server 프로파일에 대한 변경이 있을 경우, Oden Explorer View가 갱신되면서 기존에 열려있던 Build Repository의 하위 폴더들이 닫히게 된다.

7.2.1.2.Agent Health-Check

Oden Agent 상태를 Agent 호스트 명 왼쪽의 아이콘을 통해 쉽게 알 수 있으며 Agent명, Address 정보를 제공한다.

7.2.1.3.Comparing Agents

Agent 간 default location 을 기준으로 하위 파일의 크기 , 생성 일짜를 비교하여 다를 경우 File Name에 빨간 색으로 표시하는 기능으로 배포의 정합성을 확인하기 위한 기능이다. 구동은 비교 하고자 하는 Agent들을 선택하고 context 메뉴에서 Compare Agents를 선택하여 수행 한다.

파일의 Directory 와 File Name을 기준으로 Agent가 증가함에 따라 컬럼이 늘어나며 특정 파일이 해당 Agent에 없을 경우 빈 공백으로 표시된다. 체크박스를 통해 정합성이 맞지 않는 파일들만 골라서 확인할 수도 있다. 또한 배포 정합성을 만족하는 경우는 배포 정합성을 만족한다는 의미의 알림창을 오픈한다.

Note

정상적인 기능을 수행하기 위해서는 반드시 config.xml파일의 default location을 설정하여 Agent별 기준경로를 명시해야 하며 default location 설정 방법은 "server에 agent등록"를 참고한다.

7.2.2.Build Repositories

Build Repository는 CTIP 환경에서 CI서버(빌드서버)에서 Build 결과물이 생성되는 위치를 지칭하며 이에 대한 프로파일은 업무별 또는 용도에 따라 여럿을 설정 할 수 있다. Eclipse Plug-in에서는 Build Repository 프로파일을 설정하여 사용자가 직관적으로 배포가 가능하도록 한다.

7.2.2.1.Managing Build Repository Profiles

Context Menu를 통해 Build Repository의 프로파일을 관리하며 메뉴는 다음과 같다.

  • New Build Repository Profile...

    "Build Repositories" 항목에서 호출한 Context Menu를 통해, Build Repository 프로파일을 새로 만들 수 있음

  • Edit Build Repository Profile...

    생성한 Build Repository 프로파일에 대한 편집 기능을 제공함

  • Duplicate Build Repository Profile...

    생성한 Build Repository 프로파일에 대한 복제 기능을 제공함. 기본적으로 "[기존 Build Repository 프로파일 이름– duplicated"의 이름이 부여되며, 그 외 정보는 기존 정보를 바탕으로 기본값으로 설정됨

  • Delete Build Repository Profile...

    생성한 Build Repository 프로파일에 대한 삭제 기능을 제공함

Build Repository를 생성하기 위한 정보들은 아래와 같다.

  • Nickname : 생성하는 Build Repository의 별칭을 입력한다.

  • Protocol : Build Repository로 접근하기 위한 Protocol을 선택한다.

  • Address : Host name 또는 IP 주소를 입력한다. eg. localhost,127.0.0.1

  • Path : Build Repositoryd의 root path를 입력한다.

  • User name is not required for this profile setting : Sever에 접근 시 계정이 필요 없을 경우 체크한다.

  • User Name : 계정이 필요한 경우 아이디를 입력한다.

  • Password : 계정이 필요한 경우 암호를 입력한다.

  • Oden Server to use with this Build Repository : Build Repository를 사용하는 Oden Server를 선택한다.

Note

Build Repository 프로파일에 대한 변경이 있을 경우, Oden Explorer View가 갱신되면서 기존에 열려있던 Build Repository의 하위 폴더들이 닫히게 된다.

7.2.2.2.Deploy Now Action

Deploy Now는 Build Repository 트리 구조에서 사용자가 원하는 폴더 및 파일을 선택하고 마우스 우 클릭을 통한 context menu를 이용해 쉽게 배포를 수행 하는 기능이다.

Warning

Deploy Now 기능은 update 기능을 제공하지 않아 모든 Item들을 배포 하므로 기능 수행에 관하여 주의를 요한다.

Deploy Now...를 선택하면 배포 될 파일 목록을 미리보기를 통해 다음과 같은 정보를 확인할 수 있다.

  • Mode : 배포되는 파일의 신규,갱신,삭제등의 상태를 표시

  • Repository : 선택한 Build Repository의 root path

  • Path : 선택한 Build Repository의 root path 이후의 Item path

  • Item : 배포되는 파일의 이름

  • Agent : 배포 되는 config.xml 상의 Agent 별칭

7.2.2.3.Set Deploy Now Configuration

Deploy Now Action을 위한 배포 Agent 별로 배포 되는 경로를 설정하는 대화창 이며 미설정 시에는 default location을 기준으로 배포를 수행하고 config.xml에 설정된 location variable을 사용하여 배포 경로를 추가할 수 있다. 해당 Build Repository를 선택하고 마우스 우클릭하여 context menu를 통해 창을 오픈한다.

Add 버튼을 클릭하여 해당 정보를 입력하며 입력 정보는 다음과 같다.

  • All to the default location : 모든 Agent 배포 경로를 default location으로 설정

  • Agent 선택 : 배포 되는 config.xml 상의 Agent 별칭

  • Location Variable : Agent에서 배포되는 경로이며 config.xml 에서 정의

Note

config.xml 변경 및 추가는 "server에 agent등록"를 참고한다.

7.3.Oden Policy and Task Editor

Policy(배포정책)는 배포를 수행 할 수 있는 단위를 말하며, 배포서버에 관한 정보, 배포 시 포함 할 경로 및 파일. 제외 할 경로 및 파일, 배포서버에 관한 정보를 포함한다. 또한 Task(배포작업)는 정의된 Policy들의 묶음 이며 실질적으로 배포를 수행 하는 구조체 이다. Oden Policy and Task Editor는 Policy 및 Task에 대해 조회, 생성, 삭제, 편집등을 수행하는 Editor 창이다. Editor에 접근 하기 위해서는 원하는 Oden Server 프로파일의 Context Menu에서 "Open Oden Policy and Task Editor..."를 선택하여 Editor를 연다.

7.3.1.Policies Tab

Policies Tab은 All Policies, Policy Details, Build Repository, Agents 등으로 구성되며 상세 기능 설명은 다음과 같다.

  • All Policies

    Sever에 등록되어 있는 Policy 목록을 보여주며 filter text를 통해 Policy 조회를 수행 할 수 있고 New Policy 버튼 클릭을 통해 신규 Policy를 입력하며, Remove를 통해 생성되어 있는 Policy를 제거한다.필요시 오른쪽 상단의 refresh 버튼을 클릭하여 최신 Policy 목록을 조회한다.

  • Policy Details

    Policy에 관한 일반적인 사항을 입력, 편집, 조회 하는 창이며 필드의 상세내용은 다음과 같다.

    표 7.1. Policy Details Fields

    필드설명비고
    Policy Name입력하는 Policy의 이름 중복 Policy Name 입력불가
    Description입력하는 Policy에 대한 설명 
    Items to be IncludedBuild Repository Path 이후에 포함할 아이템 (경로 및 파일) 입력 필드의 구분은 “;”로 구분 * : 1레벨 하위 모든 것 ** : 하위 레벨모든 것 eg. webapp/**;webapp/WEB-INF/lib/*
    Items to be ExcludedBuild Repository Path 이후에 제외할 아이템 (경로 및 파일) Items to be include 필드와 입력형태 동일함
    Deploy changed items only.변경 파일만 배포를 원할 경우 체크Update 옵션
    Deploy deleting files.배포된 파일의 삭제를 원할 경우 체크등록된 Agents 와 Items to be included 를 통해 설정함

  • Build Repository

    Build Repository의 정보를 입력하며 Oden Explorer View에 등록한 Build Repositories를 선택하여 정보를 로딩하여 입력하거나 “User Input”을 선택하여 직접 입력이 가능하다.

  • Agents

    배포되는 Agent를 등록하며 Add… 버튼을 클릭하고 대화창을 통해 추가한다. 또한 필요시 Agent를 선택하고 Remove 버튼을 클릭하여 제거한다.

    conf/config.xml 에 설정되어 있는 Agent 및 Location Variable을 선택하고 OK 버튼을 클릭하여 Agent 테이블로 추가한다. 원하는 Agent, Location Variable을 선택하면 하단에 배포 서버의 URL 및 배포경로를 제공한다.

7.3.1.1.Adding a New Policy

New Policy를 클릭하여 신규 Policy를 등록한다. 신규 Policy 입력 시에 임시 Policy Name과 Description이 자동 입력되며 원하는 값으로 변경하여 입력하면 된다.

Warning

임시 Policy Name은 사용자가 원하는 이름으로 반드시 변경하여야 한다.

7.3.1.2.Editing an Existing Policy

All Policies 테이블에서 원하는 Policy를 클릭 후, Policy Details, Build Repository, Agents의 값들이 조회가 되며 원하는 값으로 편집을 하고 Save this Policy를 클릭한다.

7.3.1.3.Deleting a Policy

All Policies 테이블에서 원하는 Policy를 선택 후, Remove를 클릭한다. 확인창을 통해 다시 한 번 고려할 수 있으며, 삭제된 Policy는 복구가 불가능하다.

7.3.2.Tasks Tab

All Tasks, Task Details, Policies 등으로 구성되며, 상세 기능 설명은 다음과 같다.

  • All Tasks

    Sever에 등록되어 있는 Task 목록을 보여주며 filter text를 통해 Task Name 조회를 수행 할 수 있고 New Task 버튼 클릭을 통해 신규 Task를 입력하며, Remove를 통해 생성되어 있는 Task를 제거한다. 필요 시 오른쪽 상단의 refresh 버튼을 클릭하여 최신 Task 목록을 조회한다.

  • Task Details

    Task에 관한 일반적인 사항을 입력, 편집, 조회 할 수 있다. TaskName은 입력하는 Task의 이름, Description은 입력하는 Task의 개요를 나타낸다.

  • Policies

    Task에 포함될 Policy를 체크를 통해 포함시킨다. 필요 시 오른쪽 상단의 refresh 버튼을 클릭하여 최신 Policy 목록을 조회한다. 입력 혹은 편집 정보는 Save this Task 버튼을 클릭하여야 저장된다.

7.3.2.1.Adding a New Task

New Task를 클릭하여 신규 Task를 등록한다. 신규 Task 입력 시에 임시 Task Name 과 Description이 자동 입력되며 원하는 값으로 변경하여 입력하면 된다.

Warning

임시 Task Name은 사용자가 원하는 이름으로 반드시 변경하여야 한다.

7.3.2.2.Editing an Existing Task

All Tasks에서 원하는 Task를 클릭 후, Task Details, Policies 등의 값들을 편집하고 Save this Task를 클릭한다.

7.3.2.3.Deleting a Task

All Tasks에서 원하는 Task를 선택 후 Remove를 클릭한다. 확인창을 통해 다시 한 번 고려할 수 있으며, 삭제된 Task는 복구가 불가능하다.

7.3.2.4.Running a Task

All Tasks에서 배포를 수행하고자 하는 Task를 선택 후 Run this Task를 클릭하면 배포 될 파일 목록을 미리보기를 통해 확인 할 수 있고 OK 버튼을 클릭하면 Agent로 배포를 수행한다.

7.4.Oden Job Manager

Oden Job Manager View는 빠른 배포 및 완료된 배포 작업들의 배포 날짜 및 배포 결과에 의한 분류로 배포 작업 결과에 대한 빠른 접근이 가능하다. 완료 작업의 배포 날짜 구분은 아래와 같다.

  • Today : 오늘 수행한 배포 작업들

  • A Week Ago : 지난 일주일 안에 수행한 배포 작업들

  • A Month Ago : 지난 한달 안에 수행한 배포 작업들

  • Long Ago : 한달 이전에 수행한 배포 작업들

7.4.1.Deploy by Task

이미 생성된 Task 들을 통한 배포 작업을 수행하며 동작 방법은 다음과 같다.

  1. Deploy by Task 다이얼로그 열기

  2. 배포 할 Task 선택

  3. Preview 혹은 OK 버튼 클릭 : 배포 될 파일 목록을 미리보기를 하려면 Preview 버튼을 클릭하고 Preview 없이 배포를 수행 할 경우 OK 버튼 클릭

  4. 배포를 수행(Finish 버튼) 할 경우 Current Jobs에 구동중인 배포 작업이 추가 되며, 완료 된 경우 Finished Jobs로 작업이 이동된다.

  5. Finished Jobs에서 해당 배포작업(ID)을 더블 클릭하여 Oden Deployment History View에서 배포 상세 내용을 확인

Note

진행 중인 배포 작업의 상태 변화는 Refresh 버튼 클릭을 통해 확인한다.

7.4.2.Deploy by Note

타 배포 관련 시스템과의 연계를 위해 배포관련 정보가 생성된 파일의 Open을 통한 배포 작업으로 동작 방법은 다음과 같다. 이때 "Note" 정보를 신규 입력하려면 "1"번부터, 이미 입력되어 있다면 "4"번부터 수행한다.

Warning

Note에 의한 배포를 수행하기 위해서는 Note의 노테이션(XML schema) 확인 및 정의가 필요하다.

  1. Job Manager View 상 풀다운 메뉴에서 "Set Note Configuration..." 를 클릭

  2. "Set the Note Information" 다이얼로그를 오픈하고 "Add..." 메뉴등을 통해 연계 파일의 위치 및 선택을 위한 정보를 입력

  3. Deploy by Note 다이얼로그를 열어, 배포를 원하는 Note의 Nick Name을 입력

  4. 배포를 원하는 파일을 선택하고 Next 버튼을 클릭하면 배포 미리 보기가 생성

  5. 배포를 수행(Finish 버튼) 할 경우 Current Jobs에 구동중인 배포 작업이 추가 되며, 완료 된 경우 Finished Jobs로 작업이 이동된다.

  6. Finished Jobs에서 해당 배포작업(ID)을 더블 클릭하여 Oden Deployment History View에서 배포 상세 내용을 확인

Note

진행 중인 배포 작업의 상태 변화는 Refresh 버튼 클릭을 통해 확인한다.

7.5.Oden Deployment History

Oden Deployment History View는 사용자들이 원하는 배포 Item을 검색하고 조회 할 수 있는 기능을 제공한다. Oden Deployment History View는 다음과 같은 방법으로 접근한다.

  • Oden Deployment History View 열기

    Eclipse 메뉴를 통해 Window > Show View > Other... > Anyframe > Oden Deployment History

7.5.1.Searching Deployment History

Oden Deployment History View 구성은 다음과 같다.

  • 검색창

    ID 혹은 Item 이름으로 검색 할 것인지를 선택하고 검색창에 입력 후 엔터를 누르면 해당하는 배포 목록이 검색되며, 빈칸인 채로 검색을 실시하면 최신 배포 목록이 검색된다. Oden Deployment History View의 검색범위는 모든 사용자의 배포이력이다.

  • Fail Only 체크 박스

    체크 시 실패한 배포 이력만이 검색 결과창에 조회 된다.

  • Server 선택 콤보 박스

    사용자가 원하는 서버를 선택 할 수 있으며 Oden Explorer View 에서 생성한 Oden Servers의 별칭이 자동으로 구성되어 선택할 수 있다.

  • Refresh 버튼

    Oden Explorer View 상에서 Servers의 내용의 변경이 있을 경우 최신 정보를 얻어 오기 위해 사용한다.

  • 검색 결과창

    검색 결과는 Oden Deployment History View의 하단 검색 결과창에 나타난다.

7.5.2.Advanced Search

고급검색기능은 Advanced Search 버튼을 클릭하여 실행시킬 수 있으며, 다양한 검색조건을 AND 조건으로 조합하여 검색할 수 있다.고급검색기능을 통하여 조합할 수 있는 검색조건은 다음과 같다.

  • Item Name

    특정 날짜로 부터 배포 파일 이름에 대하여 해당 문자열을 기준으로 검색한다.

  • IP

    특정 날짜로 부터 배포를 수행한 사용자의 IP에 대하여 검색한다.

  • Deployed Date

    배포를 수행한 날짜에 대하여 이전, 이후 등의 기준으로 검색한다.

  • Agent

    특정 Agent에 배포된 내역을 기준으로 검색한다.

  • Deployment Status

    배포 성공 및 실패 여부를 기준으로 검색한다.

7.5.3.Undo and Retry

배포를 수행한 후 배포한 건을 되돌리거나, 실패한 배포 작업을 재시도하는 기능으로 수행 방법은 다음과 같다.

  • Undo

    검색 결과창에서 조회된 목록에서 원하는 배포 Item을 선택 후 컨텍스트 메뉴에서 Undo를 선택하여 수행하며, 전체 Undo를 원할 경우는 최상단의 행에서 Undo를 수행 하면 해당 작업 ID의 배포에 대하여 Undo를 수행한다.

  • Retry

    검색 결과창에서 최상단의 행에서 context menu를 통해 Retry를 수행한다. 실패한 Item만 재배포를 하며, 배포 정합성을 위해 관련 Agent들에 재배포를 수행한다.

7.6.Oden Dashboard

Dashboard는 배포 현황에 대해 알 수 있는 통계를 제공한다. Dashboard에서는 배포 작업의 ID, 일시, 배포 대상 item 수, 성공 배포 item 수/총 배포 item 수, 배포 성공 여부, 배포결과전송 여부를 알 수 있다. Dashboard에 접근하기 위해서는 Oden Server 프로파일의 Context Menu에서 "Open Oden Dashboard..."를 선택해서 열 수 있다. Dashboard를 통해서 배포 관련 타 시스템에 배포결과를 전송할 수 있다.

7.6.1.Dashboard

처음 Dashboard를 열었을 경우, 오늘 날짜로부터 최근 1주일 이내이며 성공 여부에 상관없는 모든 작업들의 목록을 보여준다. 그 정보는 다음과 같다.

  • ID

    배포 작업 ID를 나타낸다.

  • Date

    작업이 진행된 날짜를 보여준다.

  • Requested Items

    배포하려는 파일의 총 개수를 보여준다.

  • Deployed Items (A/B)

    A : 모수(B)에 대해서 성공한 파일들의 개수

    B : 배포하려는 모든 Agent에 배포되는 파일들의 개수이다. 각각의 Agent에 배포되는 파일들을 중복 제거하지 않은 개수

  • Deployment Status

    실행한 작업의 성공 여부를 알려준다.

  • Result Transmission Status

    배포 관련 타 시스템에 배포결과의 전송 여부를 알려준다. "Done", "Not yet"과 빈칸으로 나뉘는데, 전송이 된 작업은 "Done", 전송이 되지 않은 작업은 "Not yet", 해당사항이 없는 작업은 빈칸으로 나타나게 된다.

배포 통계 자료는 다음과 같은 조건으로 검색이 가능하다.

  • Failed Deployment Only : 배포에 실패한 작업만 보여준다.

  • Failed Result Transmission Only : 배포결과 전송에 실패했거나, 아직 전송하지 않은 작업만 보여준다.

7.6.2.Transmit Results

"Result Transmission Status"가 "Not yet"일 경우에는 Context Menu가 나타나게 된다. 배포결과를 전송하는데 성공하게 되면 메시지는 "Done"으로 바뀌게 되고, 실패하면 "Not yet" 그대로 나타난다.

7.7.Oden Snapshot (모듈 별도 제공)

Snapshot View에서는 Snapshot Plan과 Snapshot을 관리할 수 있다. Plan은 Snapshot을 생성하고자 하는 디렉토리의 정보를 담고 있다. Snapshot Plan에 의해 생성되는 Snapshot은 config.xml의 backup-location으로 지정된 위치에 저장된다.

Snapshot View에 관한 설명은 다음과 같다.

  • Oden Server

    Oden Server를 선택할 수 있다. View를 처음 시작하면 목록의 첫번째 Oden Server를 선택한 상태가 된다.

  • Snapshot Plan and Snapshot Tree

    Oden Server를 선택했을 경우, 그에 해당하는 Snapshot Plan과 Snapshot으로 이루어진 tree가 나타난다.

  • Details

    Tree 중에서 Snapshot Plan이나 Snapshot을 선택했을 경우, 각각의 상세정보가 나타난다.

만약 Oden Server가 연결될 수 없다면, Error Log를 통해 Oden Server에 연결할 수 없다는 메시지가 나타난다.

Toolbar에 있는 Refresh 버튼을 통해 Oden Server의 목록과 선택된 Oden Server의 Snapshot Plan, Snapshot 구조가 Refresh되어 update된 내용을 얻어올 수 있다.

7.7.1.Managing Snapshot Plans

Snapshot Plan은 Snapshot 대상 디렉토리, Agent의 정보를 담고 있다. Snapshot은 Snapshot Plan을 통해서만 생성이 가능하다.

7.7.1.1.Adding a New Snapshot Plan

Snapshot Plan은 두가지 방법으로 생성이 가능하다.

  1. Toolbar에 있는 버튼을 통해 Snapshot Add Dialog를 열 수 있다.

  2. Tree 위치에서 Context Menu를 통해서 Snapshot Add Dialog를 열 수 있다.

만약, Oden Server가 연결되어 있지 않은 상태에서 Snapshot Plan을 Add 하려고 하면, Error Log에 Oden Server에 연결할 수 없다는 메시지가 나타나게 된다.

위 다이얼로그를 통해 새로운 Plan을 생성할 수도 있고, 기존에 있던 Plan을 update할 수도 있다.

  • Snapshot Plan Name

    Plan을 식별할 수 있는 이름

  • Description

    Plan에 대한 설명

  • Agent to Use

    Snapshot을 만들 대상 디렉토리, 저장할 디렉토리가 저장된 변수들을 가지고 있는 Agent

  • Snapshot Source

    Snapshot을 만들 대상 디렉토리가 저장된 변수명

    변수명이나 절대경로에 추가되는 하위 디렉토리를 직접 입력할 수 있다.

정상적으로 Snapshot Plan이 저장되면, View에는 다음과 같이 나타나게 된다. Plan을 선택했을 경우, 상세 정보가 나타나게 되는데, 여기에 Snapshot Plan에 관한 정보가 추가되어 보여진다.

  • User Information

    Snapshot Plan을 생성한 위치의 IP가 나타난다.

  • Date

    Snapshot Plan을 생성한 날짜, 시간이 YYYY/MM/DD hh:mm:ss 형태로 나타난다.

7.7.1.2.Editing an Existing Snapshot Plan

Warning

Snapshot이 존재하는 Plan에 대해서는 정보 수정이 되지 않는다.

상세 정보에서 Snapshot Source, Agent to Use, Description은은 추후에 수정이 가능하다. 수정 후, Save 버튼을 클릭하게 되면, 정보가 새로 저장된다. 이때, 만약 Plan 하위의 Snapshot이 존재하면 수정이 불가능하며, 수정을 하기 위해서는 하위의 Snapshot이 없는 빈 Plan이어야 한다.

7.7.1.3.Duplicating an Existing Snapshot Plan

기존에 생성된 Snapshot Plan과 동일한 환경을 가지는 Plan을 생성하기 위해서는 Add 버튼을 통해 새로 생성하는 방법과, duplicate 메뉴를 사용하는 방법이 있다. 마우스 우클릭을 통해 Duplicate Snapshot Plan 메뉴를 클릭하게 되면, Snapshot Duplicate Dialog가 나타난다.

Snapshot Name 은 기존의 Plan명에 -duplicate 만 추가되었으며, 나머지 정보들은 동일하다. 그대로 사용해도 되고, 수정해서 사용해도 된다.

7.7.1.4.Deleting a Snapshot Plan

Warning

Snapshot Plan을 삭제하기 위해서는 하위의 Snapshot이 모두 삭제된 상태여야한다.

생성한 Snapshot Plan을 삭제하기 위해서 Delete 버튼을 클릭하게 되면, 선택한 Snapshot Plan에 대해서 삭제 확인 메시지가 나타나게 된다.

7.7.2.Managing Snapshots

Snapshot은 Snapshot Plan의 정보를 토대로 Backup을 수행한 결과로 나타나는 File이다.

7.7.2.1.Taking a Snapshot

Snapshot Plan을 토대로 Snapshot을 생성하기 위해서는 Take Snapshot 버튼을 클릭한다.

Snapshot을 생성하기 위해 선택한 Snapshot Plan이 맞는지 확인 후, Snapshot을 생성하게 된다. Snapshot은 Source 디렉토리 하위의 모든 폴더, 파일등을 .zip으로 묶은 후, 확장자 없이 Oden Server의 conf/config.xml에서 정의한 backup-location 위치에 저장된다. Snapshot을 생성하고 난 뒤에는 Tree 위치에서 Snapshot을 확인할 수 있다.

Snapshot의 상세 정보는 다음과 같다.

  • Snapshot File Name

    Snapshot의 이름으로 '생성일_번호'의 형태로 저장된다.

  • Size

    Snapshot의 size로 KB단위로 나타난다.

  • Date

    Snapshot을 생성한 날짜, 시간이 YYYY/MM/DD hh:mm:ss 형태로 나타난다.

7.7.2.2.Deleting a Snapshot

생성한 Snapshot을 삭제하기 위해서 Delete 버튼을 클릭하게 되면, 선택한 Snapshot에 대해서 삭제 확인 메시지가 나타나게 된다.

7.7.3.Rollback with Snapshots

생성된 Snapshot을 통해 특정 시점으로 데이터를 돌리고자 할 때, Rollback 기능을 사용할 수 있다. 원하는 Snapshot을 클릭한 후 Rollback 버튼을 클릭하면 확인을 요청하는 창이 나타나고, Rollback을 수행할 수 있다.