PaaS-TA-5.5.0
Search…
BOSH CLI

Table Contents

문서 개요

문서 목적

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

문서 범위

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

참고 자료

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

BOSH CLI 기본 사용법

CLI는 BOSH 배포와 Release를 관리하기 위해 도움을 주는 커맨드 라인 명령어로 아래와 같이 구분된다.
  • bosh-cli: BOSH를 관리하기 위한 CLI
  • 기본 Syntax
    $ bosh [<options>] <command> [<args>]
    bosh 명령어에 대괄호로 묶인 인자인 과 는 명령어에 따라 선택적으로 사용되고, 인자는 필수 인자이다.
  • Options
    번호
    옵션
    설명
    1
    -c, --config
    BOSH configuration file 지정
    2
    --ca-cert
    Director 및 UAA 연결에 사용 되는 CA 인증서 지정
    3
    --client
    사용자 이름 또는 UAA 클라이언트 재정의
    4
    -n
    입력 사용이 필요한 확인
    5
    --json
    출력 형식을 JSON으로 변경
    6
    --tty
    명령이 리디렉션되지 않을 때 일반적으로 표시되는 모든 텍스트를 출력에 포함
    7
    --no-color
    색상을 비활성화
    8
    --deployment, -d
    Deploy 명령을 위한 배치 지정
    9
    -h, --help
    Help 메시지 보기
    10
    --column=
    지정된 열만 표시하도록 필터링
    11
    -e, --enviroment
    SHA256 체크섬 사용
    12
    --sha2
    BOSH 배포파일 지정
    13
    --parallel=
    병렬 작업의 최대 수
    14
    --client-secret=
    암호 또는 UAA 클라이언트 암호 재정의

BOSH CLI - Environments

bosh environments

  • 기본 Syntax
    $ bosh environments (Alias: envs)
  • 설명
    BOSH CLI에 등록 한 디렉터의 별명이 지정된 환경을 나열
  • 파라미터
  • 사용 예시
    $ bosh envs
    URL Alias
    104.154.171.255 gcp
    192.168.56.6 vbox
    2 environments
    Succeeded

bosh create-env

  • 기본 Syntax
    $ bosh create-env [deploymentFile] [--state path] [-v ...] [-o ...] [--vars-store path]
  • 설명
    BOSH CLI를 통해 Manifest File을 기반으로 단일 VM을 생성. 일반적으로 Director 환경을 만드는 데 사용
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    deploymentFile
    설치 Manfiest 파일
    O
    --state path
    Deployment state 파일 경로
    X
    -v
    Manifest Replace 변수 ex) internal_ip, deployment_name
    X
    -o
    option Manifest File ex) jumpbox-user.yml, uaa.yml...
    X
    --vars -store path
    creds.yml 파일, 인증 키 및 Job Password yml 파일 경로
    X
  • 사용 예시
    $ bosh create-env ~/workspace/bosh-deployment/bosh.yml \
    --state state.json \
    --vars-store ./creds.yml \
    -o ~/workspace/bosh-deployment/virtualbox/cpi.yml \
    -o ~/workspace/bosh-deployment/virtualbox/outbound-network.yml \
    -o ~/workspace/bosh-deployment/bosh-lite.yml \
    -o ~/workspace/bosh-deployment/jumpbox-user.yml \
    -v director_name=vbox \
    -v internal_ip=192.168.56.6 \
    -v internal_gw=192.168.56.1 \
    -v internal_cidr=192.168.56.0/24 \
    -v network_name=vboxnet0 \
    -v outbound_network_name=NatNetwork

bosh alias-env

  • 기본 Syntax
    $ bosh alias-env [name] -e [location] [--ca-cert=path]
  • 설명
    BOSH CLI를 통해 엑세스 할 디렉터의 별명이 지정
  • 파라미터
파라미터 명
설명
필수**(O/X)**
name
환경 이름 지정
O
location
디렉터 위치 지정
O
--ca-cert=path
CA 인증서를 지정
X

bosh environment

  • 기본 Syntax
    $ bosh -e [my-env] environment (Alias: env)
  • 설명
    해당 Director 정보를 출력
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    my-env
    지정 한 Director 환경 이름 명칭
    O
  • 사용 예시
    $ bosh -e vbox env
    Using environment '192.168.56.6' as '?'
    Name vbox
    UUID eeb27cc6-467e-4c1d-a8f9-f1a8de759f52
    Version 260.5.0 (00000000)
    CPI warden_cpi
    Features compiled_package_cache: disabled
    dns: disabled
    snapshots: disabled
    User admin
    Succeeded

