Packer – Provisionador de script de Shell para clonar Repo privado – Instancias EC2 de inicio automático

Así que he buscado cómo encontrar la forma de get una compilation Packer para download un repository privado para una compilation ec2 ami que se utilizará para crear nuevas instancias en una configuration de inicio automático. Entonces, teniendo la instancia de ec2 recién creada, toma un repository privado.

Parece que la forma más segura de get un repository privado es usar una key de implementación, pero creo que tendría que agregar manualmente cada key de implementación al repository para cada instancia … lo cual frustra el propósito de la automation, a less que lo esté haciendo algo mal.

Entonces, esencialmente, me pregunto cómo clonar un repository privado a través de packer, ya sea a través de un script de shell o de otra manera. Entiendo que puedo usar Chef, pero no creo que deba instalar otra dependencia cuando lo único que trato de hacer es clonar un repository de github.

¿Tengo que escribir un tipo de secuencia de commands send / expect que utiliza la URL del clon de https github?

Cualquier y toda ayuda apreciada.

Hay una "solución" usando ssh-agent. Digo solución porque no es particularmente elegante. Sería mejor tener esta parte de un module Puppet (quizás ya haya uno).

La idea es que necesites generar un par de key pública / privada para cada uno de tus repositorys privados de Github. A continuación, agrega la key pública como una key de Implementación en la configuration del proyecto Github (Configuración / Llaves de implementación). Donde almacena el par de llaves depende de usted.

Ahora en Packer, puede usar un aprovisionador de Shell y ejecutar algo en esta línea:

#!/usr/bin/env bash ssh-keyscan github.com >> /home/ec2-user/.ssh/known_hosts eval `ssh-agent` ssh-agent bash -c \ 'ssh-add /home/ec2-user/.ssh/[privateKey]; git clone git@github.com:[account]/project.git' 

La ventaja de este enfoque es que puede clonar múltiples repositorys privados fácilmente.

Hay algunas forms de cargar su par de keys en el cuadro EC2, ya sea mediante el uso de un proveedor de files , Chef o Títere.