Копирование файлов между двумя удаленными узлами через SSH без прохождения через контроллер - PullRequest
0 голосов
/ 11 декабря 2018

Как в Ansible заставить один удаленный узел подключаться к другому удаленному узлу?

Моя цель - скопировать файл с удаленного узла a на удаленный узел b. и распакуйте его в цель, однако один из файлов очень большой.

Обычно это происходит путем извлечения на контроллер, копирования с контроллера на удаленный b , тогда разархивирование недопустимо.В идеале я хотел бы сделать из _remote_a_ что-то вроде:

ssh remote_b cat filename | tar -x

Это чтобы ускорить процесс.Для этого я могу использовать модуль оболочки, однако моя главная проблема заключается в том, что таким образом я теряю обработку Ansible параметров SSH-соединения.Я должен вручную передать закрытый ключ SSH, если таковой имеется, или пароль неинтерактивным способом, или что-то еще _remote_b_.Есть ли лучший способ сделать это без многократного копирования?

Кроме того, в этом случае необходимо выполнить это по SSH.

Обновление / уточнение: На самом деле я знаю, как это сделать из оболочкии я мог бы сделать то же самое в ansible.Мне просто интересно, есть ли лучший способ сделать это более похожим на ответ.Файл, о котором идет речь, действительно большой.Основная проблема заключается в том, что когда ansible выполняет команды на удаленных хостах, я могу настроить все в инвентаре.Но в этом случае, если бы я хотел подобный уровень конфигурируемости / гибкости, когда речь идет о параметрах этого установленного вручную ssh-соединения, мне пришлось бы написать его с нуля (может быть, даже как ANSI-модуль) или что-то подобное.В противном случае, например, попытка просто использовать ssh hostname command потребует ввода пароля без пароля или секретного ключа по умолчанию, где я не смог бы изменить путь к закрытому ключу, используемый в инвентаре, без добавления этого вручную, а для плагина ssh-подключения фактически естьдве возможные переменные, которые могут использоваться для установки закрытого ключа.

1 Ответ

0 голосов
/ 12 декабря 2018

Выглядит скорее как вопрос с ракушкой, чем с вопросом.Если 2 узла не могут общаться друг с другом, вы можете сделать

ssh remote_a cat file | ssh remote_b tar xf -

, если они могут общаться (один из узлов может подключиться к другому), вы можете запустить команду, чтобы один удаленный узел подключился к другому,как

ssh remote_b 'ssh remote_a cat file | tar xf -'

(возможно, цитирование неверно, запуск ssh под ssh иногда сбивает с толку).В последнем случае вам, вероятно, нужно ввести какой-нибудь пароль или правильно установить открытые / закрытые ключи ssh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...