Installation von Mysql-Server in vagrant Bootstrap-Shell-Skript (wie Setup überspringen?)

16

Ich habe versucht, mysql-server auf meiner virtuellen Vagrant Ubuntu 12.04 LTS-Maschine zu installieren. Wenn ich das getan habe, startet das Setup automatisch. Ich kann das in der Vagrant-Ausgabe sehen:

Obwohl dies nicht obligatorisch ist, wird dringend empfohlen, ein Kennwort für den MySQL-Administrator-Benutzer "root" festzulegen. Wenn dieses Feld leer gelassen wird, wird das Kennwort nicht geändert. Neues Kennwort für die MySQL "root" Benutzer

Danach ist der Ausgabetext ± ├⎺ ⎼␊⎻┌▒␌␊ ┌␋␉⎽─┌␋├␊3-0 3.7.9-2┤␉┤┼├┤1 (┤⎽␋┼± ...ziemlich lang und voller grüner und roter Farben. Ich glaube, der Rest der Installation ist abgeschlossen.

Aber ich kann das Fehlen der Installation bestätigen, nachdem:

sudo apt-get install --just-print mysql-server-5.5 
...
The following NEW packages will be installed:
  mysql-server-5.5

Wie kann ich die richtigen Signale über ein Shell-Skript senden, um den MYSQL-Server zu konfigurieren? Oder wenn nicht, wie kann ich den automatischen Start der Konfiguration stoppen oder das Setup nach dem Start abbrechen, während das Paket noch installiert ist?

Sam
quelle
Wenn der Rest der Installation ist abgeschlossen , würde es nicht zulassen , dass Sie wieder installieren. Haben Sie versucht, vor der Installation ein Passwort einzurichten?
Anthon
@Anthon Entschuldigung, ich glaube nicht, dass ich dies in meinem Beitrag gut erklärt habe: Ich kann dies alles manuell konfigurieren, aber mein Ziel ist es, so viel von meinem Setup wie möglich zu automatisieren. Und ich habe danach viele Schritte, die von der Installation von MySQL abhängen (zum Beispiel die Installation von RVM).
Sam
Sofern die Probleme nicht durch ein unsauberes System verursacht werden (versuchen Sie, es in einem sauberen Setup der virtuellen Maschine zu installieren), scheint dies ein Problem mit dem Paket selbst zu sein. In solchen Fällen habe ich manchmal die Installationsdatei gepatcht (keine vollständige Neuerstellung, nur extrahieren / ändern / zusammenfügen) und aus einem lokalen Repository bereitgestellt.
Anthon
@Anthon: / Ich hatte gehofft, eine Lösung zu finden wie: a) Es gibt ein MYSQL-Serverpaket, das den Konfigurationsassistenten nicht automatisch startet, oder b) es gab eine bash-y-Methode, um diese Art von Starts abzufangen ( apt-get install mysql-server | some_trap_cmd >> some.file). Klingt so, als gäbe es so etwas vielleicht nicht?
Sam
Das Problem ist, dass apt-get Skripte innerhalb der Installationsdatei ausführt. Sie werden in diesen keine Falle stecken, es sei denn, Sie patchen die Skripte. Sie können auch einen Blick auf 5.6 mysql werfen und es über das Launchpad installieren. Dies könnte jedoch zu Problemen beim Ziehen aller Abhängigkeiten führen, aber möglicherweise sind die Installationsprobleme weg.
Anthon

Antworten:

29

Sie können das MySQL-Root-Passwort in Ihrer Bootstrap-Datei festlegen, indem Sie debconf-set-selections-Befehle hinzufügen, bevor Sie Ihre apt-get-Installation ausführen:

#!/usr/bin/env bash

debconf-set-selections <<< 'mysql-server mysql-server/root_password password MySuperPassword'
debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password MySuperPassword'
apt-get update
apt-get install -y mysql-server

Ich gehe davon aus, dass dies auf jedem Debian-basierten System funktioniert. Ich benutze es jeden Tag, Box wird vollautomatisch gebaut.

CKaffee
quelle
1
Genial! Ich kannte diesen Befehl nicht
AlvaroAV
1
Ich habe nicht debconf-set-selectionsexistiert. Das hat einwandfrei funktioniert. Vielen Dank!
Sam
3

Vielleicht möchten Sie sich mit Puppet befassen - es eignet sich hervorragend zum automatischen Installieren und Konfigurieren von Software. Es gibt auch ein MySQL-Modul , aber ich habe es nicht ausprobiert.

l0b0
quelle