<aside> ๐Ÿ’ก Use this template to describe the steps engineers should follow to deploy.

</aside>

1. Ping in Slack #deploys channel

Let everyone know you're about to start a deploy.

2. Scripts

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ae71e65a-5e0f-47a4-9bd1-b63652cca867/container_status.png

A. Build

<aside> ๐Ÿ’ก Build์— ํ•„์š”ํ•œ Dockerfile์€ Source์˜ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด ์ตœํ•˜๋‹จ ์— ๊ธฐ๋ก

</aside>

#!/bin/bash

# @author : sunsson
# @date : 2020.01.31
#export PATH="$HOME/bin:$HOME/.local/bin:$PATH"
#export PATH="$PATH:/mnt/c/Program\\ Files/Docker/Docker/resources/bin"
#alias docker=docker.exe
#alias docker-compose=docker-compose.exe

RED='\\033[1;31m'
NC='\\033[0m' # No Color

DOMAIN=base
VER=2.0

echo "###docker build"

#SCRIPT_NAME=$(basename $0)
#echo SCRIPT_NAME is $SCRIPT_NAME
#SCRIPT_DIR="$(echo $0| sed "s/$SCRIPT_NAME//g")"
#echo SCRIPT_DIR is $SCRIPT_DIR
source ./checkip.sh                                                                                               

#IMAGE_NAME=gigaeyes-`pwd | rev | cut -d'/' -f1 | rev`
#DOMAIN="base"
#IMAGE_NAME=gigaeyes-2.0-$DOMAIN
IMAGE_NAME=gigaeyes_pro-$DOMAIN
#IMAGE_NAME=gigaeyes-$MODULE_NAME:1.0
#CONTAINER_NAME=gep-$DOMAIN-$VER
#HOST_PUBLIC_IP=

#echo -e "+IP LIST"
#IP_LIST=`hostname -I`
#idx=0
#for I in $IP_LIST;
#do
#       echo -e "+---[$idx] ${RED}$I ${NC}"
#       let idx+=1
#done

#echo -e "${RED}์‚ฌ์šฉํ•˜์‹ค IP${NC}๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์‹ญ์‹œ์˜ค."
#echo -e "${RED}๋‚ด๋ถ€๋ง${NC}๊ณผ ${RED}์™ธ๋ถ€๋ง${NC}์ด ๊ฐ™์€ ๊ฒฝ์šฐ, ๊ฐ™์€ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค."
#read_ip "type internal network ip : " gv_internal_ip
#read_ip "type external network ip : " gv_external_ip
#gv_internal_ip="172.17.51.225"
#gv_external_ip="183.98.5.105"
#echo -e "${RED}internal${NC} network ip = ${RED}$gv_internal_ip${NC}"
#echo -e "${RED}external${NC} network ip = ${RED}$gv_external_ip${NC}"
######## SAMBA
#cp -rf ../pkg/samba/conf/smb.conf.org ../pkg/samba/conf/smb.conf
#select_internal_nic internic
#sed -i "s/===INTERNAL_NIC_HERE===/${internic}/g" ../pkg/samba/conf/smb.conf
#local lv_fw_ip1
#local lv_fw_ip2
#local lv_fw_ip3
#local lv_fw_ip4
#check_sub_ip $gv_internal_ip lv_fw_ip1 lv_fw_ip2 lv_fw_ip3 lv_fw_ip4
#sed -i "s/===INTERNAL_SUBNET_HERE===/${lv_fw_ip1}.${lv_fw_ip2}.${lv_fw_ip3}.0\\/24/g" ../pkg/samba/conf/smb.conf
#sed -i "s/===INTERNAL_IP_HERE===/${gv_internal_ip}/g" ../pkg/samba/conf/smb.conf
#sed -i "s/===INTERNAL_HOST_PREFIX_HERE===/${lv_fw_ip1}.${lv_fw_ip2}.${lv_fw_ip3}./g" ../pkg/samba/conf/smb.conf

