BOSH CLI 가이드

문서 개요

문서 목적

본 문서는 MicroBOSH/BOSH에 대한 설치 및 운영 관리를 위한 도구인 BOSH CLI에 대해 기본 사용법 및 사용 예시를 통해 BOSH를 이해하는데 목적이 있다.

문서 범위

본 문서에서는 BOSH CLI 사용법에 대해서 작성하였습니다.

참고 자료

본 문서는 Cloud Foundry의 BOSH Document(http://bosh.io)를 참고로 작성하였습니다.

BOSH CLI 기본 사용법

CLI는 BOSH 배포와 Release를 관리하기 위해 도움을 주는 커맨드 라인 명령어로 아래와 같이 2가지 형태로 구분된다.
  • bosh : BOSH (Multi-VM BOSH)를 관리하기 위한 CLI
  • bosh micro : MicroBOSH (Single-VM BOSH)를 관리하기 위한 CLI
  • 기본 Syntax
    1
    $ bosh [<options>] <command> [<args>]
    2
    $ bosh micro [<options>] <command> [<args>]
    Copied!
    bosh 또는 bosh micro 명령어에 대괄호로 묶인 options 과 args는 명령어에 따라 선택적으로 사용되고, command는 필수인자이다.
  • Options
    번호
    옵션
    설명
    1
    -c, --config
    BOSH configuration file 지정
    2
    --parallel MAX
    병렬 다운로드 최대 개수 설정
    3
    --[no-]color
    Toggle colorized output
    4
    -v, --verbose
    Show additional output
    5
    -q, --quiet
    suppress all output
    6
    -n, --non-interactive
    Don’t ask for user input
    7
    -N, --no-track
    Return task ID and don’t track
    8
    -P, --poll INTERVAL
    Director task polling interval
    9
    -t, --target URL
    타겟 디렉터 지정
    10
    -u, --user USER
    BOSH 사용자 아이디
    11
    -p, --password PASSWORD
    BOSH 사용자 비밀번호
    12
    -d, --deployment FILE
    BOSH 배포파일 지정
    13
    -h, --help
    Help 메시지 보기

BOSH CLI - micro

micro deployment

  • 기본 Syntax
    1
    $ bosh micro deployment [<manifest-filename>]
    Copied!
  • 설명
    bosh micro에 설정된 배포 파일을 확인하거나 또는 설정하기 위한 명령어
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    manifest-filename
    MicroBOSH 배포 Manifest파일
    X

micro deployments

  • 기본 Syntax
    1
    $ bosh micro deployments
    Copied!
  • 설명
    bosh micro에서 배포한 목록 출력
  • 파라미터
    없음

micro deploy

  • 기본 Syntax
    1
    $ bosh micro deploy [<stemcell>] [--update] [--update-if-exists]
    Copied!
  • 설명
    MicroBOSH Instance 배포
  • 파라미터
파라미터 명
설명
필수**(O/X)**
stemcell
Stemcell 파일
O
--update
update existing instance
X
--update-if-exists
create new or update existing instance
X

micro status

  • 기본 Syntax
    1
    $ bosh micro status
    Copied!
  • 설명
    MicroBOSH 등록 정보 출력
  • 파라미터
  • 없음

micro agent

  • 기본 Syntax
    1
    $ bosh micro agent <args>
    Copied!
  • 설명
    MicroBOSH Agent에게 요청 Message 전달
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    args
    메시지 유형
    O
    메시지 유형
    • start : MicroBOSH 에 구동중인 모든 Job 시작
    • stop : MicroBOSH 에 구동중인 모든 Job 종료
    • ping : Agent 응답 여부 확인
    • drain TYPE SPEC
      • TYPE : ‘shutdown’, ‘update’, ‘status’ 중 하나
      • SPEC : 사용할 drain spec
    • state [full] : 시스템의 상태 출력
    • list_disk : MicroBOSH에 마운트된 디스크 CID목록 출력
    • migrate_disk OLD NEW : 디스크 Migrate
    • mount_disk CID : 마운트 디스크
    • unmount_disk CID : 언마운트 디스크

micro apply

  • 기본 Syntax
    1
    $ bosh micro apply <spec>
    Copied!
  • 설명
    MicroBOSH Instance에 지정된 Spec정보 적용
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    spec
    MicroBOSH Instance에 적용할 spec 파일
    O

micro delete

  • 기본 Syntax
    1
    $ bosh micro delete
    Copied!
  • 설명
    MicroBOSH Instance 삭제
  • 파라미터
  • 없음

BOSH CLI - Deployment

deployment

  • 기본 Syntax
    1
    $ bosh deployment [<manifest-filename>]
    Copied!
  • 설명
    bosh에 설정된 배포 파일을 확인하거나 또는 설정하기 위한 명령어
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    manifest-filename
    BOSH 배포 Manifest파일
    X

deployments

  • 기본 Syntax
    1
    $ bosh deployments
    Copied!
  • 설명
    bosh에서 배포한 목록 출력
  • 파라미터
    없음

edit deployment

  • 기본 Syntax
    1
    $ bosh edit deployment
    Copied!
  • 설명
    현재 설정된 배포 Manifest 파일 편집기를 이용해서 수정
  • 파라미터
    없음

deploy

  • 기본 Syntax
    1
    $ bosh deploy [--recreate] [--redact-diff]
    Copied!
  • 설명
    배포 수행
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    --recreate
    모든 VM 재생성
    X
    --redact-diff
    Manifest내 변경된 정보는 무시
    X

download manifest

  • 기본 Syntax
    1
    $ bosh download manifest <deployment_name> [<save_as>]
    Copied!
  • 설명
    BOSH Manifest 파일 다운로드
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    deployment_name
    다운로드할 배포명 설정
    O
    save_as
    저장할 파일명 설정
    X

diff

  • 기본 Syntax
    1
    $ bosh diff <template>
    Copied!
  • 설명
    현재 Deployment 설정된 정보와 지정된 Manifest파일과의 비교하여 차이 출력
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    template
    비교 대상 Manifst 파일
    O

validate jobs

  • 기본 Syntax
    1
    $ bosh validate jobs
    Copied!
  • 설명
    현재 배포 Manifest를 사용하여 Release에서 모든 Job의 유효 여부 확인
  • 파라미터
    없음

BOSH CLI - Release

create release

  • 기본 Syntax
    1
    $ bosh create release [--force] [--final] [--with-tarball] [--dry-run]
    2
    [--name NAME] [--version VERSION]
    Copied!
  • 설명
    Release 생성
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    --force
    bypass git dirty state check
    X
    --final
    create final release
    X
    --with-tarball
    create release tarball
    X
    --dry-run
    stop before writing release manifest
    X
    --name NAME
    specify a custom release name
    X
    --version VERSION
    specify a custom version number
    X

delete release

  • 기본 Syntax
    1
    $ bosh delete release <name> [<version>] [--force]
    Copied!
  • 설명
    등록된 Release 삭제
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    name
    삭제할 Release 이름
    O
    version
    삭제할 Release 버전
    X
    --force
    Release 삭제하는 동안 에러 무시
    X

verify release

  • 기본 Syntax
    1
    $ bosh verify release <tarball_path>
    Copied!
  • 설명
    Release 유효성 체크
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    tarball_path
    Release 파일
    O

upload release

  • 기본 Syntax
    1
    $ bosh upload release [<release_file>] [--rebase] [--skip-if-exists]
    Copied!
  • 설명
    Release 업로드
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    release_file
    업로드할 Release 파일
    O
    --rebase
    최신 버전 Release
    X
    --skip-if-exists
    Release가 존재하는 경우 무시
    X

releases

  • 기본 Syntax
    1
    $ bosh releases
    Copied!
  • 설명
    Release 목록 출력
  • 파라미터
    없음

reset release

기본 Syntax
1
$ bosh reset release
Copied!
  • 설명
    Reset Dev release
  • 파라미터
    없음

init release

  • 기본 Syntax
    1
    $ bosh init release [<base>] [--git]
    Copied!
  • 설명
    Release작성하기 위한 템플릿 디렉토리 및 파일 생성
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    base
    Release 작성을 위한 기준 디렉토리 지정(지정하지 않을 경우 현재 디렉토리에 생성됨)
    X
    --git
    git repository 초기화
    X

generate job

  • 기본 Syntax
    1
    $ bosh generate job <name>
    Copied!
  • 설명
    Job Template 생성
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    name
    생성할 Job Template 이름
    O

generate package

  • 기본 Syntax
    1
    $ bosh generate package <name>
    Copied!
  • 설명
    Package 템플릿 생성
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    name
    생성할 패키지 이름
    O

BOSH CLI - Stemcell

upload stemcell

  • 기본 Syntax
    1
    $ bosh upload stemcell <stemcell_location> [--skip-if-exists]
    Copied!
  • 설명
    BOSH stemcell 업로드
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    stemcell_location
    BOSH Stemcell 파일 경로
    O
    --skip-if-exists
    존재하는 BOSH Stemcell이면 Skip
    X

verify stemcell

  • 기본 Syntax
    1
    $ bosh verify stemcell <tarball_path>
    Copied!
  • 설명
    BOSH stemcell 유효성 검사
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    tarball_path
    BOSH Stemcell 파일 경로
    O

stemcells

  • 기본 Syntax
    1
    $ bosh stemcells
    Copied!
  • 설명
    Director에 업로드한 Stemcell 목록 출력
  • 파라미터
    없음

delete stemcell

  • 기본 Syntax
    1
    $ bosh delete stemcell <name> <version> [--force]
    Copied!
  • 설명
    BOSH stemcell 삭제
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    name
    Stemcell 이름
    O
    version
    Stemcell 버전
    O
    --force
    Stemcell 삭제하는 동안 에러 무시
    X

public stemcells

  • 기본 Syntax
    1
    $ bosh public stemcells [--full] [--all]
    Copied!
  • 설명
    public stemcell 목록 출력
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    --full
    다운로드 URL 출력
    X
    --all
    모든 Stemcell 출력
    X

download public stemcell

  • 기본 Syntax
    1
    $ bosh download public stemcell <stemcell_filename>
    Copied!
  • 설명
    public stemcell 다운로드
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    stemcell_filename
    다운로드 받을 Stemcell 파일명
    O

BOSH CLI - Job

start

  • 기본 Syntax
    1
    $ bosh start <job> [<index>] [--force]
    Copied!
  • 설명
    Job/Instance 시작
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    job
    Job 이름
    O
    index
    Job 번호
    X
    --force
    수행중 발생하는 에러 무시
    X

stop

  • 기본 Syntax
    1
    $ bosh stop <job> [<index>] [--soft] [--hard] [--force]
    Copied!
  • 설명
    Job/Instance 종료
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    job
    Job 이름
    O
    index
    Job 번호
    X
    --soft
    프로세스만 종료
    X
    --hard
    VM 종료
    X
    --force
    수행중 발생하는 에러 무시
    X

restart

  • 기본 Syntax
    1
    $ bosh restart <job> [<index>] [--force]
    Copied!
  • 설명
    Job/Instance (Soft stop+start) 재시작
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    job
    Job 이름
    O
    index
    Job 번호
    X
    --force
    수행중 발생하는 에러 무시
    X

recreate

  • 기본 Syntax
    1
    $ bosh recreate <job> [<index>] [--force]
    Copied!
  • 설명
    Job/Instance (Soft stop+start) 재생성
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    job
    Job 이름
    O
    index
    Job 번호
    X
    --force
    수행중 발생하는 에러 무시
    X

BOSH CLI - User

create user

  • 기본 Syntax
    1
    $ bosh create user [<username>] [<password>]
    Copied!
  • 설명
    BOSH 사용자 등록
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    username
    사용자 아이디
    X
    password
    사용자 비밀번호
    X

delete user

  • 기본 Syntax
    1
    $ bosh delete user [<username>]
    Copied!
  • 설명
    BOSH 사용자 삭제
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    username
    사용자 아이디
    X

login

  • 기본 Syntax
    1
    $ bosh login [<username>] [<password>]
    Copied!
  • 설명
    BOSH 사용자 등록
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    username
    사용자 아이디
    X
    password
    사용자 비밀번호
    X

logout

  • 기본 Syntax
    1
    $ bosh logout
    Copied!
  • 설명
    BOSH 로그 아웃
  • 파라미터
    없음

BOSH CLI - Task

task

  • 기본 Syntax
    1
    $ bosh task [<task_id>] [--event] [--cpi] [--debug] [--result] [--raw] [--no-filter]
    Copied!
  • 설명
    BOSH Task 수행 로그 출력
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    task_id
    Task ID
    O
    --event
    Event Log 출력
    X
    --cpi
    CPI Log 출력
    X
    --debug
    Debug Log 출력
    X
    --result
    Result Log 출력
    X
    --raw
    raw 로그 출력
    X
    --no-filter
    모든 Task 유형(ssh, logs, vms, etc) 포함해서 로그 출력
    X

tasks

  • 기본 Syntax
    1
    $ bosh tasks [--no-filter]
    Copied!
  • 설명
    BOSH 수행중인 Task 목록 출력
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    --no-filter
    모든 Task 유형(ssh, logs, vms, etc) 포함해서 로그 출력
    X

tasks recent

  • 기본 Syntax
    1
    $ bosh tasks recent [<count>] [--no-filter]
    Copied!
  • 설명
    수행 완료한 Task 목록 출력
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    count
    Task ID
    O
    --no-filter
    모든 Task 유형(ssh, logs, vms, etc) 포함해서 출력
    X

cancel task

  • 기본 Syntax
    1
    $ bosh cancel task <task_id>
    Copied!
  • 설명
    수행중인 Task 취소
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    task_id
    수행중인 Task ID
    O

BOSH CLI - Property

set property

  • 기본 Syntax
    1
    $ bosh set property <name> <value>
    Copied!
  • 설명
    Deployment Property 설정
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    name
    Property 이름
    O
    value
    Property 값
    O

get property

  • 기본 Syntax
    1
    $ bosh get property <name>
    Copied!
  • 설명
    Deployment Property 확인
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    name
    Property 이름
    O

properties

  • 기본 Syntax
    1
    $ bosh properties [--terse]
    Copied!
  • 설명
    Deployment Property 목록 출력
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    --terse
    간결한 형식으로 출력X

unset property

  • 기본 Syntax
    1
    $ bosh unset property <name>
    Copied!
  • 설명
    Deployment Property 설정 해제
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    name
    Property 이름
    O

BOSH CLI - Log

logs

  • 기본 Syntax
    1
    $ bosh logs <job> [<index>] [--agent] [--job] [--only filter1,filter2,...] [--dir destination_directory] [--all]
    Copied!
  • 설명
    BOSH에서 배포된 VM에서 Agent나 Job 수행 로그 다운로드
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    job
    Job 이름
    O
    index
    Job 번호
    X
    --agent
    Agent 로그 출력
    X
    --job
    Job 로그 출력
    X
    --only filter1,filter2
    지정된 Filter에 대한 로그만 출력
    X
    --dir destination_directory
    로그 다운로드 경로 지정
    X
    --all
    Deprecated
    X

BOSH CLI - Maintenance

cleanup

  • 기본 Syntax
    1
    $ bosh cleanup [--all]
    Copied!
  • 설명
    사용되지 않은 오래된(2일) release와 stemcell 삭제
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    --all
    사용되지 않은 Release와 Stemcell 모두 삭제
    X

cloudcheck

  • 기본 Syntax
    1
    $ bosh cloudcheck [<deployment_name>] [--auto] [--report]
    Copied!
  • 설명
    배포 Manifest기준으로 차이가 있는 문제 검출 및 해결
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    deployment_name
    배포 이름
    X
    --auto
    자동으로 Problem 해결
    X
    --report
    Report 생성
    X

BOSH CLI – Remote Access

ssh

  • 기본 Syntax
    1
    $ bosh ssh [--public_key FILE] [--gateway_host HOST] [--gateway_user USER] [--gateway_identity_file FILE] [--default_password PASSWORD]
    Copied!
  • 설명
    배포된 VM ssh 세션 생성
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    --public_key FILE
    인증서 파일 설정
    X
    --gateway_host HOST
    Gateway Host IP
    X
    --gateway_user USER
    Gateway User
    X
    --gateway_identity_file FILE
    Gateway Identity File
    X
    --default_password PASSWORD
    Default 비밀번호
    X

scp

  • 기본 Syntax
    1
    $ bosh scp <job> [--index][--download] [--upload] [--public_key FILE] [--gateway_host HOST] [--gateway_user USER] [--gateway_identity_file FILE]
    Copied!
  • 설명
    배포된 VM으로부터 파일 다운로드 또는 업로드
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    job
    Job 이름
    O
    --download
    다운로드할 파일
    X
    --upload
    업로드할 파일
    X
    --public_key FILE
    인증서 파일 설정
    X
    --gateway_host HOST
    Gateway Host IP
    X
    --gateway_user USER
    Gateway User
    X
    --gateway_identity_file FILE
    Gateway Identity File
    X

BOSH CLI - Blob

upload blobs

  • 기본 Syntax
    1
    $ bosh upload blobs
    Copied!
  • 설명
    blobstore에 blob 업로드
  • 파라미터
    없음

add blob

  • 기본 Syntax
    1
    $ bosh add blob <local_path> [<blob_dir>]
    Copied!
  • 설명
    Blobstore에 로컬 blob 추가
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    local_path
    로컬 Blob디렉토리
    O
    blob_dir
    Release내 blob 디렉토리
    X

sync blobs

  • 기본 Syntax
    1
    $ bosh sync blobs
    Copied!
  • 설명
    blobstore의 blob 동기화
  • 파라미터
    없음

blobs

  • 기본 Syntax
    1
    $ bosh blobs
    Copied!
  • 설명
    현재 blob 상태 출력
  • 파라미터
    없음

BOSH CLI - Snapshot

take snapshot

  • 기본 Syntax
    1
    $ bosh take snapshot [<job>] [<index>]
    Copied!
  • 설명
    Snapshot 생성
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    job
    Job 이름
    O
    index
    Job 번호
    O

delete snapshot

  • 기본 Syntax
    1
    $ bosh delete snapshot <snapshot_cid>
    Copied!
  • 설명
    지정된 Snapshot CID의 Snapshot 삭제
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    snapshot_cid
    snapshot_cid
    O

delete snapshots

  • 기본 Syntax
    1
    $ bosh delete snapshots