LINUX.ORG.RU
решено ФорумAdmin

ansible модуль synchronize не могу сообразить

 


0

1

Товарищи, подскажите туплю жутко, что-то:

Удаленный хост:

  • user: someuser
  • hostname: foo.com
  • folder: /home/someuser/remote_folder
  • В каталоге .ssh на удаленном хосте имеется публичный ключ пользователя root локального хоста.

Локальный хост:

  • Установленный ansible
  • user: root с приватным ключом
  • /etc/local_folder

Задача: выполняя ansible на локальном хосте, используя модуль synchronize, прийти на удаленный хост под пользователем someuser и синхронизировать удаленный каталог /home/someuser/remote_folder с локальным каталогом /etc/local_folder.

Я думал, всё это элементарно делается, а похоже что нет… Надо мутить с переменными и т.д.? Пока так и не врубился толком какие переменные использовать в этом случае…

★★★★★

Последнее исправление: DALDON (всего исправлений: 1)

Я ни пса не понял: локальный хост — это тот, на котором ты сидишь (под рутом)? А удаленный, соответственно — удаленный? ssh someuser@foo.com работает? ansible -a 'src=/home/someuser/remote_folder dest=/etc/local_folder mode=pull' -u someuser не работает? А что говорит?

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Я ни пса не понял: локальный хост — это тот, на котором ты сидишь (под рутом)? А удаленный, соответственно — удаленный?

Да, б… Казалось бы задача простейшая. Мне нужно скопировать два сраных файла (сертификаты) с удаленного хостинга, где у меня нету рута, на локальный хост. Хоть обосрись, но, без костылей, нельзя похоже…

ssh someuser@foo.com работает?

Да без проблем. Могу по ssh ходить. Рутом локальным, подставляя имя ограниченной учетки и приватный ключ. - Пускает, нет проблем. А модуль synchronize, падаль эта, подставляет имя из-под которого запускается плейбук чтоль… И в моём случае, это root. Я не могу прийти с хостинга внутрь к себе, могу только от себя прийти на хостинг под ограниченной учеткой и забрать файлы…

DALDON ★★★★★
() автор топика
Ответ на: комментарий от dexpl

ansible -a ‘src=/home/someuser/remote_folder dest=/etc/local_folder mode=pull’ -u someuser

напишите пож-та, полный синтаксис с указанием хостов. На каком хосте я должен это выполнить? У меня есть возможность запускать только с локального хоста… Не понимаю команду, тут же нету указания модуля который используется и т.д.

P.S. вкурил, попробую.

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 2)
Ответ на: комментарий от DALDON

Не понимаю команду, тут же нету указания модуля

Извиняй, забыл: ansible foo.com -a 'src=/home/someuser/remote_folder dest=/etc/local_folder mode=pull' -m synchronize -u someuser — подключиться к foo.com под именем someuser и synchronize'нуть тамошний src в здешний dest.

P.S. вкурил, попробую.

Успеха!

dexpl ★★★★★
()
Последнее исправление: dexpl (всего исправлений: 1)
Ответ на: комментарий от dexpl

Работает, падла эдакая из консоли…

Сейчас вот сделано:

ansible -m synchronize -a "src=/etc/ssl/mysite/ dest=/tmp/test/ mode=pull" ssh.xxx.nichost.ru

файл inventory:

cat hosts 
ssh.xxx.nichost.ru ansible_user=remoteuser ansible_ssh_private_key_file="id_rsa_for_remote_user"

Как в плейбук засунуть правильно подскажите? Я уже в ярости, просто… :)

DALDON ★★★★★
() автор топика
Ответ на: комментарий от dexpl

Твою мать… Спасибо огромное, что за ерунда..? Я в ярости.

Сделал плейбук такой:

---
- hosts: ssh.xxx.nichost.ru
  tasks:
  - name: "copy cert files to chat server from nic hosting"
    synchronize:
      mode: pull
      src: /etc/ssl/mysite/
      dest: /tmp/test/