#ARGS="--build-arg HOST_PUBLIC_IP=$gv_external_ip --build-arg HOST_PRIVATE_IP=$gv_internal_ip --build-arg INTERNAL_NIC=$gv_internic "
#ARGS="--build-arg HOST_PUBLIC_IP=192.168.100.1 --build-arg HOST_PRIVATE_IP=192.168.100.2"

#source ~/.bashrc
#export PATH="$PATH:/mnt/c/Program\\ Files/Docker/Docker/resources/bin"
#echo
echo docker image build --rm $ARGS -t $IMAGE_NAME ..
docker.exe image build --rm $ARGS -t $IMAGE_NAME:$VER ..

#echo
echo docker images [$IMAGE_NAME]
docker.exe images | egrep "REPOSITORY|$IMAGE_NAME"

B. Run

#!/bin/bash

DOMAIN="base"
VER="2.0"
HOME="/home/gigasurv"

DOCKER_OPTION="-p 22:22 -p 5432:5432 -p 3306:3306 -p 5672:5672 -p 15672:15672 -p 4369:4369 -p 140:137/udp -p 139:139 -p 1445:445 -p 2812:2812 -p 8086:8068 -p 8087:8087 -p 1935:1935 -p 28081:28081"
DOCKER_OPTION="$DOCKER_OPTION -v /sys/fs/cgroup:/sys/fs/cgroup"
#DOCKER_OPTION="$DOCKER_OPTION -v $(pwd)/../volume_storage:/storage"
#DOCKER_OPTION="$DOCKER_OPTION -v $(pwd)/../volume_logs/admin:/srv/admin/tomcat/apache-tomcat-8.0.44/logs"
#DOCKER_OPTION="$DOCKER_OPTION -v $(pwd)/../volume_logs/cep2:/srv/cep2/log"
#DOCKER_OPTION="$DOCKER_OPTION -v $(pwd)/../volume_logs/fusion:/srv/fusion/log"
#DOCKER_OPTION="$DOCKER_OPTION -v $(pwd)/../volume_logs/session:/srv/session/log"
#DOCKER_OPTION="$DOCKER_OPTION -v $(pwd)/../volume_logs/sync/`pwd | rev | cut -d'/' -f1 | rev`:/srv/sync/log"
DOCKER_OPTION="$DOCKER_OPTION -v /d/Dockers/volume_storage:/storage"
DOCKER_OPTION="$DOCKER_OPTION -v /d/Dockers/volume_logs/rabbitmq:/var/log/rabbitmq"
DOCKER_OPTION="$DOCKER_OPTION -v /d/Dockers/volume_logs/recoder:/srv/recoder/log"
DOCKER_OPTION="$DOCKER_OPTION -v /d/Dockers/volume_logs/thumbnail:/srv/thumbnail/log"
DOCKER_OPTION="$DOCKER_OPTION -v /d/Dockers/volume_logs/vod:/srv/vod/log"
DOCKER_OPTION="$DOCKER_OPTION -v /d/Dockers/volume_logs/gls:/srv/glsm/logs"

#MODULE_NAME=`pwd | rev | cut -d'/' -f1 | rev`
IMAGE_NAME=gigaeyes_pro-$DOMAIN
#IMAGE_NAME=gigaeyes-$MODULE_NAME:1.0
CONTAINER_NAME=gep-$DOMAIN

echo
#echo docker run [$CONTAINER_NAME]
echo docker run $DOCKER_OPTION --privileged -itd --hostname $CONTAINER_NAME --name $CONTAINER_NAME $IMAGE_NAME:$VER
#docker.exe run $DOCKER_OPTION --privileged --hostname $CONTAINER_NAME -d --name $CONTAINER_NAME $IMAGE_NAME:$VER /root/rabbitmq.config
#docker.exe run $DOCKER_OPTION --privileged -itd --name $CONTAINER_NAME $IMAGE_NAME:$VER /root/rabbitmq.config
#docker.exe run $DOCKER_OPTION --privileged -itd --hostname $CONTAINER_NAME --name $CONTAINER_NAME $IMAGE_NAME:$VER
#docker.exe run $DOCKER_OPTION --privileged -itd --hostname "localhost" --name $CONTAINER_NAME $IMAGE_NAME:$VER
docker.exe run $DOCKER_OPTION --privileged -itd --network gigaeyes-network --name $CONTAINER_NAME $IMAGE_NAME:$VER
#docker run -it -d --name nodel -p 2201:22 gigaeyes_pro-base:2.0

