GNU/Linux >> Tutoriels Linux >  >> Linux

Comment travailler avec File and Shell Provisioner dans Vagrant

Provisionneurs sont des outils qui vous permettent d'automatiser votre flux de travail lorsque vous démarrez une machine virtuelle. Vagabond prend en charge les approvisionneurs tels que file, shell, ansible, puppet et salt stack. Vous pouvez utiliser n'importe lequel de ces outils et automatiser le workflow de déploiement de votre machine virtuelle.

[ Vous pourriez également aimer :Premiers pas avec Vagrant et VirtualBox ]

Cet article présente deux des fichiers et shell de l'approvisionneur que vous pouvez utiliser régulièrement lorsque vous déployez de nouvelles machines virtuelles.

Comment utiliser un approvisionneur Shell dans Vagrant

Coquille les fournisseurs vous permettent d'exécuter shell commandes dans votre machine vagabonde. Pour utiliser shell provisioner vous devez passer shell comme argument à vm.provision méthode.

config.vm.provision "shell"

Il existe deux façons d'exécuter shell commandes en vagabond.

  1. Scripts intégrés
  2. Scripts externes

Comment travailler avec un script en ligne dans Vagrant

Dans le inline script, vous passerez le shell commandes à l'intérieur du Vagrantfile . Il existe de nombreuses façons d'utiliser un script en ligne. L'exemple ci-dessous montre comment utiliser un script en ligne. Après avoir défini le fournisseur de shell, vous devez transmettre inline et command en tant que paire clé-valeur. Allez-y et modifiez le Vagrantfile et ajoutez la ligne ci-dessus.

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

Avant d'exécuter un approvisionneur il y a un point important à noter. L'approvisionneur ne s'exécute normalement que lorsque vous exécutez "vagrant up ” pour la première fois.

Jetez un oeil à l'image ci-dessous, j'ai ajouté le fournisseur de shell au Vagrantfile et démarré ma machine virtuelle et il me dit d'utiliser le --provision flag car ce n'est pas la première fois que je démarre cette VM.

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

Vous pouvez également utiliser bloquer syntaxe qui offre plus de lisibilité. C'est la même chose que la précédente définition sur une ligne.

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

Si vous avez travaillé avec bash, vous avez peut-être utilisé heredoc . Similaire à ce Ruby prend également en charge Heredoc que vous pouvez utiliser dans des fichiers vagabonds et y rediriger une série de commandes bash. Ici, j'essaie d'installer epel-repository et installez le wget commande.

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

Laissez-moi vous expliquer ce que fait le code ci-dessus. Je crée une variable appelée $COMMANDS et stocker heredoc dans la variable. Je passe les $COMMANDS variable comme valeur à inline qui exécutera la série de yum commandes que nous avons passées à l'intérieur du bloc de code.

Vous pouvez voir sur la capture d'écran ci-dessus à la fois epel-repo et wget sont installés avec succès. Vous pouvez également appeler les scripts déjà disponibles dans la machine vagabonde. J'ai un script de test nommé welcome.sh dans vagrant host et pour l'exécuter, ajoutez la syntaxe suivante au fichier de configuration.

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

Si vous souhaitez que l'approvisionneur s'exécute chaque fois que vous démarrez/redémarrez votre machine virtuelle, vous pouvez utiliser la définition de style de bloc et passer "toujours " à " exécuter ”. Run accepte deux valeurs "toujours " et " jamais ”. Lorsqu'il est défini sur "jamais ” l'approvisionneur ne fonctionnera pas.

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

Vous pouvez également passer --no-provision flag avec la commande start/reboot pour supprimer le comportement du paramètre d'exécution.

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

Comment travailler avec un script externe dans Vagrant

Une option alternative au script en ligne est le script externe. C'est assez simple, créez un script shell en externe et fournissez le chemin du script dans le fournisseur de shell comme ci-dessous.

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

Le vagabond copiera le script dans /tmp/ emplacement dans la machine virtuelle et déclenchera le script.

Comment utiliser File Provisioner dans Vagrant

Le fournisseur de fichiers vous permet de télécharger des fichiers et des répertoires sur la machine vagabonde à partir de votre machine hôte. Le fournisseur de fichiers accepte deux chemins de source de paramètres et des chemins de destination.

Pour copier un fichier, ajoutez la propriété suivante dans votre Vagrantfile avec le chemin source et destination. Remplacez le chemin source et le chemin de destination en fonction de votre emplacement.

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

Si vous démarrez/redémarrez la machine virtuelle, vous verrez dans le fichier journal que le fournisseur est appelé et le fichier est copié sur la machine virtuelle.

Pour copier un répertoire, vous devez passer le chemin du répertoire dans la source et la destination. Si vous voulez le même nom pour votre répertoire que dans la source, vous devez fournir le même nom de destination.

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

Dans le prochain article, nous verrons comment approvisionner ansible pour automatiser notre flux de travail à l'aide de playbooks.


Linux
  1. Comment j'utilise Vagrant avec libvirt

  2. Comment programmer avec Bash :syntaxe et outils

  3. Comment travailler avec des utilisateurs et des groupes sous Linux

  4. Comment créer un fichier temporaire en script shell ?

  5. Comment créer et monter un système de fichiers Btrfs (expliqué avec des exemples)

Comment créer de nouveaux utilisateurs dans OpenShift avec htpasswd et OAuth

Comment travailler avec le processus de premier plan et d'arrière-plan sous Linux

Comment travailler avec des liens durs et des liens souples sous Linux

Comment créer une machine virtuelle avec Vagrant et VirtualBox

Comment travailler avec Ansible Provisioner dans Vagrant

Comment installer et utiliser Nu Shell sous Linux