2010-04-27 15 views
6

Estoy perdido aquí, y después de recorrer los mares (léase: internet) en busca de soluciones, me queda nada más que para subir la pila. cualquier ayuda apreciada.Capistrano falla para múltiples despliegues de host

Tengo capistrano ejecutándose localmente para implementaciones en varios entornos diferentes. (Estoy en Windows 7, fwiw). Todo estuvo bien hasta que necesité implementar en múltiples: servidores de aplicaciones durante una sola implementación.

Normalmente me piden mi frase de contraseña ssh una vez cuando llamo al cap deploy. Tengo ssh-agent en ejecución (git nunca me molesta), pero a pesar de esto Capistrano siempre me ha molestado una vez en cada implementación. De todos modos, siempre funcionó cuando se implementó en UN host.

Ahora, cuando intento para implementarla en varios servidores a la vez, que pide mi contraseña lo que parece ser varias veces:

(ips eliminados por mí)

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

Así que con los anteriores Ingresé mi contraseña, pero esto no funciona. Espera tan poco tiempo, luego escupe este error:

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

Y eso es todo.

  1. Puedo "sin contraseña" ssh en los servidores en los que estoy implementando muy bien.
  2. Estoy bastante seguro de que ssh-agent se está ejecutando, ya que puedo presionar Git sin ingresar mi frase de contraseña cada vez
  3. El uso de la configuración de 'forward_agent' en el despliegue de tapa no funcionó.
  4. Esta es mi papel:
    role :app, "ip 1 removed", "ip 2 removed"
  5. si fijo default_run_options[:max_hosts] = 1, funciona bien, pero pide mi frase de contraseña para cada conexión individual a cada host que estoy desplegando a .., que termina siendo mucho.

Esencialmente Busco cualquiera de los siguientes (pero no limitados a): - "Nunca vas a arreglar eso en las ventanas" - "Así es como se obtiene el despliegue sin contraseña real en Capistrano " -" ¿Ha pasado por alto esta configuración/función? " - "Tengo una roca que puede arreglar cualquier cosa, puede tomarla prestada"

¡Gracias!

Respuesta

0

¿En qué se configura la variable de usuario? ejecute un comando de invocación simple desde el directorio con el Capfile que debería tratar de ejecutar en cada servidor de la lista. ¿Se conecta con éxito?

cap invoke COMMAND="echo 'Hello World'" 

Si eso no se ejecuta, es probable que su usuario no sea el mismo que su agente sin contraseña ssh. También puede buscar en los registros de SSH en el servidor y ver si puede decir qué agente realmente intenta conectarse sin éxito.

+0

Tengo varias etapas, así que llamaría: invocación de producción de mayúsculas ... Esto falla ya que pide la frase de contraseña para cada servidor al mismo tiempo (es decir: me preguntan la frase de contraseña varias veces, pero estoy no se le ha dado la oportunidad de ingresar en 4 veces). ejecutar esto para servidores individuales funciona bien, por ejemplo: cap prod1 invocar ... Como puedo invocar con éxito en cualquier servidor individual, dudo en pensar que es la variable de usuario. Tengo que conectarme a través de vpn, me pregunto si eso tiene algo que ver con eso. – morris082

0

En realidad, he tenido el mismo problema y lo he corregido (parcheado, de verdad) al proporcionar el "default_run_options [: max_hosts] = 1" y el uso de ssh-agent para almacenar en caché mi frase de contraseña. NO es una solución ideal, sin duda, y el problema central permanece oculto bajo la superficie.

+0

Discusión en curso que tiene lugar aquí: http://groups.google.com/group/capistrano/browse_thread/thread/d38dee230377b464 – jeyroz

+1

Cuando le doy un giro, tengo que proporcionar por clave ssh para cada comando que se dispara para cada servidor (suma alrededor de 30 en total). Tengo ssh-agent en marcha, pero el tope sigue pidiéndolo. (Con ssh-agent apagado, pregunta dos veces) – morris082

0

¿Intentó usar putty-agent para almacenar contraseñas de ssh?

puede que no sea una respuesta directa, pero puede instalar msysgit y seleccionar msysgit para agregarlo por completo a PATH, también seleccione usar putty-agent para la autenticación.

+0

¡Gracias por recordarme esta publicación! Recientemente escuché que Capistrano en Windows solo admite Putty-Agent y lo probó, pero fue en vano. Necesito experimentar un poco más con él y actualizaré aquí. – morris082

+0

acaba de agregar información sobre msysgit para la configuración de autorización ssh – mpapis

0

Tuve un problema casi idéntico (en Ubuntu 10.04), excepto que en lugar de obtener el error connection failed for..., simplemente se quedaba allí y no hacía nada hasta que presioné CTRL + C.

La solución fue agregar manualmente mi clave SSH a mi llavero escribiendo ssh-add /path/to/my/private/key. Me pidió mi contraseña, que ingresé. Entonces podría ejecutar cap production invoke COMMAND="hostname" y cap production deploy sin siquiera ingresar mi contraseña.

Tengo ssh_options[:forward_agent] = true conjunto.

Cuestiones relacionadas