BOSH는 VM 내부의 SW 배포에 필요한 설치 파일/script/소스등의 모음 인 release라는 파일을 통해 Deploy를 수행합니다.
물론 그 과정에 Manifest라는 파일과 stemcell 이미지가 필요하지만요...
BOSH release의 구성요소는 다음과 같습니다
1) Jobs describe pieces of the service or application you are releasing
2) Packages provide source code and dependencies to jobs
3) Source provides packages the non-binary files they need
4) Blobs provide packages the binaries they need, other than binaries that are checked into a source code repository
1. Release 생성
# bosh init release <release_name>
아래와 같이 Release의 기본 구조가 만들어짐
├── blobs
├── config
│ └── blobs.yml
├── jobs
├── packages
└── src
2. jobs 생성
Release의 job은 수행 할 work의 묶음
예를 들어 dhcp Release라고 하면 dhcp_server job이 있을테고 APM Release 라면 apache, mysql, php를 설치/설정하는 3가지의 job으로 나눌 수 있지 않을까 싶다
아래 명령어로 job을 만들게 되면 아래 구조로 각각의 job의 골격이 만들어진다
# bosh generate job <job_name>
create jobs/job_one
create jobs/job_one/templates
create jobs/job_one/spec
create jobs/job_one/monit
jobs
│ ├── job_one
│ │ ├── monit
│ │ ├── spec
│ │ └── templates
│ │ └── pre-start.sh.erb
│ └── job_two
│ ├── monit
│ ├── spec
│ └── templates
여기서
spec : spec 파일은 job의 metadata를 정의한 파일로 bosh를 통해 deploy 시 해석되어 사용된다
name, description, templates, package, properties로 구성 되어 있음
spec 파일의 자세한 schema는 https://bosh.io/docs/jobs.html 참조
Templates : (ERB 기반의 Configuration file)
Bosh에서 배포 시 파일의 Template 역할을 하는 기반임
Monit에서 사용하는 ctl 파일이나 Hook scripts(pre-start, post-start, post-deploy) 등
참조 가 되는 디렉토리 또한 ERB 파일이기때문에 Basic ERB syntax를 이용가능함
- <%= "value" %>: Inserts string “value”.
- <% expression %>: Evaluates expression but does not insert content into the template. Useful for if/else/end statements.
<%= p("some.property") %>: Insert the property some.property value, else a default
Monit : process pid 정보와 start, stop 스크립트를 명시한 파일
monit 설정을 ㅗㅇ해 bosh는 해당 job의 상태를 체크하고 점검함
'CloudFoundry' 카테고리의 다른 글
[CloudFoundry] bosh apache2 release (0) | 2016.06.23 |
---|---|
[bosh] job lifecycle (0) | 2016.06.02 |
bosh-lite 이용한 CloudFoundry deploy (0) | 2016.04.20 |
[CloudFoundry] cf push process(application 배포) (0) | 2016.04.20 |
CloudFoundry user-provide-service setting (0) | 2016.04.20 |