DJ Mogarych |
28-11-2023 16:08 3020677 |
Синхронизация каталогов между двумя удалёнными серверами
Привет!
Подскажите, пожалуйста, как синхронизировать два каталога с файлами, которые находятся на удалённых серверах A и B?
Команды будут запускаться на третьем сервере С.
В интернете много инструкций, где команды запускаются на одном из серверов с файлами через ssh-прокси (здесь это C), но как это делать, запуская команды с самого C?
|
Cereal Keeler |
28-11-2023 16:33 3020680 |
А чем это обусловлено? Между A и B нет связности?
|
DJ Mogarych |
28-11-2023 17:36 3020690 |
Есть, но нужно из CI/CD запускать синхронизацию, "C" будет контейнером на worker-е.
|
Cereal Keeler |
28-11-2023 17:44 3020691 |
Цитата:
Цитата DJ Mogarych
Есть, но нужно из CI/CD запускать синхронизацию »
|
Тогда почему не что-то типа
Код:
C> ssh user@A "rsync -a /path/to/output/ user@B:/path/to/input"
|
DJ Mogarych |
29-11-2023 11:56 3020717 |
Там ещё нужно подсунуть ключ.
Код:
migration_files_prod2preprod:
stage: migration_files
image: docker:cli
tags:
- docker
before_script:
- eval $(ssh-agent -s)
- cat $SSH_PRIVATE_KEY | tr -d '\r' | ssh-add -
- apk add rsync
script:
- SSH_PRIVATE_KEY_ENV=$(cat $SSH_PRIVATE_KEY)
- ssh -o StrictHostKeyChecking=no cicd@10.1.0.142 "
echo "$SSH_PRIVATE_KEY_ENV" > ./SSH_PRIVATE_KEY ;
chmod 600 ./SSH_PRIVATE_KEY ;
rsync -Pav -e 'ssh -i ./SSH_PRIVATE_KEY -o StrictHostKeyChecking=no' --dry-run /docker/lk/prod/backend-data/app cicd@10.1.0.138:/docker/lk/preprod/backend-data/app ;
"
$SSH_PRIVATE_KEY - это файловая переменная. У меня пока не получается прокинуть ключ в rsync, ошибка
Код:
$ ssh -o StrictHostKeyChecking=no cicd@10.1.0.142 " echo "$SSH_PRIVATE_KEY_ENV" > ./SSH_PRIVATE_KEY ; chmod 600 ./SSH_PRIVATE_KEY ; rsync -Pav -e 'ssh -i ./SSH_PRIVATE_KEY -o StrictHostKeyChecking=no' --dry-run /docker/lk/prod/backend-data/app cicd@10.1.0.138:/docker/lk/preprod/backend-data/app ; "
Warning: Permanently added '10.1.0.142' (ED25519) to the list of known hosts.
Load key "./SSH_PRIVATE_KEY": error in libcrypto
Permission denied, please try again.
Permission denied, please try again.
cicd@10.1.0.138: Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(231) [sender=3.2.7]
Cleaning up project directory and file based variables 00:02
ERROR: Job failed: exit code 12
Много что пробовал - и добавлять пустую строку в конец файла,
Код:
echo "" > ./SSH_PRIVATE_KEY
и создавать переменную с удалением переносов -
Код:
script:
- SSH_PRIVATE_KEY_ENV=$(cat $SSH_PRIVATE_KEY | tr -d '\r')
без толку.
|
DJ Mogarych |
29-11-2023 13:43 3020721 |
Пробовал в отдельно стоящем контейнере, ошибку libcrypto вроде победил (tr -d '\r' всё же нужен), но ругается на отсутствие файла, видимо, на 10.1.0.142 нет файла ключа и всё обламывается:
Код:
ssh -i SSH_PRIVATE_KEY -o StrictHostKeyChecking=no cicd@10.1.0.142 "rsync -Pav -e 'ssh -i SSH_PRIVATE_KEY -o StrictHostKeyChecking=no' --dry-run /docker/lk/prod/backend-data/app cicd@10.1.0.138:/docker/lk/preprod/backend-data/app"
Warning: Identity file SSH_PRIVATE_KEY not accessible: No such file or directory.
Permission denied, please try again.
Permission denied, please try again.
cicd@10.1.0.138: Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(231) [sender=3.2.7]
Теперь вопрос - как сделать, чтобы файл ключа оказался под рукой у rsync. :search:
|
DJ Mogarych |
29-11-2023 14:01 3020722 |
Придумал. Гланды автогеном, как и многое в CI/CD, но работает.
Код:
scp -i SSH_PRIVATE_KEY -o StrictHostKeyChecking=no SSH_PRIVATE_KEY cicd@10.1.0.142:~
ssh -i SSH_PRIVATE_KEY -o StrictHostKeyChecking=no cicd@10.1.0.142 "chmod 600 SSH_PRIVATE_KEY"
ssh -i SSH_PRIVATE_KEY -o StrictHostKeyChecking=no cicd@10.1.0.142 "rsync -Pav -e 'ssh -i SSH_PRIVATE_KEY -o StrictHostKeyChecking=no' --dry-run /docker/lk/prod/backend-data/app cicd@10.1.0.138:/docker/lk/preprod/backend-data/app"
ssh -i SSH_PRIVATE_KEY -o StrictHostKeyChecking=no cicd@10.1.0.142 "rm SSH_PRIVATE_KEY"
|
Cereal Keeler |
03-12-2023 17:00 3020936 |
Ключики-то можно и навсегда положить, хотя дело ваше.
|
Время: 18:38.
© OSzone.net 2001-