2015-04-01 1 views

Antwort

7

Basisvorsorge für Dinge wie diese einfach ohne Chef getan werden kann/Puppe/Ansible und stattdessen mit der Shell.

Die Vagrant docs decken diese grundlegende Bereitstellung ziemlich gut für ihr Beispiel der Download der Apache von einem boosterrap.sh.

Ebenso könnten Sie die gleichen Schritte in der Bearbeitung Ihrer Vagrantfile folgen einer bootstrap.sh Datei aufzurufen, wenn bereitgestellt werden:

Vagrant.configure("2") do |config| 
    ... 
    config.vm.provision :shell, path: "bootstrap.sh" 
    ... 
end 

Sie dann eine bootstrap.sh-Datei im selben Verzeichnis wie die Vagrantfile schaffen könnte, die enthalten würde so etwas wie:

#!/bin/bash 
# Adds a crontab entry to curl google.com every hour on the 5th minute 

# Cron expression 
cron="5 * * * * curl http://www.google.com" 
    # │ │ │ │ │ 
    # │ │ │ │ │ 
    # │ │ │ │ └───── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0) 
    # │ │ │ └────────── month (1 - 12) 
    # │ │ └─────────────── day of month (1 - 31) 
    # │ └──────────────────── hour (0 - 23) 
    # └───────────────────────── min (0 - 59) 

# Escape all the asterisks so we can grep for it 
cron_escaped=$(echo "$cron" | sed s/\*/\\\\*/g) 

# Check if cron job already in crontab 
crontab -l | grep "${cron_escaped}" 
if [[ $? -eq 0 ]] ; 
    then 
    echo "Crontab already exists. Exiting..." 
    exit 
    else 
    # Write out current crontab into temp file 
    crontab -l > mycron 
    # Append new cron into cron file 
    echo "$cron" >> mycron 
    # Install new cron file 
    crontab mycron 
    # Remove temp file 
    rm mycron 
fi 

standardmäßig Vagrant Versorger als root ausführen, so wird dies einen cron-Job auf die crontab des root-Benutzers anhängen vorausgesetzt es nicht bereits vorhanden sind. Wenn Sie es mit dem Vagabunden Benutzer-crontab hinzufügen möchten, dann müssen Sie die provisioner mit dem privileged-Flag auf false auszuführen:

config.vm.provision :shell, path: "bootstrap.sh", privileged: false 
+0

Eigentlich denke ich, das dies als root cron als Provisioning-Skripte setzen werden, werden ausgeführt als root, wenn das privilegierte Flag nicht auf false gesetzt ist. –

+0

Danke @BrianMorton guten Platz, ich habe die Antwort mit dem – ydaetskcoR

+0

aktualisiert, ist es richtig, dass der Var-Name ist cron_escaped, aber in der Grep wir mit $ {cronescaped} überprüfen, also ohne den Unterstrich? Vielen Dank – Notflip