echo
docker.exe ps | egrep "CONTAINER|$CONTAINER_NAME"

#echo
echo docker exec ... /root/init_gep20.sh
#docker.exe exec -it `docker.exe ps | grep $CONTAINER_NAME | awk '{print $1}'` $HOME/bin/init_gep20.sh
docker.exe exec -it `docker.exe ps | grep $CONTAINER_NAME | awk '{print $1}'` /bin/sh /root/init_gep20.sh
#docker.exe exec -it `docker.exe ps | grep $CONTAINER_NAME | awk '{print $1}'`

#echo
#echo docker network connect gigaeyes-network $CONTAINER_NAME
#docker.exe network connect gigaeyes-network $CONTAINER_NAME

/root/init_gep20.sh

#!/bin/bash

source /root/checkip.sh

select_intn_extn gv_internal_ip gv_external_ip
select_internal_nic gv_internic

/root/rabbitmq_config.sh
/root/init_samba.sh
/root/init_gls.sh
/root/init_srv.sh

/root/rabbitmq_config.sh

#!/bin/sh
echo "================= MQ SETUP : START ==================="

#/sbin/rabbitmq-server start
#systemctl start rabbitmq-server

rabbitmqctl start_app

rabbitmq-plugins enable rabbitmq_management   
rabbitmq-plugins enable rabbitmq_management_visualiser
rabbitmq-plugins enable rabbitmq_mqtt
rabbitmq-plugins list

# ์ •๋ณด ์„ค์ •
vhost="/"
id="gigasurv"
pwd="rlrksurv@!"

###### ๊ณ„์ •์ƒ์„ฑ: START ######
	rabbitmqctl add_user ${id} ${pwd}
	rabbitmqctl set_user_tags ${id} administrator
	rabbitmqctl set_permissions -p ${vhost} ${id} ".*" ".*" ".*"
	#echo "=========================================="
###### ๊ณ„์ •์ƒ์„ฑ: END ######

###### vhosts์ƒ์„ฑ: START ######
	#rabbitmqctl add_vhost Some_Virtual_Host
	#rabbitmqctl set_permissions -p Some_Virtual_Host guest ".*" ".*" ".*"
	#echo "=========================================="
###### vhosts์ƒ์„ฑ: END ######

###### direct ์„ค์ •: STRART ######
	direct_exchange="VSAAS"
	# 2.0 ๋ณ€๊ฒฝ ์‚ฌํ•ญ : PUSH ์ถ”๊ฐ€, SENSOR_ALARM ==> SINGLE_ALARM ์ด๋ฆ„ ๋ณ€๊ฒฝ
	direct_queues=("ALARM" "EVENT" "KPNS" "RECT" "SINGLE_ALARM" "PUSH")

	# exchange ์ƒ์„ฑ(direct)
	export RESULT=`/usr/local/bin/rabbitmqadmin declare exchange --vhost=$vhost name=$direct_exchange type=direct`
	echo "[Exchange(${direct_exchange}) CREATE]-${RESULT}"

	# queue ์ƒ์„ฑ ๋ฐ ๋ฐ”์ธ๋”ฉ(direct queue)
	for q_name in "${direct_queues[@]}"
	do
		echo "------------------------------------------"
		# ํ์ƒ์„ฑ
		export RESULT=`/usr/local/bin/rabbitmqadmin declare queue --vhost=$vhost name=$q_name durable=true`
		echo "[Qeueue(${q_name}) CREATE]-${RESULT}"
		
		# ๋ฐ”์ธ๋”ฉ
		export RESULT=`/usr/local/bin/rabbitmqadmin --vhost=$vhost declare binding source=$direct_exchange destination_type=queue destination=$q_name routing_key=""`
		echo "[Binding(${q_name})]-${RESULT}"
	done
	echo "=========================================="
###### direct ์„ค์ •: END ######