bosh delete-env

  • 기본 Syntax
    $ bosh delete-env [deploymentFile] [--state path] [-v ...] [-o ...] [--vars-store path]
  • 설명
    매니페스트를 기반으로 이전에 만든 VM을 삭제, create-env 명령에 제공된 것과 동일한 플래그를 delete-env 명령에 제공해야한다.
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    deploymentFile
    설치 한 Manfiest 파일
    O
    --state path
    Deployment state 파일 경로
    O
    -v
    Manifest Replace 변수 ex) internal_ip, deployment_name
    X
    -o
    option Manifest File ex) jumpbox-user.yml, uaa.yml…
    X
    --vars -store path
    creds.yml 파일, 인증 키 및 Job Password yml 파일 경로
    X
  • 사용 예시
    $ bosh delete-env ~/workspace/bosh-deployment/bosh.yml \
    --state state.json \
    --vars-store ./creds.yml \
    -o ~/workspace/bosh-deployment/virtualbox/cpi.yml \
    -o ~/workspace/bosh-deployment/virtualbox/outbound-network.yml \
    -o ~/workspace/bosh-deployment/bosh-lite.yml \
    -o ~/workspace/bosh-deployment/jumpbox-user.yml \
    -v director_name=vbox \
    -v internal_ip=192.168.56.6 \
    -v internal_gw=192.168.56.1 \
    -v internal_cidr=192.168.56.0/24 \
    -v network_name=vboxnet0 \
    -v outbound_network_name=NatNetwork

BOSH CLI - Session

bosh log-in

  • 기본 Syntax
    $ bosh -e [my-env] l
  • 설명
    주어진 사용자를 Director에 로그인합니다.
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    my-env
    BOSH 지정 한 Director 환경 이름 명칭
    O
  • 사용 예시
    $ bosh -e my-env l
    User (): admin
    Password ():

bosh log-out

  • 기본 Syntax
    $ bosh -e [my-env] log-out
  • 설명
    현재 접속 한 디렉터 로그아웃
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    my-env
    BOSH 지정 한 Director 환경 이름 명칭
    O
  • 사용 예시
    $ bosh log-out
    Logged out from '192.168.10.241'
    Succeeded

BOSH CLI - Stemcells

bosh Stemcells

  • 기본 Syntax
    $ bosh -e [my-env] stemcells (Alias: ss)
  • 설명
    업로드 한 릴리즈 조회
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    my-env
    지정 한 Director 환경 이름 명칭
    O
  • 사용 예시
    $ bosh -e my-env ss
    Using environment '192.168.56.6' as '?'
    Name Version OS CPI CID
    bosh-warden-boshlite-ubuntu-trusty-go_agent 3363* ubuntu-trusty - 6cbb176a-6a43-42...
    ~ 3312 ubuntu-trusty - 43r3496a-4rt3-52...
    bosh-warden-boshlite-centos-7-go_agent 3363* centos-7 - 38yr83gg-349r-94...
    (*) Currently deployed
    3 stemcells
    Succeeded

bosh upload-stemcell

  • 기본 Syntax
    $ bosh -e [my-env] upload-stemcell [location] [--sha1=digest] [--fix]
  • 설명
    스템셀 업로드
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    my-env
    지정 한 Director 환경 이름 명칭
    O
    location
    스템셀 파일 위치 및 URL 지정
    X
    --sha1
    스템셀 파일 sha1um 값 확인
    X
    --fix
    이전에 업로드 한 스템 셀을 동일한 이름과 버전으로 교체
    X
  • 사용 예시
    $ bosh -e my-env us ~/Downloads/bosh-stemcell-3468.17-warden-boshlite-ubuntu-trusty-go_agent.tgz
    $ bosh -e my-env us https://bosh.io/d/stemcells/bosh-stemcell-warden-boshlite-ubuntu-trusty-go_agent?v=3468.17

bosh delete-stemcell

  • 기본 Syntax
    $ bosh -e [my-env] delete-stemcell [name]/[version]
  • 설명
    업로드 한 스템셀 삭제
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    my-env
    지정 한 Director 환경 이름 명칭
    O
    name
    삭제 할 스템셀 명
    O
    version
    삭제 할 스템셀 버전
    O
  • 사용 예시
    $ bosh -e my-env delete-stemcell bosh-warden-boshlite-ubuntu-trusty-go_agent/3468.17

bosh repack-stemcell

  • 기본 Syntax
    $ bosh repack-stemcell src.tgz dst.tgz [--name=name] [--version=ver] [--cloud-properties=json-string]
  • 설명
    기존 스템셀의 이름, 버전 및 클라우드 등록 정보와 같은 업데이트 된 등록 정보로 새로운 스템셀 타르볼을 생성 참조 URL: https://bosh.io/docs/repack-stemcell.html
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    name
    업데이트 등록 스템셀 명
    O
    version
    업데이트 등록 스템셀 버전
    X
    cloud-properties
    업데이트 등록 스템셀 cloud-properties, Json 형식
    X
  • 사용 예시
    $ bosh repack-stemcell --name=acme-ubuntu-encrypted --cloud-properties='{"encrypted": true, "kms_key_arn": "arn:aws:kms:us-east-1:088444384256:key/4ffbe966-d138-4f4d-a077-4c234d05b3b1"}' bosh-stemcell-3363.9-aws-xen-hvm-ubuntu-trusty-go_agent.tgz acme-encrypted-stemcell.tgz

