2016-04-05 12 views
0

Hier ist, was ich letztlich versuche zu erreichen. Ich möchte ein geschichtetes AMI-System in AWS mit Foundation-> Base-> Specialized Base-> Application haben.Installieren Sie Pakete in Ansible bedingt

Ich freue mich auf so viel von der Konfiguration wie ich in diese AMIs backen kann. Die Werkzeuge, die ich dazu verwende, sind Jenkins, Packer und Ansible.

Das Problem, das ich habe, ist, dass ich möchte, dass nur bestimmte Pakete auf Instanzen installiert werden, die für die Produktion festgelegt sind. Ich dachte anfangs konnte ich genau wie diese

{ role: <<package_name>>, when: "{{ lookup('env', 'PROD') }}" } 

etwas tun, aber das ist auf der Suche auf dem Host-Rechner und nicht die AWS Ziel. Ich versuche, meinen Prozess hier neu zu bewerten und wollte sehen, ob jemand einen besseren Vorschlag hatte, wie man die Installation bestimmter Pakete auf bestimmte Maschinen beschränken kann. Ich weiß, dass ich eine Produktionsbasis und eine Nichtproduktionsbasis schaffen könnte, aber das wird alle Downstream-AMIs, die ich habe, verdoppeln, und das versuche ich zu vermeiden.

+0

Die Frage auf den Kopf stellen, welche Art von Paket möchten Sie in der Produktion, aber nicht woanders in Ihrer Pipeline? Schränkt dies nicht die Effektivität Ihrer Pipeline ein? Und gibt es einen Grund, es nicht außerhalb der Produktion zu installieren? – ydaetskcoR

+0

Gute Frage. Für diesen speziellen Anwendungsfall wäre es ein Überwachungsagent, den wir pro Installation bezahlen würden. Ich möchte nur, dass dieser Überwachungsagent in Produktionssysteme eingebacken wird. Ich könnte das tun, wenn die Instanz über user_data oder etwas bootet, aber ich würde es lieber in die Instanz einbauen lassen. –

Antwort

1

Nach der documentation sollte {{ ansible_env.SOME_VARIABLE }} funktionieren.

+0

Vielen Dank. Jetzt muss ich herausfinden, warum mein Packer-Skript die Variable nicht richtig setzt. Das ist das Thema einer anderen Frage. :) –

Verwandte Themen