Cómo automatizar la clonación privada de GitHub con Chef

Todos los días debo lanzar nuevas instancias EC2 (o cualquier otro server con IP pública). Lo estoy aprovisionando con Chef, creando fantasmas, cargando bases de datos, etc.

Necesito clonar allí un par de repositorys privados de GitHub. Cuál sería la mejor forma de hacer esto?

  1. Podía generar manualmente una key ssh, y agregarla para cada repository de GitHub que necesito, luego ejecutar el guión, pero es mucho trabajo.
  2. Podría ir por git clone git://user:password@github.com/*****/*****.git , pero obviamente no quiero save mi contraseña de esta manera
  3. ¿Qué más?

¿Hay alguna forma de:

  • almacenar una key privada (¿o contraseña?) en una receta / libro de cocina o
  • generar nueva key y sincronizarla mediante API con GitHub (pero esto generaría cientos de keys en mi count de GitHub)

Almacene su key en un depósito S3 y use los roles / políticas de IAM para controlar el acceso. Citadel lo hace fácil de integrar con el Chef. Ver mi publicación sobre gestión de secretos con Chef para un resumen de otras opciones.

Plug sin vergüenza : el libro de cocina deploy_key .

Creé este libro de cocina con este caso de uso preciso en mente. Gestiona todo el ciclo de vida de las teclas de deployment en GitHub, BitBucket y GitLab. Crea una key localmente (para que nunca tenga que enviarse a través de la networking), la agrega al repository como una deploy_key (de solo lectura, de modo que estas keys nunca insertan cambios en el repository), y puede ser utilizado para eliminar los files de key y eliminar las keys del repository.

Todas las acciones son idempotentes, así que si teme que sus repos se inunden con demasiadas deploy_keys, puede eliminar la key del repository después de su uso (a través de Chef, :remove acción) o realizar una tarea de limpieza periódica para eliminar todas las deploy_keys . La próxima vez que Chef ejecute, notará que la key está ausente y la volverá a agregar.

El único secreto que necesita proteger son las cnetworkingenciales del repository, que pueden protegerse de la misma manera que lo hace con otros secretos.