BOSH CLI - Release creation

bosh init-release

  • 기본 Syntax
    $ bosh init-release [--git] [--dir=dir]
  • 설명
    dir에 릴리즈에 관련한 구성 파일을 생성 dir을 사용 않할 경우는 현재 디렉토리
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    --git
    BOSH 릴리즈 Git repository에 적절한 .gitignore 파일을 생성
    X
    --dir
    디렉토리에 대한 빈 릴리스 구성 파일 생성
    X
  • 파라미터
    $ bosh init-release --git --dir release-dir
    $ cd release-dir

bosh generate-job

  • 기본 Syntax
    $ bosh generate-job [name] [--dir=dir]
  • 설명
    dir에 릴리즈에 대한 Job에 관련 한 빈 파일 생성
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    name
    릴리즈 Job 명칭
    O
    --dir
    디렉토리에 대한 Job 관련 빈 릴리스 구성 파일 생성
    X
  • 사용 예시
    $ bosh generate-job jenkins

bosh generate-package

  • 기본 Syntax
    $ bosh generate-pakage [name] [--dir=dir]
  • 설명
    dir에 릴리즈에 대한 pakage에 관련 한 빈 파일 생성
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    name
    릴리즈 pakage 명칭
    O
    --dir
    디렉토리에 pakage Job 관련 빈 릴리스 구성 파일 생성
    X
  • 사용 예시
    $ bosh generate-package jenkins

bosh vendor-package

  • 기본 Syntax
    $ bosh vendor-package [name] src-dir [--dir=dir]
  • 설명
    다른 릴리스의 패키지를 dir의 릴리스로 제공, 릴리즈를 만들 때 CLI가 특정 패키리를 참조 하도록 디렉토리에 spec.lock을 포함 설명 참조 https://bosh.io/docs/package-vendoring.html
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    name
    릴리즈 pakage명칭
    O
    --dir
    디렉토리에 대한 package 관련 빈 릴리스 구성 파일 생성
    X
  • 사용 예시
    $ bosh vendor-package golang-1.8-linux ~/workspace/golang-release

bosh create-release

  • 기본 Syntax
    $ bosh create-release [--force] [--version=ver] [--timestamp-version] [--final] [--tarball=path] [--dir=dir] (Alias: cr)
  • 설명
    dir에 저장된 릴리스의 새 버전을 생성
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    --force
    릴리스 디렉토리에서 커밋되지 않은 변경 사항을 무시하도록 지정
    X
    --version
    사용자 정의 릴리스 버전을 제공
    X
    --version
    사용자 정의 릴리스 버전을 제공
    X
    --timestamp-version
    타임 스탬프 기반의 dev 릴리즈 버전을 생성
    X
    --tarball
    릴리스 타르볼의 대상을 지정
    X
    --sha2
    SHA256 체크섬 사용 지정
    X
  • 사용 예시
    $ bosh create-release --force

bosh finalize-release

  • 기본 Syntax
    $ bosh finalize-release [path] [--force] [--version=ver] [--dir=dir]
  • 설명
    선택적으로 주어진 버전으로 최종 릴리스로 릴리스 타볼의 내용을 기록
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    path
    릴리즈 tarball 지정
    O
    --force
    릴리스 디렉토리에서 커밋되지 않은 변경 사항을 무시하도록 지정
    X
    --version
    사용자 정의 릴리스 버전을 제공
    X
    --dir
    디렉토리 위치 지정
    X
  • 사용 예시
    $ cd release-dir
    $ bosh finalize-release /tmp/my-release.tgz
    $ bosh finalize-release /tmp/my-release.tgz --version 20
    $ git commit -am 'Final release 20'
    $ git push origin master

bosh reset-release

  • 기본 Syntax
    $ bosh reset-release [--dir=dir]
  • 설명
    릴리스 디렉토리에 보관 된 dev 릴리스, blob 등의 임시 아티팩트를 제거
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    --dir
    디렉토리 위치 지정
    O
  • 사용 예시
    $ bosh reset-release ~/Download/jenkins

BOSH CLI - Release blobs

