Commit 6fdef612 authored by Vitaly Lipatov's avatar Vitaly Lipatov

azbyka: add migrate scripts

parent 84d9a7dc
#!/bin/sh -x
CONT="$1"
FROM="a06"
IP="65.109.33.78"
subst()
{
sed -i -e "$@"
}
rsync -av --progress --delete-after --numeric-ids $FROM:/var/local/$CONT/ /var/local/$CONT/
ssh $FROM docker commit $CONT $CONT || exit
ssh $FROM docker save $CONT | podman load || exit
cd servers || exit
COMPOSOLD=$(echo services.d/old/*$CONT.yml)
cp $COMPOSOLD services.d/
COMPOS=services.d/$(basename $COMPOSOLD)
[ -s "$COMPOS" ] || exit
subst "s|116.202.174.26|$IP|" $COMPOS
subst "s|- SYS_ADMIN|- SYS_ADMIN\n - CAP_AUDIT_WRITE\n - CAP_AUDIT_CONTROL|" $COMPOS
subst "s|default:$|default|" $COMPOS
subst "s|.*ipv4_address:.*||" $COMPOS
subst "s|\(build: .*\)|#\1\n image: $CONT|" $COMPOS
./update_compose.sh || exit
./rebuild.sh $CONT || exit
ssh $FROM evz off $CONT
#!/bin/sh
# https://bugs.etersoft.ru/show_bug.cgi?id=15796#c13
. ./functions
contexec()
{
contid="$1"
shift
docker exec -i -e LC_ALL=ru_RU.UTF8 "$contid" "$@"
}
# contid
run_in_cont()
{
contid="$1"
shift
contexec "$contid" tee /tmp/cmd.int.sh >/dev/null
contexec "$contid" bash -x /tmp/cmd.int.sh "$@" </dev/null
contexec "$contid" rm -f /tmp/cmd.int.sh </dev/null
}
PROJ="$1"
FROM=a07
[ -s "ves-available/$PROJ.task" ] || fatal
# Создание ссылки в etersoft-admin-essentials/vz/azbyka/ves для проекта
ln -s ../ves-available/$PROJ.task ves/
load_config "ves/$PROJ.task"
# AUSER - системный пользователь
# NAME - имя проекта (обычно azbyka.ru/проект)
# ACONF - название конфига для nginx и apache (совпадает с пользователем обычно)
# CONT - назание контейнера
CONT=$ACONF
if true ; then
# Для переноса старых проектов на php7.4
cat <<EOF >>ves-available/$PROJ.task
DOCKERIMAGE=azbyka-altlinux-p9-apache2-php7.4
PKGPROFILE="apache2-php7"
EOF
fi
if true ; then
# Синхронизация файлов (обязательно перед созданием контейнера, а то туда попадёт старый каталог)
rsync -av --progress --delete-after --numeric-ids $FROM:/azbyka-a07/$AUSER/ /azbyka/$AUSER/
rm -vf /azbyka/$AUSER/{A06,A07,A05}
touch /azbyka/$AUSER/A01
fi
# Создание контейнера для обработки запросов
./createbytask.sh $NAME || fatal
if [ -n "$STANDALONE" ] ; then
# В evz enter nginx приходится копировать
cat <<EOF | run_in_cont nginx $NAME $ACONF $CONT
NAME="\$1"
ACONF="\$2"
CONT="\$3"
cp /root/a06-nginx/sites-enabled.d/\$NAME.conf /etc/nginx/sites-enabled.d/\$NAME.conf
cat <<NOF > /etc/nginx/httpconf-enabled.d/upstream_\$ACONF.conf
upstream upstream-\$ACONF {
server \$CONT;
}
NOF
# Также в контейнере nginx
serv nginx test && serv nginx reload
EOF
# Перенос базы (в контейнере mysql)
cat <<EOF | run_in_cont mysql $PROJ
cd
cd mysqltransfer || exit
./onebutton.sh azbyka_$AUSER $ACONF
EOF
else
# В evz enter nginx приходится копировать
cat <<EOF | run_in_cont nginx $NAME $ACONF $CONT
PROJ="\$1"
ACONF="\$2"
CONT="\$3"
cp /root/a06-nginx/sites-enabled.d/azbyka.d/\$PROJ.conf /etc/nginx/sites-enabled.d/azbyka.d/\$PROJ.conf
cp /root/a06-nginx/sites-enabled.d/azbyka.d/\$PROJ-manual.conf /etc/nginx/sites-enabled.d/azbyka.d/\$PROJ-manual.conf
cp /root/a06-nginx/include/static-fallback-\$PROJ.conf /etc/nginx/include/static-fallback-\$PROJ.conf
cat <<NOF > /etc/nginx/httpconf-enabled.d/upstream_\$ACONF.conf
upstream upstream-\$ACONF {
server \$CONT;
}
NOF
# Также в контейнере nginx
serv nginx test && serv nginx reload
EOF
exit
# Перенос базы (в контейнере mysql)
cat <<EOF | run_in_cont mysql $PROJ
cd
cd mysqltransfer || exit
./onebutton.sh $ACONF
EOF
fi
# Изменён апстрим на a06
cat <<EOF | ssh a06 tee /etc/nginx/httpconf-enabled.d/upstream_$ACONF.conf >/dev/null
upstream upstream-$ACONF {
# server a01.azbyka.ru;
server 65.109.33.78;
}
EOF
ssh a06 serv nginx reload
# На a06 старые файлы перенесены в /azbyka.mg, создана ссылка
ssh a06 mv /azbyka/$AUSER /azbyka.mg/
ssh a06 ln -s /azbyka-a01/$AUSER /azbyka/$AUSER
echo "На a06 через https://mysql.azbyka.ru переименовать $AUSER в azmg_$NAME"
# На a06 останавливаем контейнер
ssh a06 evz off $ACONF
#!/bin/sh
# https://bugs.etersoft.ru/show_bug.cgi?id=15796#c13
. ./functions
contexec()
{
contid="$1"
shift
docker exec -i -e LC_ALL=ru_RU.UTF8 "$contid" "$@"
}
# contid
run_in_cont()
{
contid="$1"
shift
contexec "$contid" tee /tmp/cmd.int.sh >/dev/null
contexec "$contid" bash -x /tmp/cmd.int.sh "$@" </dev/null
contexec "$contid" rm -f /tmp/cmd.int.sh </dev/null
}
#PROJ="$1"
PROJ="$(basename $1 .task)"
[ -s "ves-available/$PROJ.task" ] || fatal
load_config "ves/$PROJ.task"
# AUSER - системный пользователь
# NAME - имя проекта (обычно azbyka.ru/проект)
# ACONF - название конфига для nginx и apache (совпадает с пользователем обычно)
# CONT - назание контейнера
CONT=$ACONF
# Перенос базы (в контейнере mysql)
cat <<EOF | run_in_cont $CONT
cat /etc/hosts | sed -e 's|116.202.174.26|172.18.0.3|' > /tmp/hosts.tmp
cat /tmp/hosts.tmp >/etc/hosts
rm /tmp/hosts.tmp
EOF
#!/bin/sh
# https://bugs.etersoft.ru/show_bug.cgi?id=15796#c13
. ./functions
contexec()
{
contid="$1"
shift
docker exec -i -e LC_ALL=ru_RU.UTF8 "$contid" "$@"
}
# contid
run_in_cont()
{
contid="$1"
shift
contexec "$contid" tee /tmp/cmd.int.sh >/dev/null
contexec "$contid" bash -x /tmp/cmd.int.sh "$@" </dev/null
contexec "$contid" rm -f /tmp/cmd.int.sh </dev/null
}
PROJ="$(basename $1 .task)"
[ -s "ves-available/$PROJ.task" ] || fatal
if false ; then
# Для переноса старых проектов на php7.4
cat <<EOF >>ves-available/$PROJ.task
DOCKERIMAGE=azbyka-altlinux-p9-apache2-php7.4
PKGPROFILE="apache2-php7"
EOF
fi
# В evz enter nginx приходится копировать
cat <<EOF | run_in_cont nginx $PROJ
PROJ="\$1"
cat <<NOF > /etc/nginx/httpconf-enabled.d/upstream_azbyka_\$PROJ.conf
upstream upstream-azbyka_\$PROJ {
server azbyka_\$PROJ;
}
NOF
EOF
#!/bin/sh
# https://bugs.etersoft.ru/show_bug.cgi?id=15796#c13
. ./functions
contexec()
{
contid="$1"
shift
docker exec -i -e LC_ALL=ru_RU.UTF8 "$contid" "$@"
}
# contid
run_in_cont()
{
contid="$1"
shift
contexec "$contid" tee /tmp/cmd.int.sh >/dev/null
contexec "$contid" bash -x /tmp/cmd.int.sh "$@" </dev/null
contexec "$contid" rm -f /tmp/cmd.int.sh </dev/null
}
PROJ="$1"
[ -s "ves-available/$PROJ.task" ] || fatal
if false ; then
# Для переноса старых проектов на php7.4
cat <<EOF >>ves-available/$PROJ.task
DOCKERIMAGE=azbyka-altlinux-p9-apache2-php7.4
PKGPROFILE="apache2-php7"
EOF
fi
# Создание ссылки в etersoft-admin-essentials/vz/azbyka/ves для проекта
ln -s ../ves-available/$PROJ.task ves/
# Синхронизация файлов (обязательно перед созданием контейнера, а то туда попадёт старый каталог)
rsync -av --progress --numeric-ids a06:/azbyka/azbyka_$PROJ/ /azbyka/azbyka_$PROJ/
rm -vf /azbyka/azbyka_$PROJ/{A06,A07,A05}
touch /azbyka/azbyka_$PROJ/A01
# Создание контейнера для обработки запросов
./createbytask.sh $PROJ || fatal
# В evz enter nginx приходится копировать
cat <<EOF | run_in_cont nginx $PROJ
PROJ="\$1"
cp /root/a06-nginx/sites-enabled.d/azbyka.d/\$PROJ.conf /etc/nginx/sites-enabled.d/azbyka.d/\$PROJ.conf
cp /root/a06-nginx/sites-enabled.d/azbyka.d/\$PROJ-manual.conf /etc/nginx/sites-enabled.d/azbyka.d/\$PROJ-manual.conf
cp /root/a06-nginx/include/static-fallback-\$PROJ.conf /etc/nginx/include/static-fallback-\$PROJ.conf
cat <<NOF > /etc/nginx/httpconf-enabled.d/upstream_azbyka_\$PROJ.conf
upstream upstream-azbyka_\$PROJ {
server azbyka_\$PROJ;
}
NOF
# Также в контейнере nginx
serv nginx test && serv nginx reload
EOF
# Перенос базы (в контейнере mysql)
cat <<EOF | run_in_cont mysql $PROJ
cd
cd mysqltransfer || exit
./onebutton.sh azbyka_$PROJ
EOF
# Изменён апстрим на a06
cat <<EOF | ssh a06 tee /etc/nginx/httpconf-enabled.d/upstream_azbyka_$PROJ.conf >/dev/null
upstream upstream-azbyka_$PROJ {
# server a01.azbyka.ru;
server 65.109.33.78;
}
EOF
ssh a06 serv nginx reload
# На a06 старые файлы перенесены в /azbyka.mg, создана ссылка
ssh a06 mv /azbyka/azbyka_$PROJ /azbyka.mg/
ssh a06 ln -s /azbyka-a01/azbyka_$PROJ /azbyka/azbyka_$PROJ
echo "На a06 через https://mysql.azbyka.ru переименовать azbyka_$PROJ в azmg_$PROJ"
# На a06 останавливаем контейнер
ssh a06 evz off azbyka_$PROJ
#!/bin/sh
# https://bugs.etersoft.ru/show_bug.cgi?id=15796#c13
. ./functions
PROJ="$1"
[ -s "ves/$PROJ.task" ] || PROJ="$(basename "$1" .task)"
[ -s "ves/$PROJ.task" ] || fatal
load_config "ves/$PROJ.task"
# AUSER - системный пользователь
# NAME - имя проекта (обычно azbyka.ru/проект)
# ACONF - название конфига для nginx и apache (совпадает с пользователем обычно)
# CONT - назание контейнера
CONT=$ACONF
cat <<EOF | run_in_cont $CONT $NAME $ACONF #&& contexec nginx serv nginx reload
NAME="\$1"
ACONF="\$2"
file=/etc/httpd2/conf/mods-available/remoteip.conf
[ -s "\$file" ] || exit 1
grep "$NGINXIPv6" \$file && exit 1
subst "s|\(RemoteIPInternalProxy.*\)|\1 $NGINXIPv6|" \$file
serv httpd2 restart
EOF
#!/bin/sh -x
# TODO: check -k
T=$(basename $1 .task)/
#T="$1"
curl -s -k -o /dev/null -H "X-Update: 1" https://azbyka.ru/$T
curl -s -o /dev/null -H "X-Update: 1" http://azbyka.ru/$T
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment