Gaiaz
так я ж в консоли из под себя запускаю, так, сейчас попробую скопировать ключи куданибудь в публичное место для теста
maniac
а, это git ругается, а не ssh
maniac
и я не ляпнул а сказал. подумав. я просто неправ скорее всего.
Gaiaz
ой, дал в попыхах 777 на ключи, а ssh оказывается с такими ключами работать))
Gaiaz
(всмысле на копии ключей временные)
Gaiaz
все ок с ключами, не сломанные. Я так понял ансибл не подомной их считать пытается и поэтому ошибка
Gaiaz
nPermissions 0444 for '/tmp/ssh/id_rsa.pub' are too open.\r\nIt is required that your private key files are NOT accessible by others.\r\nThis private key will be ignored.
Gaiaz
проверяю, но что делать если ssh не дает использовать ключи с правами 444 например
Gaiaz
а под какими пользователем это выполнится? или как сделать чтобы подомной выполнялось? (запускаю руками из консоли) tasks: - name: Check out a git repository local_action: git args: repo: "{{ git_repo }}" dest: "{{ build_path }}" # version: "{{ git_branch }}" accept_hostkey: true # update: yes # force: yes key_file: "/tmp/ssh/id_rsa.pub" clone: yes
maniac
выполнится от того пользователя под которым подключается ансибль если не стоит become: true, тогда от пользователя из переменной become_user
maniac
дерни что-то типа ansible -m raw -a "id" и посмотри
Gaiaz
да, проблема в том, что я никак не могу вкурить принцип взаимодействия плейбуков и инвентаря > cat hosts.yaml all: hosts: localhost: ansible_connection: local gather_facts: no become_user: gaiaz
Gaiaz
дерни что-то типа ansible -m raw -a "id" и посмотри
> ERROR! Missing target hosts я тупой, -i hosts.yml не сработало тут
maniac
да, там нужно еще таргет хост указать, на каком (каких) ты хочешь выполнить этот модуль
maniac
эм, а у тебя кроме локалхоста есть машины?
Gaiaz
В конфиге пока что нет. А вообще есть, но всего 2. Там несколько тасков простых: создать папочку, rsync и симлинк.
Gaiaz
Спасибо, самое главное что наконец пришло понимание (возможно конечно ошибочное), и цель куда копать. Надо разобраться чтоб локальные команды из под меня выполнялись 👌
Gaiaz
если кому-то интересно вот нашел удобный кусок для дебага: - name: get the username running the deploy local_action: command whoami register: username_on_the_host - debug: var=username_on_the_host
Gaiaz
блин key_file это приватный ключ (хотя я пробовал но видать не заметил что ошибка менялась)
Gaiaz
😨
Gaiaz
В сухом остатке на сегодня 1) Приватный ключ видит ~/.ssh/id_rsa (ошибки формата нет) 2) passphase не спрашивает (для моего ключа соответственно нужен) 3) пробую на публичном гитхаб репозитории (для локализации проблемы) 4) Текст ошибки: Failed to download remote objects and refs: Permission denied (publickey).\r\nfatal: Could not read from remote repository.\n\nPlease make sure you have the correct access rights\nand the repository exists. хотя репозиторий публичный. 5) в таком виде работает: - name: Manual git clone local_action: command git clone git@github.com:symfony/symfony-standard.git /tmp/ansible-build/test (Не работает через git модуль)
Gaiaz
Последняя проблема решена: git модуль ансибла не умеет работать с passphase
Gaiaz
ну да, я же в предыдущем сообщении в пункте 2 написал
maniac
вообще для юзера который деплоит и которому не надо пушить лучше создать отдельный ключ
Gaiaz
да, спасибо, так и сделаю
Gaiaz
ну былоб неплохо написать в модуль проверку на такие ситуации, хуже от этого точно не стало бы
Pavel
Ну почему ансибол такое говно
Pavel
Его лекс. анализатор даже не может подсказать где ошибка в синтаксисе не говоря уже о семантике
Pavel
The error appears to have been in 'db_migrate.yml': line 5, column 3, but may be elsewhere in the file depending on the exact syntax problem."Может быть тут, а может быть там, я ничо не знаю я тупой ансибол"
Pavel
Тогда бы все инструменты были одинаково полезны в руках гениев? ;)
Pavel
Но это противоречит мантре "для каждой задачи - свой инструмент"
Pavel
У инструмента нет интеллекта в отличие от гипотетического "админа". Не путай теплое и мягкое.
Pavel
Конкретно инструмент описания данных под название "YAML" не подходит для задач описания логики, в которых нужен хоть сколько-то нетривиальный семантический анализ ошибки.
Pavel
Причем довольно убогий язык.
Pavel
А че там stonic? Заглох? =)
Dmitrii
Ансибл реально заебал
Dmitrii
Я до сих пор сижу на 2.2.3
Pavel
А может солт лучше в этом плане? или пуппет какой-нибудь? Я уже на все готов.
Dmitrii
Я постепенно все больше и больше обкладываюсь packer'ом и terraform'ом
Dmitrii
Чтобы не зависеть от идемподентности (точнее глюков) запусков Ансибла
Dmitrii
Щас вот проде автостейджинги для пайплайна почти доделал. Пакером собираю AMI, провиженю через ансибл один раз и все. Дальше использую как базоый образ. В пайплайне заменяю только хост приложения и маплю DNS на новый инстанс. Никаких запусков ансибла более которые длятся вечность )
Pavel
Кстати да
Pavel
Хождение ансиблом через бастион хост очень сильно тормозит его работу
Dmitrii
Не очень сильно
Dmitrii
А ебать как сильно
Dmitrii
Особенно через бастион в us-west-1
Pavel
на баше херач
Идея огонь. Хочется какой-то крутой абстракции над башем и чтобы можно было прозрачно работать с хостами и их именованием, нормально видеть логи исполняющихся команд и дебажить ошибки
Pavel
Щас у меня тривиальная задачка по заливке дампа БД с одного хоста на другой, где в другой ходим через бастион, превратилась в какое-то адище и борьбу с глобальными фактами и переменными, модуль synchronize высирает какой-то непонятный статус с километровыми строчками запуска ssh/rsync команд c кучей параметров
Dmitrii
О, я такое на ансибле сделал у себя
Dmitrii
Оно еще и ноду в амазоне поднимать умеет )))
Pavel
Хотя тут наверное действительно моя вина, ансибол это все же инструмент для приведения множества хостов к определенному состоянию, а не для выполнения администраторских задач по взаимодействию между хостами
Dmitrii
И дампит с RDS'а
Dmitrii
Могу дать хинт
Pavel
дай
Dmitrii
Не пытайся перекидывать с ремоута на ремоут если есть бастион
Dmitrii
You shall not pass
Pavel
Бля, отличный хинт
Pavel
Dmitrii
Я скачиваю на локал и заливаю обратно
Dmitrii
Операторская тачка используется как буфер для базы
Pavel
"swiss army knife" - говорили они..
Dmitrii
Но у меня там еще жесче. Мне там еще пришлост добавлять на лету в инвентори хост нговосозданный в амазоне
Dmitrii
Плюс бастион...
Pavel
так у меня почти то же самое
Dmitrii
Все возможно с помощью ансибля. Только не спрашивай как оно выглядит в итоге
Pavel
Хотя не чуть попроще. Я принимаю два параметра - имя хоста с которого качать и имя куда закачивать. И сразу начинаются проблемы с hostvars[host_dest] и прочее.
Dmitrii
У меня имя хоста это пикапится с инвентори проекта
Dmitrii
Поэтому у меня оно сразу знает какие хосты, как база называется, какой к ней пароль и так далее
Pavel
Да да у меня то же
Dmitrii
Ну и че у тебя не работает то )
Pavel
Была светлая мысль что можно описать все хосты в инвентори и далее творить с ними любые непотребства. Но хер там.
Dmitrii
delegate_to используй для делегации команды на бастион
Dmitrii
Я так дамплю с RDS'а. Потом через делегат забираю на локал
Dmitrii
А потом лью на АВС с локала
Dmitrii
Таким образом оно работает более-менее )
Pavel
У меня бастион никак не участвует в процессе, он просто прописан в ssh конфиге в виде ProxyCommand
Sergey
Заведите с3 бакет, туда положили бэкап оттуда же забрали
Pavel
нет, потому что этот тот вывод который противоречит официальным заявлениям. Они стало быть просто лгут.