###### topic ์„ค์ •: STRART ######
	default_topic_exchange="amq.topic"
	iot_with_name=("IoTGiGAeyes" "IoTGiGAeyesRet")

	# exchange ์ƒ์„ฑ(topic), queue ์ƒ์„ฑ ๋ฐ ๋ฐ”์ธ๋”ฉ(topic queue)
	for name in "${iot_with_name[@]}"
	do
		echo "------------------------------------------"
		# exchange ์ƒ์„ฑ
		export RESULT=`/usr/local/bin/rabbitmqadmin declare exchange --vhost=$vhost name=$name type=topic`
		echo "[Exchange(${name}) CREATE]-${RESULT}"

		# ํ์ƒ์„ฑ
		export RESULT=`/usr/local/bin/rabbitmqadmin declare queue --vhost=$vhost name=$name durable=true`
		echo "[Qeueue(${name}) CREATE]-${RESULT}"
		
		# ๋ฐ”์ธ๋”ฉ
		export RESULT=`/usr/local/bin/rabbitmqadmin --vhost=$vhost declare binding source=$name destination_type=exchange destination=$default_topic_exchange routing_key=".${name}"`
		echo "[E-E Binding(${name})]-${RESULT}"

		export RESULT=`/usr/local/bin/rabbitmqadmin --vhost=$vhost declare binding source=$default_topic_exchange destination_type=queue destination=$name routing_key=".${name}"`
		echo "[E-Q Binding(${name})]-${RESULT}"

	done
###### topic ์„ค์ •: END ######

###### ์ƒ์„ฑ๋œ Exchange ๋ชฉ๋ก: STAR ######
echo "-- ์„œ๋ฒ„ Exchange ๋ชฉ๋ก --"
/usr/local/bin/rabbitmqadmin list queues

###### ์ƒ์„ ๋œ Queue ๋ชฉ๋ก: START ######
echo "-- ์„œ๋ฒ„ Queue ๋ชฉ๋ก --"
/usr/local/bin/rabbitmqadmin list exchanges

# ๋ฉ”์„ธ์ง€ publish
#rabbitmqadmin publish exchange=VSAAS1 routing_key="" properties='{"content_type":"text/plain"}' payload_encoding='string' payload="{"1":"test"}"
echo "================= MQ SETUP : END ==================="

/root/init_samba.sh

#!/bin/bash

source /root/checkip.sh

function config_samba() {
	select_internal_nic internic
	select_intn_extn gv_internal_ip
	sed -i "s/===INTERNAL_NIC_HERE===/${internic}/g" /etc/samba/smb.conf
	
	local lv_fw_ip1
	local lv_fw_ip2
	local lv_fw_ip3
	local lv_fw_ip4
	check_sub_ip $gv_internal_ip lv_fw_ip1 lv_fw_ip2 lv_fw_ip3 lv_fw_ip4
	sed -i "s/===INTERNAL_SUBNET_HERE===/${lv_fw_ip1}.${lv_fw_ip2}.${lv_fw_ip3}.0\\/24/g" /etc/samba/smb.conf
	sed -i "s/===INTERNAL_IP_HERE===/${gv_internal_ip}/g" /etc/samba/smb.conf
	sed -i "s/===INTERNAL_HOST_PREFIX_HERE===/${lv_fw_ip1}.${lv_fw_ip2}.${lv_fw_ip3}./g" /etc/samba/smb.conf
}

cd /storage;
if [ -f ./3rdparty_va_data ]
then 
	mkdir 3rdparty_va_data ; 
	chown -R gigasurv:gigasurv -R 3rdparty_va_data 
fi

if [ -f GiGAeyesSmallSet ]
then 
	mkdir 3rdparty_va_data GiGAeyesSmallSet; 
	chown -R gigasurv:gigasurv -R  GiGAeyesSmallSet
fi

config_samba

/root/init_gls.sh

#!/bin/bash

# storage
mkdir -p /storage/vms
chown -R gigasurv:gigasurv /storage/vms

chown -R gigasurv:gigasurv /srv/glsm
#/srv/glsm/addon/monit/start.sh
sudo -u gigasurv /srv/glsm/bin/service.sh start