А я то сделал не так… Я делал как в документации указано:

# Synchronization using rsync protocol (pull)
- synchronize:
    mode: pull
    src: rsync://somehost.com/path/
    dest: /some/absolute/path/

То есть, дописывал слово:

rsync://somehost.com/

Почему тут указано так? В чем я затупил то? :)

Выбросил вот это: rsync://somehost.com/ , и всё заработало…

Вестимо, что вместо somehost.com, я подставлял ssh.xxx.nichost.ru

DALDON ★★★★★
() автор топика
Последнее исправление: DALDON (всего исправлений: 1)
Ответ на: комментарий от DALDON

Почему тут указано так?

Я, признаться, тоже не пойму, зачем в доке такой пример: всю дорогу synchronize'ил, не указывая rsync://somehost.com/ ни в src, ни в dest, и, тьфу-тьфу, все синхронайзилось. Тут или код модуля смотреть и думать, что хотел сказать автор, или на гитхабе issue заводить: дескать, делаю то-то и то-то в соответствии с мануалом, получаю черт-те что, ЧЯДНТ?

dexpl ★★★★★
()
Ответ на: комментарий от deadNightTiger

Да… Я знаю что есть демон rsync. У меня, вестимо его нету на хостинге, и я через ssh гоняю. Это я понимаю. Но, я вообще не мог ума приложить, что они имеют ввиду это в документации, в виду того, что тупо демона rsync не юзал. - Вообще есть живые люди, которые юзают именно демон rsync? :) Спасибо за пояснения!

DALDON ★★★★★
() автор топика
Ответ на: комментарий от dexpl

Блин, спасибо тебе огромное… ЛЮТО благодарю. Я вообще сломал абсолютно всю голову, моей ярости не было предела… Простейшую задачу сделать не мог, времени убил вагон.

Пож-та, не сочти за труд, подскажи ещё тогда вот какой момент: я теперь ещё больше не понимаю:

Вот я создал плейбук:

---
- hosts: ssh.xxx.nichost.ru
  tasks:
  - name: "copy cert files to chat server from nic hosting"
    synchronize:
      mode: pull
      src: /etc/ssl/mysite/
      dest: /tmp/test/

Как оно, мать его работает? При том условии, что, я с локального хоста могу приходить по ssh на хостинг, а обратно нет. По идее, мне ведь надо запускать это на своём локальном хосте, чтобы была команда вида:

rsync remote@host:/dir /localdir

А как оно работает сейчас то в итоге? Какую команду бросает ansible? Я уже запутался…

DALDON ★★★★★
() автор топика
Ответ на: комментарий от DALDON

По идее, мне ведь надо запускать это на своём локальном хосте, чтобы была команда вида:

Да. Параметр mode: pull нужен именно для этого, если я что-нибудь в чем-нибудь понимаю.

Какую команду бросает ansible?

У команд ansible и ansible-playbook есть ключи -v, -vv, -vvv и -vvvv для повышения уровня «болтливости» насчет выполняемых ими действий. Кажется, -vvvv покажет и выполняемую команду, и многое другое.

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

У команд ansible и ansible-playbook есть ключи -v, -vv, -vvv и -vvvv для повышения уровня «болтливости» насчет выполняемых ими действий. Кажется, -vvvv покажет и выполняемую команду, и многое другое.

Кидал я уже три vvv. Надо ещё раз внимательней посмотреть что оно делает… Капец какой-то.

Да. Параметр mode: pull нужен именно для этого, если я что-нибудь в чем-нибудь понимаю.

Логично. Понял. Спасибо. В общем, действительно не очевидно нифига… :( Прямо низкий поклон за адекватность. Если бы не твоя помощь, то, вероятно прогремел бы мощный взрыв от моего пукана, я был на грани…

DALDON ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.