SVN 저장소를 생성하는 쉘 스크립트 입니다.

  • SVN 버전

    • 1.9.7 (r1800392)
  • 해당 스크립트 위치

    • /home/svn
  • 스크립트
#!/bin/bash 

# @Author gentian0185 
# @Date   19.06.03 



### 상수
SVNHOST="svn://$HOST_IP" 
SVNBOT_ID="svnbot" 
SVNBOT_PASS="svnbot" 
SVN_PATH="/home/svn" 

if [ -k $1 ]; 
then 
    echo "등록할 레파지토리 명을 입력해주세요 (폴더 포함 가능)" 
    echo "ex)  svn/BOK,  SimpleProject" 
    exit 1 
fi 

SVN_MKPATH="$SVN_PATH/$1" 

while true; do 
    read -p "$SVN_MKPATH 에 레파지토리를 생성하시겠습니까? (y or n)" yn 
    case $yn in 
        [Yy]* ) break;; 
        [Nn]* ) exit;; 
        * ) echo "y or n.";; 
    esac 
done 

currPath=$(pwd) 
cd $SVN_PATH 

echo "$SVN_MKPATH 저장소 생성중..." 
echo "svnadmin create --fs-type fsfs $SVN_MKPATH" 
svnadmin create --fs-type fsfs $SVN_MKPATH 
echo "$SVN_MKPATH 저장소 생성완료" 

cd $SVN_MKPATH/conf 
echo "$(pwd) 수정 중..."



# $SVN_PATH/passwd 에 svnbot 있는지 체크하는 if 문 있으면 더욱 좋음
echo "svnbot=svnbot" >> $SVN_PATH/passwd


rm passwd

ln -s $SVN_PATH/passwd passwd 
sed -i "s/# auth-access = write/auth-access = write/g" svnserve.conf 
sed -i "s/# auth-access = read/auth-access = write/g" svnserve.conf 
sed -i "s/# password-db = passwd/password-db = passwd/g" svnserve.conf 
echo "$(pwd) 수정 완료..." 

cd $SVN_MKPATH 
echo "trunk 폴더 생성중" 
svn mkdir -m "trunk creat" --username=$SVNBOT_ID --password=$SVNBOT_PASS --non-interactive --force-log  $SVNHOST/$1/trunk 
echo "branches 폴더 생성중" 
svn mkdir -m "branches creat" --username=$SVNBOT_ID --password=$SVNBOT_PASS --non-interactive --force-log  $SVNHOST/$1/branches 
echo "tags 폴더 생성중" 
svn mkdir -m "tags creat" --username=$SVNBOT_ID --password=$SVNBOT_PASS --non-interactive --force-log  $SVNHOST/$1/tags 

echo "전체 폴더 생성완료" 
echo "저장소 생성이 완료되었습니다." 

cd $currPath 

Docker Hub 에서 기본으로 제공되는 Docker Container 에서는 Docker 데몬 서비스를 실행 할 수 없습니다.
대신 추가로 제공되는 DinD 버전을 이용하거나, Docker socker 을 공유하는 방법으로 컨테이너 내에서 컨테이너를 실행할 수 있습니다.
아래는 두가지 방법 중 Docker Socket 을 Host 와 공유하는 방법입니다.


원리는 다음과 같습니다.
Docker Container 에서도 Host에서의 Docker Daemon 에 접근하여 컨테이너를 생성하도록 합니다.
즉, 컨테이너 내부에서 또다른 컨테이너를 만드는 명령어를 실행하지만 실제로는 Host 에서 컨테이너를 생성하는 것입니다.

컨테이너를 생성할 때 '/var/run/docker.sock' 볼륨을 공유하도록 생성한 뒤, docker.io 를 설치하여 명령어를 실행하면 됩니다.
아래는 코드입니다.

docker run -ti -v /var/run/docker.sock:/var/run/docker.sock docker

실제로 컨테이너 생성 명령을 내리는 곳은 Host 라는 것을 명심하여야 합니다.
컨테이너 내부에서 띄운 컨테이너 목록을 마찬가지로 Host 에서도 확인할 수 있습니다.

출처 : https://itnext.io/docker-in-docker-521958d34efd

Jolokia 는 ?

  • Jolokia 는 JMX 에 대해 JSON 타입의 데이터를 받을 수 있는 HTTP Bridge 입니다.

  • 공식 홈페이지에서는 아래와 같이 설명하고 있습니다.

    > https://jolokia.org/
    Jolokia is remote JMX with JSON over HTTP.
    It is fast, simple, polyglot and has unique features. It's JMX on Capsaicin.

사용 방법 (war, Tomcat)

  • 해당 방법은 war 로 패키징된 웹어플리케이션을 tomcat 에 deploy 시키는 방법입니다.
  1. conf/tomcat-users.xml 에 아래 내용을 추가합니다. username, password 는 임의로 지정합니다.

    <role rolename="jolokia"/>
    <user username="tomcat" password="tomcat" roles="jolokia"/>
  2. tomcat 의 webapps 에 war 파일을 받습니다.

    cd webapps/
    wget http://search.maven.org/remotecontent?filepath=org/jolokia/jolokia-war/1.6.0/jolokia-war-1.6.0.war -O jolokia.war
    
    # auto deploy 가 아닌 경우 톰캣 재기동 진행
  3. Tomcat 구동 결과

사용방법 (JVM Agent, Tomcat)

  • 해당 방법은 tomcat 을 실행할 때 jvm agent 를 추가로 띄우는 방법입니다. 해당 방법은 oracle java (jvm) 만 사용 가능합니다.

  • 설치 디렉터리 : /etc/beats/vendor

  1. 아래와 같은 명령어로 설치를 진행합니다.

    cd /etc/beats/vendor
    wget http://search.maven.org/remotecontent?filepath=org/jolokia/jolokia-jvm/1.6.0/jolokia-jvm-1.6.0-agent.jar -O jolokia-jvm-1.6.0-agent.jar
  2. tomcat 의 bin/setenv.sh 등의 시작 파일에 아래 내용을 추가해줍니다. 여기서 8888 포트는 tomcat 과 겹치지 않도록 합니다.

    export JMX_OPTS=" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname='IP입력' -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port='JMX포트입력'"
    
    # http 로 출력할 포트 입력
    export JOLIKIA_OPTS=" -javaagent:/etc/beats/vendor/jolokia-jvm-1.6.0-agent.jar=port=8888,host=0.0.0.0 "
    export JAVA_OPTS="$JAVA_OPTS $JMX_OPTS"
  3. Tomcat 구동 결과

+ Recent posts