아래에 설명하는 내용은 bosh cli 버전 3.0.1 이상에서 적용되며,
저의 설치 경험과 Cloud Foundry BOSH( https://bosh.io/docs/cli-v2/#create-release ) 를 참조하여 작성하였습니다.
- Init-Release
bosh init-release [--git] [--dir=dir]
사용자가 입력한 디렉토리(dir)에 release 생성에 필요한 기본 구조가 생성됩니다.
$ mkdir -p workspace/releases
$ cd ~/workspace/releases
$ bosh init-release --git --dir test-release
$ ls -al test-release
total 36
drwxrwxr-x 8 heunji heunji 4096 2월 11 16:08 ./
drwxrwxr-x 3 heunji heunji 4096 2월 11 15:47 ../
drwxrwxr-x 2 heunji heunji 4096 2월 11 15:47 config/
drwxrwxr-x 7 heunji heunji 4096 2월 11 18:15 .git/
-rw-rw-r-- 1 heunji heunji 174 2월 11 15:47 .gitignore
drwxrwxr-x 3 heunji heunji 4096 2월 11 15:58 jobs/
drwxrwxr-x 2 heunji heunji 4096 2월 11 16:08 manifests/
drwxrwxr-x 2 heunji heunji 4096 2월 11 15:47 packages/
drwxrwxr-x 2 heunji heunji 4096 2월 11 15:47 src/
- Generate-Job
$ cd test-release
$ bosh generate-job haproxy
$ ls test-release/jobs
$ tree jobs
jobs
└── haproxy
├── monit
├── spec
└── templates
- monit
- 모든 job은 시작하고 멈출 수 있는 방법이 필요하다. control 스크립트를 작성하고 monit 파일을 수정한다.
- job에 대한 프로세스 ID(pid) 파일을 지정
- job에 대한 템플릿에서 제공하는 각 명령을 참조
- job이 vcap 그룹에 속하도록 지정
# 기본 monit
check process web_ui with pidfile /var/vcap/sys/run/web_ui/pid start program "/var/vcap/jobs/web_ui/bin/ctl start" stop program "/var/vcap/jobs/web_ui/bin/ctl stop"
group vcap
- templates
- 각 작업에 대해 /var/vcap/sys/log/{JOB_NAME}에 로그를 저장하도록 작업을 구성하는 control 스크립트를 만든다.
이 스크립트를 해당 job의 templates 디렉토리에 ctl.erb로 저장한다.
#기본 ctl.erb
#!/bin/bash RUN_DIR=/var/vcap/sys/run/web_ui LOG_DIR=/var/vcap/sys/log/web_ui PIDFILE=${RUN_DIR}/pid case $1 in start) mkdir -p $RUN_DIR $LOG_DIR chown -R vcap:vcap $RUN_DIR $LOG_DIR echo $$ > $PIDFILE cd /var/vcap/packages/ardo_app export PATH=/var/vcap/packages/ruby_1.9.3/bin:$PATH exec /var/vcap/packages/ruby_1.9.3/bin/bundle exec \ rackup -p <%= p('port') %> \ >> $LOG_DIR/web_ui.stdout.log \ 2>> $LOG_DIR/web_ui.stderr.log ;; stop) kill -9 `cat $PIDFILE` rm -f $PIDFILE ;; *) echo "Usage: ctl {start|stop}" ;;
esac
- spec
- 컴파일시 BOSH는 템플릿을 파일로 변환 한 다음 작업 VM에서 복제
- Generate-Package
bosh generate-package name
패키지 생성에 필요한 기분 구조(spec, packaging)이 생성됩니다.
spec
- 패키지 명
- 패키지들의 dependencies
- 패키지가 컴파일 할 때 필요로하는 바이너리 및 기타 파일들을 BOSH가 찾을 수 있는 위치
- packaging
---
name: haproxy
dependencies: []
files:
- haproxy/haproxy-1.8.17.tar.gz
- haproxy/pcre-8.42.tar.gz
#packaging
set -e
# Detect # of CPUs so make jobs can be parallelized
CPUS=`grep -c ^processor /proc/cpuinfo`
HAPROXY_VERSION=1.8.17
echo "Extracting pcre..."
tar xzf haproxy/pcre-8.42.tar.gz
pushd pcre-8.42
./configure
make -j${CPUS}
make install
popd
tar xzf haproxy/haproxy-${HAPROXY_VERSION}.tar.gz
pushd haproxy-${HAPROXY_VERSION}
make TARGET=linux2628 USE_OPENSSL=1 USE_STATIC_PCRE=1 USE_ZLIB=1 -j${CPUS}
mkdir ${BOSH_INSTALL_TARGET}/bin
cp haproxy ${BOSH_INSTALL_TARGET}/bin/
chmod 755 ${BOSH_INSTALL_TARGET}/bin/haproxy
popd
'클라우드 > CloudFoundry' 카테고리의 다른 글
[OpenStack] BOSH 설치 및 환경설정 (0) | 2019.06.24 |
---|---|
[BOSH-LITE] CF 설치 (0) | 2019.02.15 |
BOSH-LITE 설치 (0) | 2019.02.11 |