№ 8540 В разделе
Sysadmin
от October 12th, 2017,
В подшивках: Linux, LXC
Понадобилось мне на днях перекинуть часть своих контейнеров на другой хост и призадумался я как же автоматизировать этот процесс. Ну, первое, что необходимо сделать это остановить контейнер. Далее его нужно сжать. После сжатия его можно сразу же стартовать, если вы просто копируете его.
Ниже приведен текст скрипта и я думаю вам не составит труда разобраться в нем самостоятельно.
Запускается root@boroda:~# ./lxc_move.sh inbox root@myserver.ru
#!/bin/bash container_name="$1" connect_string="$2" if [ -z "$container_name" ]; then echo "Container name not given!" exit 1 fi if [ -z "$connect_string" ]; then echo "Connect string not given!" exit 1 fi #check status, if not STOPPED run again after tar lxc_status=$(lxc-info -n $container_name|grep "STOPPED") if [ -z "$lxc_status" ]; then lxc-stop -n "$container_name" run_again="yes" fi tar --numeric-owner -czvf /tmp/container_fs.tar.gz -C /var/lib/lxc/ $container_name if [ -n "$run_again" ]; then lxc-start -n "$container_name" fi scp /tmp/container_fs.tar.gz $connect_string:/var/lib/lxc/ rm -f /tmp/container_fs.tar.gz ssh $connect_string tar -xvf /var/lib/lxc/container_fs.tar.gz -C /var/lib/lxc/ ssh $connect_string rm -f /var/lib/lxc/container_fs.tar.gz
Хорошо бы еще добавить проверку на существование контейнера на удаленной машине. Вдруг он уже там? Но мне лень 🙂
Fortune cookie: Lick-a-dee-clit!
Leave a Reply