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.
- Scripts intégrés
- 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.