bosh blob

  • 기본 Syntax
    $ bosh blobs
  • 설명
    릴리즈 Blobstore에 등록 한 blob 출력
  • 사용 예시
    $ cd release-dir
    $ bosh blobs
    Path Size Blobstore ID Digest
    golang/go1.6.2.linux-amd64.tar.gz 81 MiB f1833f76-ad8b-4b... b8318b0...
    stress/stress-1.0.4.tar.gz 187 KiB (local) e1533bc...
    2 blobs
    Succeeded

bosh add-blob

  • 기본 Syntax
    $ bosh add-blob [src-path] [dst-path]
  • 설명
    릴리즈 Blobstore에 로컬 blob 추가
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    src-path
    로컬 Blob 디렉토리
    O
    dst-path
    릴리즈 내 blob 디렉토리
    X
  • 사용 예시
    $ cd release-dir
    $ bosh add-blob ~/Downloads/stress-1.0.4.tar.gz stress/stress-1.0.4.tar.gz

bosh reomove-blob

  • 기본 Syntax
    $ bosh remove-blob [blob-path]
  • 설명
    릴리즈 Blobstore에 존재 하는 Blob 삭제
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    blob-path
    릴리즈 내 blob 디렉토리
    O
  • 사용 예시
    $ cd release-dir
    $ bosh remove-blob stress/stress-1.0.4.tar.gz

bosh sync-blob

  • 기본 Syntax
    $ bosh sync-blobs
  • 설명
    릴리즈 내 blobstore의 blob 동기화
  • 사용 예시
    $ cd release-dir
    $ bosh sync-blobs

BOSH CLI - Releases

bosh releases

  • 기본 Syntax
    $ bosh -e [my-env] releases (Alias: rs)
  • 설명
    업로드 한 릴리즈 조회
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    my-env
    지정 한 Director 환경 이름 명칭
    O
  • 사용 예시
    $ bosh -e my-env rs
    Using environment '192.168.56.6' as client 'admin'
    Name Version Commit Hash
    capi 1.21.0* 716aa812
    cf-mysql 34* e0508b5
    cf-smoke-tests 11* a6dad6e
    cflinuxfs2-rootfs 1.52.0* 4827ef51+
    consul 155* 22515a98+
    diego 1.8.1* 0cca668e
    dns 3* 57e27da
    etcd 94* 57c81e16
    garden-runc 1.2.0* 2b3dedc5
    loggregator 78* 773a3ba
    nats 15* d4dfc4c1+
    routing 0.145.0* dfb44c41+
    statsd-injector 1.0.20* 552926d
    syslog 9 ac2172f
    uaa 25* 86ec7568
    (*) Currently deployed
    (+) Uncommitted changes
    15 releases
    Succeeded

bosh upload-release

  • 기본 Syntax
    $ bosh -e [my-env] upload-release [location] [--version=ver] [--sha1=digest] [--fix] (Alias: ur)
  • 설명
    릴리즈 업로드
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    my-env
    지정 한 Director 환경 이름 명칭
    O
    location
    릴리즈 파일 위치 및 URL 지정
    O
    --sha1
    릴리즈 파일 sha1um 값 확인
    X
    --fix
    이전에 업로드 한 릴리즈를 동일한 이름과 버전으로 교체
    X
  • 사용 예시
    $ bosh -e my-env ur
    $ bosh -e my-env ur https://bosh.io/d/github.com/concourse/concourse?v=2.7.3
    $ bosh -e my-env ur git+https://github.com/concourse/concourse --version 2.7.3

bosh delete-release

  • 기본 Syntax
    $ bosh -e [my-env] delete-release [name]/[version]
  • 설명
    업로드 한 릴리즈 삭제
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    my-env
    지정 한 Director 환경 이름 명칭
    O
    name
    삭제 할 릴리즈 명
    O
    version
    삭제 할 릴리즈 버전
    O
  • 사용 예시
    $ bosh -e my-env delete-release cf-smoke-tests/94

bosh export-release

  • 기본 Syntax
    $ bosh -e [my-env] -d my-dep export-release [name]/[version] [os]/[version] [--dir=dir]
  • 설명
    특정 스템셀에 대한 릴리즈를 컴파일 하고 내보낸다
  • 파라미터
    파라미터 명
    설명
    필수**(O/X)**
    my-env
    지정 한 Director 환경 이름 명칭
    O
    name
    릴리즈 명
    O
    version
    릴리즈 버전
    O
    os
    스템셀 os 명
    O
    version
    스템셀 os 버전
    O
    dir
    내보내기 디렉토리
    X
  • 사용 예시
    $ bosh -e my-env -d my-dep export-release cf-smoke-tests/94 ubuntu-trusty/3369

bosh inspect-release

  • 기본 Syntax
    $ bosh -e [my-env] inspect-release [name]/[version]
  • 설명
    모든 Job, Job의 메타데이터 패키지 및 릴리즈 버전과 관련 된 패키지를 출력
  • 파라미터
    파라미터 명