GNU/Linux >> Znalost Linux >  >> Linux

Jak pracovat s File and Shell Provisioner ve Vagrant

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.

  1. Vložené skripty
  2. 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.


Linux
  1. Jak používám Vagrant s libvirt

  2. Jak programovat s Bash:Syntaxe a nástroje

  3. Jak pracovat s uživateli a skupinami v Linuxu

  1. Účel .bashrc a jak to funguje?

  2. Jak vytvořit dočasný soubor ve skriptu Shell?

  3. Jak změnit oprávnění k souborům a adresářům pomocí Správce souborů

  1. `^m` A jak se toho zbavit?

  2. Linux – Jak zajistit, aby Oracle Java 7 fungoval se Setcap Cap_net_bind_service+ep?

  3. Jak pracovat s CentOS Web Panel File Manager