pm2 deploy – Ocultar cnetworkingenciales y datos confidenciales

Mi objective es ocultar las cnetworkingenciales de mi git repo. Toda mi canalización de aplicaciones usa Jenkins MultiBranch + PM2 con funcionalidad de implementación.

La aplicación de ejemplo siguiente funciona bien, se implementa con pm2, sin problemas con la funcionalidad, solo con la security.

Sin embargo, como puede ver, las variables de entorno se configuran con la contraseña en ellas.

El flujo de trabajo nativo de PM2 se extrae de git en la ejecución. Así que tengo que mantener mis cnetworkingenciales de forma segura en git, o hacer que se sienten fuera de mi repository, pero tener files fuera del repository puede perderse y olvidarse en los nodos de implementación.

Normalmente solo escribiría la contraseña codificada en un file de configuration, pero eso significa que el file de configuration debería estar completamente aislado del repository (no es bueno, podría perderse / olvidarse fácilmente) o la contraseña se coloca en el file de configuration y registrado (el mismo problema que estoy teniendo ahora).

Otra idea es mantener un file de configuration de "plantilla" en el repository y luego completarlo solo en el server de implementación. Eso funcionaría bien, sin embargo, en la próxima ejecución, pm2 desplegará el repository, sobrescribiendo mi versión con la versión de Git.

Entonces, con todo lo dicho, estoy un poco perdido sobre cómo hacer esto.

MEJOR CASO DE CASO Yo podría poner las cnetworkingenciales en el administrador de cnetworkingenciales de Jenkins, que se atesting en el momento de la compilation. Sin embargo, dado que no es Jenkins quien realiza el deployment (pm2 lo está haciendo), creo que esto no sería posible.

Estoy buscando ideas y mejores prácticas para sortear este enigma. ¿Cómo manejas esto en tus aplicaciones?

{ "apps" : [{ "name" : "myapp", "script" : "myapp.js", "version" : "0.0.1", "watch" : true, "env": { "NODE_ENV": "development" }, "env_production" : { "NODE_ENV": "production", "PORT": 3009, "DB_HOST":"proddb.example.com", "DB_PASS":"db_password" }, "env_stage" : { "NODE_ENV": "stage", "PORT": 3009, "DB_HOST":"stagedb.example.com", "DB_PASS":"db_password" } }], "deploy" : { "stage" : { "user" : "pm2deploy", "host" : "node01stage.example.com", "ref" : "origin/stage", "repo" : "git@example.com:devproj/myapp.git", "path" : "/var/www", "post-deploy" : ". ~/.bash_profile && npm install && pm2 startOrRestart ecosystem.json --env stage" }, "production" : { "user" : "pm2deploy", "host" : "node01prod.example.com", "ref" : "origin/master", "repo" : "git@example.com:devproj/myapp.git", "path" : "/var/www", "post-deploy" : ". ~/.bash_profile && npm install && pm2 startOrRestart ecosystem.json --env production" } } }