2016-05-27 6 views
0

Beim Schreiben meines Deployment-Skripts möchte ich eine git checkout-URL festlegen, die ich geheim halten möchte. Ich möchte einen Travis-Job erstellen, um mein Playbook zu testen. Der einfachste Ansatz, den ich mir jetzt vorstellen kann, besteht darin, meine global_vars so einzustellen, dass sie nach einer env-Variablen suchen, z. B. DEPLOYMENT_GIT_URL. Ich verschlüssle dann diese Env-Variable in travis und übergebe sie an docker exec, wenn ich das Docker-Bild erstelle, um es gegen mein Playbook zu testen.Wie legen Sie verschlüsselte Travis env-Variablen in Docker fest?

Frage:

  1. Kann ich meinen verschlüsselten Travis Variable auf die Instanz über docker exec passieren? Etwas wie sudo docker exec ... export DEPLOYMENT_GIT_URL=$TRAVIS_ENV ansible-playbook -i ....
  2. Während dies scheint der einfachste Weg, es zu tun, schätzen Kommentare zu dieser Methode.

Dank

+0

Sie tun mögen überprüfen Out-Save-Tresor zum Speichern von Geheimnissen. – gogstad

Antwort

0

Sie pass variables directly to Ansible können. Wenn Sie geschachtelte oder komplexe Variablen verwenden möchten, verwenden Sie eine JSON-Zeichenfolge.

docker exec <container> ansible-playbook -e GITURL="$GITURL" whatever.yml 

Wie Gogstad erwähnt, hat ansible die Anlage Geheimnisse über ansible-vault zu verwalten. Wenn diese URL nicht Informationen enthält, für die Travis die Quelle sein muss, ist es möglicherweise einfacher, sie direkt in Ansible zu speichern. Andernfalls kann openssl das Geheimnis verwalten:

secret=$(echo -n "yourdata" | openssl enc -e -aes-256-cbc -a -k 'passpasspass') 
echo $secret | openssl enc -d -aes-256-cbc -a -k 'passpasspass' 

Wenn Sie die Daten wirklich mit einer Umgebungsvariablen übergeben möchten müssen Sie, dass bei Container-Erstellung mit docker run und -e

docker run -e GITURL="what" busybox sh -c 'echo $GITURL' 
+1

Wie würden Sie das oben erwähnte Setup an Travis anpassen? –