Wie kann ich Software automatisch installieren?
Hallo zusammen!
Ich klicke mir manchmal bei Amaz*n eine virtuelle Windows-Maschine, z.B. wenn ich mal schnell eine Software ausprobieren möchte oder so etwas.
Nachteil daran ist aber, dass diese Maschinen ja immer komplett jungfräulich sind, was Software angeht.
Kennt ihr vielleicht eine Software XYZ, mit der ich etwas wie diesen Ablauf machen könnte:
- Ich richte mir irgendwo ein git-Repository ein.
- In das git-Repository lege ich eine Konfigurationsdatei für XYZ.
- In einer neuen virtuellen Maschine installiere ich git und TortoiseGit und XYZ und checke das Repository mit der Konfigurationsdatei für XYZ aus.
- Von dieser virtuellen Maschine mache ich ein Maschinen-Image, danach brauche ich sie nicht mehr.
Wenn ich in Zukunft eine virtuelle Maschine brauche...
- schreibe ich in die XYZ-Konfigurationsdatei in meinem git-Repository etwas á la "Installiere 7zip und Java und Eclipse und ...!"
- Starte eine neue virtuelle Maschine von meinem Image.
- Verbinde mich mit der Maschine, pulle einmal das git-Repository, starte XYZ und es installiert alles, was ich spezifiziert habe.
Ich weiß, dass es Dinge wie Ansible, Puppet usw. gibt, ich habe allerdings mit keinem davon Erfahrung und denke, dass einiges Overkill wäre.
2 Antworten
Ich wäre für Ansible. Ansible ist nicht wirklich kompliziert und ist für so etwas wie sicherstellen, dass bestimmte Tools installiert sind eigentlich ideal.
Beispiel für ein simples Playbook welches sicher stellt, dass bestimmte Packages installiert sind:
tasks:
- name: install common utils
package: "name={{ item }}"
loop:
- neovim
- tmux
- curl
- atop
Jaein. Also du kannst ansible einfach von deinem normalen Client ausführen, es nutzt ja einfach zb ssh. Das ist eine Sache die Ansible auch praktisch macht, du brauchst eigentlich nichts auf dem Target.
Ansible kann theoretisch aber auch pull, das müsste man dann natürlich auf dem Target einrichten. Da bietet Ansible ein kleines Script welches man zb über cron ausführen kann und ein playbook über gut zieht welches dann auf dem Target ausgeführt wird.
Ich habe mir eine virtuelle Maschine eingerichtet, da sind die 30 Programme, die ich brauche, installiert und konfiguriert. Und die starte ich dann einfach. Und wenn ich irgendwas an die Wand fahre, gehe ich auf den Snapshot zurück.
Wird das Image, wenn die ganze Software schon drin ist, dann nicht ziemlich groß + teuer?
Nö, das Ding ist 70 GB groß. Und was meinst du mit teuer? Es ist ja bei mir, auf meinem System. Passt also locker auf nen Stick oder eine microSD-Karte.
Es ist ja bei mir, auf meinem System.
In dieser Frage geht's um virtuelle Rechner bei Amazon, siehe 2. Satz der Frage. ;-)
Und was meinst du mit teuer?
Der benutzte Speicher einer gesnapshotteten virtuellen Maschine kostet bei Amazon ein bisschen mehr als 5 US-Cent pro Gigabyte und Monat. Das wären bei 70 GB 3,50 $.
Ah, ich habe dieses Konstrukt mit Stern überlesen ;-) Auch gerade eben dachte ich mir noch, wo steht da Amazon im zweiten Satz der Frage? Ah, jetzt.
Es kommt natürlich darauf an, wie man seine virtuelle Maschine konfiguriert. Mir persönlich hat für meine Tests eine 60 GB Platte, 4 GB RAM und zwei Prozessorkerne ausgereicht.
Ich probiere grad eine t3.medium mit 30 GB aus, vielleicht klappt's ja. :-D
Hm, das ist natürlich eine sehr schön einfache Syntax, aber ist Ansible nicht eine Push-Architektur?
Dafür bräuchte ich ja dann einen Extraserver, der dann die Konfiguration auf die neuen Maschinen pusht, anstelle dass sich die neuen Maschinen jeweils von irgendwo ihre Konfiguration holen.