Archived
0

update scritp

This commit is contained in:
dedic-one
2022-01-14 13:27:51 +03:00
parent 7c1a3173a7
commit e0e3659d44
5 changed files with 225 additions and 143 deletions

51
ctl Executable file
View File

@@ -0,0 +1,51 @@
#!/bin/bash
# vi: set tabstop=4 shiftwidth=4 expandtab :
ROOTDIR=$(cd "$(dirname "$0")" && pwd)
cd $ROOTDIR
declare -A MAP_COMMAND
# === Log ==================================================================== #
CW="\033[1;37m" # White
CG="\033[0;32m" # Green
CY="\033[0;33m" # Yellow
NC="\033[0m" # Reset
function log {
local II="${CW}╡${CG}ctl${CW}╞${NC}"
echo -e "${II} $@"
}
log "${CY}Container Control Script ${CG}b20220114-0500${NC}"
# === Import ================================================================= #
for V in $(ls $ROOTDIR/ctl.d/*.sh)
do
. $V
done
# === Main =================================================================== #
function main {
local args=($@)
local command=${args[0]}
if [[ -n $command ]]
then
for cmd in $(echo "${!MAP_COMMAND[@]}")
do
if [ $command = $cmd ]
then
${MAP_COMMAND[$cmd]} ${args[@]:1}
return
fi
done
fi
print_help
}
function print_help {
local vvv=$(echo "${!MAP_COMMAND[@]}" | tr ' ' "\n" | sort | tr "\n" ',' | sed 's/,/, /g')
log "Use: ${vvv:: -2}"
}
main $@

View File

@@ -0,0 +1,129 @@
#!/bin/bash
# vi: set tabstop=4 shiftwidth=4 expandtab :
declare -A M_CONTAINER
M_CONTAINER['name']=''
M_CONTAINER['title']='(NULL)'
M_CONTAINER['shell']=sh
M_CONTAINER['upd-sig']=HUP
#
# Статус работы контейнера
#
MAP_COMMAND['status']=fn_container_status
function fn_container_status {
if [ $(fn_container_check) = 1 ]
then
log "${M_CONTAINERP['title']} running"
podman logs --tail 5 ${M_CONTAINER['name']}
elif [ $(fn_container_check2) = 1 ]
then
log "${M_CONTAINER['title']} container down"
else
log "${M_CONTAINER['title']} not running"
fi
}
#
# Остановка контейнера
#
MAP_COMMAND['stop']=fn_container_stop
function fn_container_stop {
if [ $(fn_container_check) = 1 ]
then
log "Stop ${M_CONTAINER['title']} container..."
podman stop ${M_CONTAINER['name']}
fi
if [ $(fn_container_check2) = 1 ]
then
log "Remove ${M_CONTAINER['title']} container..."
local container_id=$(podman rm ${M_CONTAINER['name']})
log $conainer_id
# TODO здесь необходимо выполнить проверку на
# - включен ли модуль network
# - остались ли после удаления контейнера сетевые файлы
# - Если да, то запустить процесс зачистки...
# - ...файлов
# - ...nftables
# - Если нет, просто завершить работу
else
log "${M_CONTAINER['title']} not runned."
fi
}
#
# Перезапуск контейнера
#
MAP_COMMAND['restart']=fn_container_restart
function fn_container_restart {
fn_container_stop && fn_container_start
}
#
# Логи контейнера
#
MAP_COMMAND['logs']=fn_container_logs
function fn_logs {
if [ $(fn_container_check2) = 1 ]
then
podman logs --tail 10 -f ${M_CONTAINER['name']}
else
log "${M_CONTAINER['title']} not exists"
fi
}
#
# Войти в shell контейнера
#
MAP_COMMAND['shell']=fn_container_shell
function fn_container_shell {
if [ $(fn_container_check) = 1 ]
then
log "Enter shell in ${M_CONTAINER['title']} container..."
podman exec -it ${M_CONTAINER['name']} ${M_CONTAINER['shell']}
else
log "${M_CONTAINER['title']} not runned."
fi
}
#
# Послать сигнал обновления конфигов.
# Предназначено для запущенный в контейнере программ.
#
MAP_COMMAND['update']=fn_container_update_config
function fn_container_update_config {
if [ $(fn_container_check) = 1 ]
then
log "Update config ${M_CONTAINER['title']}..."
podman kill --signal=${M_CONTAINER['upd-sig']} ${M_CONTAINER['name']}
else
log "${M_CONTAINER['title']} not runned."
fi
}
#
# Статус работы контейнера
#
function fn_container_check {
if [[ -n $(podman ps --filter "name=${M_CONTAINER['name']}" -q) ]]
then
echo 1
else
echo 0
fi
}
#
# Статус существования контейнера
#
function fn_container_check2 {
if [[ -n $(podman ps --filter "name=${M_CONTAINER['name']}" -qa) ]]
then
echo 1
else
echo 0
fi
}

30
ctl.d/11-pma.sh Normal file
View File

@@ -0,0 +1,30 @@
#!/bin/bash
# vi: set tabstop=4 shiftwidth=4 expandtab :
M_CONTAINER['name']='tools--phpmyadmin'
M_CONTAINER['title']='phpMyAdmin'
M_CONTAINER['host']=0.0.0.0
M_CONTAINER['port']=9091
MAP_COMMAND['start']=fn_container_start
function fn_container_start {
if [ $(fn_container_check) = 1 ]
then
log "${M_CONTAINER['title']} is runned."
elif [ $(fn_container_check2) = 1 ]
then
log "${M_CONTAINER['title']} container is down. Need restart."
else
log "Start ${M_CONTAINER['title']} container..."
local container_id=$(podman run -d \
--name "${M_CONTAINER['name']}" \
--volume /etc/timezone:/etc/timezone:ro \
--volume /etc/localtime:/etc/localtime:ro \
--publish "${M_CONTAINER['host']}:${M_CONTAINER['port']}:8080" \
--env 'PMA_ARBITRARY=1' \
phpmyadmin:5.1.1-apache
)
log $conainer_id
fi
}

15
ctl.d/21-pma-backup.sh Normal file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
# vi: set tabstop=4 shiftwidth=4 expandtab :
MAP_COMMAND['backup']=fn_backup
function fn_backup {
local basename=$(basename "$(cd "$(dirname "$0")" && pwd)")
local archive=${basename}-$(date +%Y%m%d)
log 'Backup...'
tar -cf - -- \
ctrl.d/ \
ctl \
| 7z a -bso0 -si ${archive}.tar.7z
log "$(du -sh ${archive}.tar.7z)"
}

143
ctrl.sh
View File

@@ -1,143 +0,0 @@
#!/bin/bash
# vi: set tabstop=4 shiftwidth=4 expandtab :
ROOTDIR=$(cd "$(dirname "$0")" && pwd)
cd $ROOTDIR
# \
# == Constants ============================================================== #
# /
DKRNAME=tools--phpmyadmin
NAME=phpMyAdmin
# \
# == Colors ================================================================= #
# /
CW="\033[1;37m"
CG="\033[0;32m"
CY="\033[0;33m"
NC="\033[0m"
II="${CW}${CG}ctrl${CW}${NC}"
echo -e "${II} ${CY}Container CTRL Script ${CG}b20211219-0247${NC}"
# \
# == Function =============================================================== #
# /
function main {
case "$1" in
'start') fn_start ;;
'stop') fn_stop ;;
'restart') fn_stop && fn_start ;;
'logs') fn_logs ;;
'shell') fn_shell ;;
'backup') fn_backup ;;
'update') fn_update_config ;;
*) echo -e "${II} Use: start, stop, restart, logs, shell, backup, update" ;;
esac
}
# \
# == Fun:Container ========================================================== #
# /
function fn_start {
if [ $(fn_container_check) = 1 ]
then
echo -e "${II} $NAME is runned."
elif [ $(fn_container_check2) = 1 ]
then
echo -e "${II} $NAME container is down. Need restart."
else
echo -e "${II} Start $NAME container..."
local CONTAINER_ID=$(podman run -d \
--name "$DKRNAME" \
--memory '512M' \
--volume /etc/timezone:/etc/timezone:ro \
--volume /etc/localtime:/etc/localtime:ro \
--publish "0.0.0.0:9091:80" \
--env 'PMA_ARBITRARY=1' \
phpmyadmin:5.1.1-apache
)
echo $CONTAINER_ID
fi
}
function fn_stop {
if [ $(fn_container_check) = 1 ]
then
echo -e "${II} Stop $NAME container..."
podman stop $DKRNAME
fi
if [ $(fn_container_check2) = 1 ]
then
echo -e "${II} Remove $NAME container..."
local CONTAINER_ID=$(podman rm $DKRNAME)
echo $CONTAINER_ID
else
echo -e "${II} $NAME not runned."
fi
}
function fn_logs {
if [ $(fn_container_check2) = 1 ]
then
podman logs --tail 10 -f $DKRNAME
else
echo -e "${II} $NAME not exists."
fi
}
function fn_shell {
if [ $(fn_container_check) = 1 ]
then
echo -e "${II} Enter shell in $NAME container..."
podman exec -it $DKRNAME sh
else
echo -e "${II} $NAME not runned."
fi
}
function fn_update_config {
if [ $(fn_container_check) = 1 ]
then
echo -e "${II} Update config $NAME..."
podman kill --signal=HUP $DKRNAME
else
echo -e "${II} $NAME not runned."
fi
}
function fn_container_check {
if [[ -n $(podman ps --filter "name=$DKRNAME" -q) ]]
then
echo 1
else
echo 0
fi
}
function fn_container_check2 {
if [[ -n $(podman ps --filter "name=$DKRNAME" -qa) ]]
then
echo 1
else
echo 0
fi
}
# \
# == Other ================================================================== #
# /
function fn_backup {
BASENAME=$(basename "$(cd "$(dirname "$0")" && pwd)")
ARCHIVE=$BASENAME-$(date +%Y%m%d)
echo -e "${II} Backup..."
tar -cf - -- \
*.sh \
| 7z a -bso0 -si $ARCHIVE.tar.7z
echo -e "${II} $(du -sh $ARCHIVE.tar.7z)"
}
main $@