Poskytovatelé jsou nástroje, které vám umožňují automatizovat váš pracovní postup při spouštění virtuálního počítače. Vagrant podpora provizorů jako file, shell, ansible, puppet a salt stack. Můžete použít kterýkoli z těchto nástrojů a automatizovat pracovní postup nasazení virtuálního počítače.
[ Také by se vám mohlo líbit:Začínáme s Vagrant a VirtualBox ]
Tento článek obsahuje dva soubory a prostředí poskytovatele, které můžete pravidelně používat při nasazování nových virtuálních počítačů.
Jak používat Shell Provisioner ve Vagrant
Skořápka provizory vám umožňují spouštět shell příkazy ve vašem tulákovém stroji. Chcete-li použít shell Provider musíte předat shell jako argument pro vm.provision metoda.
config.vm.provision "shell"
shell můžete spustit dvěma způsoby příkazy v vagrant.
- Vložené skripty
- Externí skripty
Jak pracovat s vloženým skriptem ve Vagrant
V inline skript, předáte shell příkazy uvnitř Vagrantfile . Existuje mnoho způsobů, jak použít vložený skript. Níže uvedený příklad ukazuje, jak používat vložený skript. Po definování poskytovatele shellu musíte předat inline a příkaz jako pár klíč-hodnota. Pokračujte a upravte soubor Vagrantfile a přidejte výše uvedený řádek.
config.vm.provision "shell", inline: "echo Welcome to linuxshelltips"
Před spuštěním jakéhokoli poskytovatele je třeba poznamenat důležitý bod. Provisioner se normálně spustí pouze při spuštění „vagrant up ” poprvé.
Podívejte se na obrázek níže, přidal jsem do souboru Vagrantfile provizorní shell a spustil jsem svůj virtuální počítač a říká mi, že mám použít --provision
flag, protože to není poprvé, co zavádím tento virtuální počítač.
$ vagrant up --provision # Starting the VM $ vagrant reload --provision # Restarting the VM
Můžete také použít blok syntaxe, která nabízí lepší čitelnost. Toto je stejné jako předchozí jednořádková definice.
config.vm.provision "shell" do |cmd| cmd.inline = "echo Welcome to Linuxshelltips" end
Pokud jste pracovali s bash, možná jste použili heredoc . Podobné jako Ruby podporuje také Heredoc, který můžete použít v souborech vagrant a přesměrovat na něj řadu bash příkazů. Zde se pokouším nainstalovat epel-repository a nainstalujte wget příkaz.
$COMMANDS = <<-'BLOCK' yum install epel-release -y yum install wget -y BLOCK config.vm.provision "shell", inline: $COMMANDS
Dovolte mi vysvětlit, co dělá výše uvedený kód. Vytvářím proměnnou s názvem $COMMANDS
a uložení heredoc v proměnné. Předávám $COMMANDS
proměnnou jako hodnotu, která se má vložit do řádku, která spustí sérii yum příkazy, které jsme předali uvnitř bloku kódu.
Na výše uvedeném snímku obrazovky můžete vidět obě epel-repo a wget jsou úspěšně nainstalovány. Můžete také volat skripty, které jsou již dostupné ve vagrantském stroji. Mám testovací skript s názvem welcome.sh v hostiteli vagrant a pro jeho spuštění přidejte do konfiguračního souboru následující syntaxi.
config.vm.provision "shell", inline: "/usr/bin/bash /home/vagrant/welcome.sh"
Pokud chcete, aby se poskytovatel spustil při každém spuštění/rebootování virtuálního počítače, můžete použít definici stylu bloku a předat „vždy “ na „spustit “. Spustit přijímá dvě hodnoty „vždy “ a „nikdy “. Při nastavení na „nikdy ” zřízení se nespustí.
Vagrant.configure("2") do |config| config.vm.provision "shell", inline: "/usr/bin/bash ~/welcome.sh", run: "always" end
Můžete také předat --no-provision
příznak s příkazem start/reboot k potlačení chování parametru run.
$ vagrant up --no-provision $ vagrant reload --no-provision
Jak pracovat s externím skriptem ve Vagrant
Alternativní možností k inline skriptu je externí skript. To je docela jednoduché, vytvořte skript shellu externě a poskytněte cestu skriptu v poskytovateli shellu, jak je uvedeno níže.
config.vm.provision "shell", path: "/home/karthick/welcome.sh"
Tulák zkopíruje skript do /tmp/ umístění ve virtuálním počítači a spustí skript.
Jak používat File Provisioner ve Vagrant
Poskytování souborů vám umožňuje nahrávat soubory jako adresáře do počítače tulák z vašeho hostitelského počítače. Poskytování souborů přijímá dvě cesty ke zdroji parametrů a cílové cesty.
Chcete-li zkopírovat soubor, přidejte do souboru Vagrantfile následující vlastnost se zdrojovou a cílovou cestou. Nahraďte zdrojovou a cílovou cestu podle vaší polohy.
config.vm.provision "file", source: "/home/karthick/vagrant/centos7/script.sh" , destination: "~/script.sh"
Pokud spustíte/restartujete virtuální počítač, uvidíte v protokolu, že se nazývá zřizování a soubor se zkopíruje do virtuálního počítače.
Chcete-li zkopírovat adresář, musíte předat cestu k adresáři ve zdroji a cíli. Pokud chcete pro svůj adresář stejný název jako ve zdroji, musíte zadat stejný název cíle.
config.vm.provision "file", source: "/home/karthick/vagrant/centos7" , destination: "~/centos7"
V příštím článku se podíváme na to, jak ansible Provider automatizovat naše pracovní postupy pomocí příruček.