От новичка до гуру: Курсы программирования на CyberDuff

Capistrano не работает при развертывании на нескольких хостах

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

У меня есть capistrano, работающий локально для развертывания в нескольких различных средах. (Я на windows 7, прошу). Все было хорошо, пока мне не потребовалось выполнить развертывание на нескольких серверах приложений во время одного развертывания.

Обычно мне предлагается ввести парольную фразу ssh один раз, когда я звоню cap deploy. У меня запущен ssh-agent (git никогда не приставает к моему проходу), но, несмотря на это, Capistrano всегда приставал ко мне после каждого развертывания. Тем не менее, он всегда работал при развертывании на ОДНОМ хосте.

Теперь, когда я пытаюсь выполнить развертывание на нескольких серверах одновременно, он запрашивает мою парольную фразу, которая, как представляется, повторяется несколько раз:

(ips удалено мной)

servers: ["redacted", "redacted"]<br />
Enter passphrase for ~/.ssh/id_rsa: Enter passphrase for ~/.ssh/id_rsa: 

Таким образом, я ввожу свою кодовую фразу, но это не работает. Он немного подождет, а затем выдаст ошибку:

connection failed for: <one of the server ips> (NoMethodError: undefined method `overwrite' for nil:NilClass)

И это конец.

  1. Я могу использовать ssh без пароля на серверах, на которых я развертываю все нормально.
  2. Я почти уверен, что ssh-agent запущен, так как я могу нажимать Git без ввода кодовой фразы каждый раз
  3. Использование параметра 'forward_agent' в развертывании шапки не помогло.
  4. Это моя роль:
    role :app, "ip 1 removed", "ip 2 removed"
  5. Если я устанавливаю default_run_options[:max_hosts] = 1, он работает нормально, но запрашивает мою парольную фразу для каждого отдельного подключения к каждому хосту, на который я развертываю ... что в итоге оказывается много.

По сути, я ищу любое из нижеприведенных (но не ограничиваясь этим): - «Вы никогда не собираетесь исправлять это в Windows» - «Вот как вы получаете НАСТОЯЩЕЕ развертывание без пароля в capistrano» - «Вы пропустили этот параметр /особенность?" - «У меня есть камень, который все исправит, можешь одолжить»

Спасибо!

27.04.2010

Ответы:


1

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

cap invoke COMMAND="echo 'Hello World'"

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

25.06.2010
  • У меня есть несколько этапов, поэтому я бы назвал: cap production invoke ... Это не удается, так как он запрашивает кодовую фразу для каждого сервера одновременно (то есть: меня спрашивают кодовую фразу несколько раз сразу, но мне не дают возможности введите его в 4 раза). запуск этого для отдельных серверов работает нормально, например: cap prod1 invoke ... Поскольку я могу успешно вызывать на любом отдельном сервере, я сомневаюсь, что это пользовательская переменная. Мне действительно нужно подключиться через vpn, интересно, имеет ли это какое-то отношение к этому. 26.06.2010

  • 2

    На самом деле я столкнулся с той же проблемой и исправил ее (на самом деле исправил), указав «default_run_options [: max_hosts] = 1» и используя ssh-agent для кэширования моей ключевой фразы. Конечно, это НЕ идеальное решение, и основная проблема остается скрытой под поверхностью.

    29.09.2010
  • Текущее обсуждение здесь: groups.google.com/group/capistrano/browse_thread/ поток / 29.09.2010
  • Когда я начинаю это делать, я должен предоставить ключ ssh для каждой команды, которая запускается для каждого сервера (всего около 30). У меня есть ssh-agent, но cap все равно его просит. (При выключенном ssh-agent спрашивает дважды) 30.09.2010

  • 3

    вы пробовали использовать putty-agent для хранения паролей ssh?

    возможно, это не прямой ответ, но вы можете установить msysgit и выбрать msysgit для полного добавления в PATH, а также выберите, чтобы использовать putty-agent для аутентификации.

    16.11.2010
  • спасибо, что напомнили мне об этом посте! Недавно я слышал, что capistrano на Windows поддерживает только Putty-agent, и попробовал его, но безрезультатно. Мне нужно еще немного поэкспериментировать с этим, и я обновлю здесь. 16.11.2010
  • только что добавил информацию о msysgit для конфигурации авторизации ssh 16.11.2010

  • 4

    У меня была почти такая же проблема (в Ubuntu 10.04), за исключением того, что вместо того, чтобы получить ошибку connection failed for..., он просто сидел и ничего не делал, пока я не нажал CTRL + C.

    Решение заключалось в том, чтобы вручную добавить мой SSH-ключ в мою связку ключей, набрав ssh-add /path/to/my/private/key. Он попросил меня ввести кодовую фразу, которую я ввел. Тогда я мог запускать cap production invoke COMMAND="hostname" и cap production deploy, даже не вводя свой пароль.

    У меня есть ssh_options[:forward_agent] = true набор.

    08.03.2012
    Новые материалы

    Путь AWS  — «Изучение машинного обучения — 10 начинающих ИИ и машинного обучения на AWS».
    Универсальный ресурсный центр для изучения искусственного интеллекта и машинного обучения. НОЛЬ или ГЕРОЙ, начните свое путешествие здесь. Получите решения и пройдите обучение у экспертов AWS...

    5 простых концепций Python, ставших сложными
    #заранее извините 1) Переменные x = 4 y = 5 Переменная в Python — это символическое представление объекта. После присвоения некоторого объекта переменной Python мы приобретаем..

    «Освоение вероятности: изучение совместной, предельной, условной вероятности и теоремы Байеса —…
    Виды вероятности: Совместная вероятность Предельная вероятность Условная вероятность Диаграмма Венна в вероятностях: В “Set Theory” мы создаем диаграмму Венна...

    Основы Spring: Bean-компоненты, контейнер и внедрение зависимостей
    Как лего может помочь нашему пониманию Когда мы начинаем использовать Spring, нам бросают много терминов, и может быть трудно понять, что они все означают. Итак, мы разберем основы и будем..

    Отслеживание состояния с течением времени с дифференцированием снимков
    Время от времени что-то происходит и революционизирует часть моего рабочего процесса разработки. Что-то более забавное вместо типичного утомительного и утомительного процесса разработки. В..

    Я предполагаю, что вы имеете в виду методы обработки категориальных данных.
    Я предполагаю, что вы имеете в виду методы обработки категориальных данных. Пожалуйста, проверьте мой пост Инструментарий специалиста по данным для кодирования категориальных переменных в..

    Игра в прятки с данными
    Игра в прятки с данными Я хотел бы, чтобы вы сделали мне одолжение и ответили на следующие вопросы. Гуглить можно в любое время, здесь никто не забивается. Сколько регионов в Гане? А как..