GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So arbeiten Sie mit File and Shell Provisioner in Vagrant

Anbieter sind Tools, mit denen Sie Ihren Arbeitsablauf automatisieren können, wenn Sie eine virtuelle Maschine hochfahren. Landstreicher unterstützen Bereitstellungsprogramme wie File, Shell, Ansible, Puppet und Salt Stack. Sie können jedes dieser Tools verwenden und Ihren Bereitstellungs-Workflow für virtuelle Maschinen automatisieren.

[ Das könnte Ihnen auch gefallen:Erste Schritte mit Vagrant und VirtualBox ]

In diesem Artikel werden zwei Dateien und Shells des Anbieters vorgestellt, die Sie regelmäßig verwenden können, wenn Sie neue virtuelle Maschinen bereitstellen.

So verwenden Sie einen Shell-Provisioner in Vagrant

Schale Provisioner ermöglichen es Ihnen, Shell auszuführen Befehle in Ihrer vagabundierenden Maschine. Um die Shell zu verwenden Provisioner müssen Sie Shell als Argument an vm.provision übergeben Methode.

config.vm.provision "shell"

Es gibt zwei Möglichkeiten, wie Sie shell ausführen können Befehle in Vagrant.

  1. Inline-Skripte
  2. Externe Skripte

Arbeiten mit Inline-Skript in Vagrant

Im inline -Skript übergeben Sie die Shell Befehle in der Vagrantfile . Es gibt viele Möglichkeiten, ein Inline-Skript zu verwenden. Das folgende Beispiel zeigt, wie Sie ein Inline-Skript verwenden. Nachdem Sie den Shell-Provisioner definiert haben, müssen Sie Inline und Befehl als Schlüssel-Wert-Paar übergeben. Fahren Sie fort und ändern Sie die Vagrant-Datei und fügen Sie die obige Zeile hinzu.

config.vm.provision "shell", inline: "echo Welcome to linuxshelltips"

Vor dem Ausführen eines Anbieters Es gibt einen wichtigen Punkt zu beachten. Provisioner wird normalerweise nur ausgeführt, wenn Sie „vagrant up“ ausführen ” zum ersten Mal.

Schauen Sie sich das folgende Bild an, ich habe den Shell-Provisioner zur Vagrant-Datei hinzugefügt und meine virtuelle Maschine gestartet und es sagt mir, dass ich die --provision verwenden soll kennzeichnen, da dies nicht das erste Mal ist, dass ich diese VM starte.

$ vagrant up --provision           # Starting the VM
$ vagrant reload --provision       # Restarting the VM

Sie können auch blockieren verwenden Syntax, die mehr Lesbarkeit bietet. Dies ist dasselbe wie die vorherige einzeilige Definition.

config.vm.provision "shell" do |cmd|
    cmd.inline = "echo Welcome to Linuxshelltips"
end

Wenn Sie mit bash gearbeitet haben, haben Sie vielleicht heredoc verwendet . Ähnlich wie bei Ruby unterstützt auch Heredoc, das Sie in Vagrant-Dateien verwenden und eine Reihe von Bash-Befehlen darauf umleiten können. Hier versuche ich, epel-repository zu installieren und installieren Sie das wget Befehl.

$COMMANDS = <<-'BLOCK'
yum install epel-release -y 
yum install wget -y
BLOCK
        
config.vm.provision "shell", inline: $COMMANDS

Lassen Sie mich erklären, was der obige Code tut. Ich erstelle eine Variable namens $COMMANDS und Speichern von Heredoc in der Variablen. Ich übergebe die $COMMANDS -Variable als Wert für Inline, der die Serie von yum ausführt Befehle, die wir innerhalb des Codeblocks übergeben haben.

Sie können auf dem obigen Screenshot beide epel-repo sehen und wget sind erfolgreich installiert. Sie können auch die Skripte aufrufen, die bereits in der Vagrant-Maschine verfügbar sind. Ich habe ein Testskript namens welcome.sh in vagrant host und um es auszuführen, fügen Sie der Konfigurationsdatei die folgende Syntax hinzu.

config.vm.provision "shell",
    inline: "/usr/bin/bash /home/vagrant/welcome.sh"

Wenn Sie möchten, dass der Provisioner immer dann ausgeführt wird, wenn Sie Ihre virtuelle Maschine starten/neu starten, können Sie die Blockstildefinition verwenden und „immer“ übergeben “ zu „ausführen “. Run akzeptiert zwei Werte „immer “ und „nie “. Bei Einstellung auf „nie ” Der Provisioner wird nicht ausgeführt.

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: "/usr/bin/bash ~/welcome.sh",
    run: "always"
end

Sie können auch --no-provision übergeben Flag mit dem start/reboot-Befehl, um das Laufparameterverhalten zu unterdrücken.

$ vagrant up --no-provision
$ vagrant reload --no-provision

Arbeiten mit externem Skript in Vagrant

Eine Alternative zum Inline-Skript ist das externe Skript. Dies ist ziemlich einfach, erstellen Sie extern ein Shell-Skript und geben Sie den Pfad des Skripts im Shell-Provisioner wie unten angegeben an.

config.vm.provision "shell", path: "/home/karthick/welcome.sh"

Der Landstreicher kopiert das Skript nach /tmp/ Speicherort in der virtuellen Maschine und löst das Skript aus.

So verwenden Sie File Provisioner in Vagrant

Mit File Provisioner können Sie Dateien und Verzeichnisse von Ihrem Host-Rechner auf den Vagrant-Rechner hochladen. File Provisioner akzeptiert zwei Parameter Quellpfade und Zielpfade.

Um eine Datei zu kopieren, fügen Sie die folgende Eigenschaft in Ihrer Vagrantfile mit Quell- und Zielpfad hinzu. Ersetzen Sie Quell- und Zielpfad gemäß Ihrem Standort.

config.vm.provision "file", source: "/home/karthick/vagrant/centos7/script.sh" , destination: "~/script.sh"

Wenn Sie die virtuelle Maschine starten/neu starten, sehen Sie in der Protokolldatei, dass der Provisioner aufgerufen und die Datei auf die virtuelle Maschine kopiert wird.

Um ein Verzeichnis zu kopieren, müssen Sie den Verzeichnispfad in Quelle und Ziel übergeben. Wenn Sie denselben Namen für Ihr Verzeichnis wie in der Quelle wünschen, müssen Sie denselben Zielnamen angeben.

config.vm.provision "file", source: "/home/karthick/vagrant/centos7" , destination: "~/centos7"

Im nächsten Artikel werfen wir einen Blick darauf, wie wir Ansible Provisioner verwenden, um unseren Workflow mithilfe von Playbooks zu automatisieren.


Linux
  1. So arbeiten Sie mit Benutzern und Gruppen in Linux

  2. `^m` und wie wird man es los?

  3. Linux – Wie bringt man Oracle Java 7 dazu, mit Setcap Cap_net_bind_service+ep zu arbeiten?

  4. Der Zweck von .bashrc und wie funktioniert es?

  5. So ändern Sie Datei- und Verzeichnisberechtigungen mit dem Dateimanager

So erstellen Sie neue Benutzer in OpenShift mit htpasswd und OAuth

So arbeiten Sie mit Vordergrund- und Hintergrundprozessen unter Linux

Wie man mit Hardlinks und Softlinks unter Linux arbeitet

So erstellen Sie eine virtuelle Maschine mit Vagrant und VirtualBox

So arbeiten Sie mit Ansible Provisioner in Vagrant

So installieren und verwenden Sie Nu Shell unter Linux