Im vorherigen Artikel haben wir gesehen, was Provisioner ist und wie man mit Shell und File Provisioner arbeitet. In diesem Artikel werden wir sehen, wie man einen Ansible-Bereitsteller verwendet, um den Vagrant-Workflow zu automatisieren. Hier erstellen wir ein Playbook und verwenden Sie das Playbook, um Ansible Play gegen die vagabundierende Gastmaschine auszuführen.
Das Folgende ist der Ausschnitt aus dem Playbook Ich werde in diesem Artikel zur Demonstration verwenden. Es gibt nur ein Spiel und es kümmert sich um die Installation von Paketen mit apt Modul. Erstellen Sie eine neue .yml
oder .yaml
Datei und kopieren Sie das Snippet.
--- - hosts: all become: yes tasks: - name: Install 4 packages apt: pkg: - net-tools - neofetch - cowsay - htop update_cache: yes
Arbeiten mit Ansible Remote Provisioner in Vagrant
Zum Ausführen von Playbooks , sollte ansible in der virtuellen Gastmaschine „vagrant“ installiert werden. Sie können eine Shell verwenden Provisioner zum Installieren von Ansible. Beziehen Sie sich auf den folgenden Code, es gibt einen Abschnitt für Shell-Provisioner und ich verwende eine Reihe von apt Paket-Manager-Befehle, um ein Ansible-Repository einzurichten und zu installieren.
agrant.configure("2") do |config| config.vm.box = "ubuntu/focal64" config.vm.hostname = "ansible-provisioner" config.vm.network "public_network", bridge: "Intel(R) Dual Band Wireless-AC 7265", ip: "192.168.1.100" config.vm.provider "virtualbox" do |vbox| vbox.memory = "2048" vbox.cpus = "2" end config.vm.provision "shell", inline: <<-BLOCK sudo apt-add-repository ppa:ansible/ansible -y sudo apt update sudo apt install ansible -y ansible --version BLOCK end
Erstellen Sie ein neues Projektverzeichnis und führen Sie vagrant init aus Befehl.
$ mkdir ansible_provisioner $ cd ansible_provisioner $ vagrant init -m
Jetzt können Sie je nach Status Ihrer virtuellen Maschine (läuft oder angehalten) den folgenden Befehl ausführen. Wenn dies das erste Mal ist, dann vagrant up wird die Arbeit erledigen.
$ vagrant up ==> Running VM for first time $ vagrant reload --provision ==> If VM is already provisioned and running $ vagrant up --provision ==> VM is already provisioned and not running
Während des Startvorgangs der virtuellen Maschine können Sie anhand der Protokolle sehen, dass ansible installiert wird.
Jetzt können Sie das Playbook verwenden . Ich werde dieselbe Konfigurationsdatei ändern und einen ansiblen Remote-Provisioner hinzufügen. Unten ist die Syntax. Der Playbook-Pfad (absolut oder relativ) muss wie unten gezeigt angegeben werden.
config.vm.provision "ansible" do |ans| ans.playbook = "my_playbook.yml" # Playbook in same folder as Vagranfile #ans.playbook = "/home/karthick/vagrant/ansible_provisioner/my_playbook.yml"
Aus der folgenden Ausgabe können Sie sehen, dass mein Spiel erfolgreich ausgeführt wurde.
Verwendung von Ansible Local Provisioner in Vagrant
Dies ist eine weitere Methode zum Einrichten von Ansible in Ihrer vagabundierenden Gast-VM. Wenn Sie einen lokalen Anbieter verwenden, kümmert sich vagrant automatisch um die Installation des Ansible für Sie. Die einzige Eingabe, die Sie machen müssen, ist, durch welche Methode Vagrant Ansible einrichten soll.
Unten ist die Syntax für die lokal bereitgestellte.
config.vm.provision "ansible_local" do |ans| ans.playbook = "my_playbook.yml"
Es gibt drei verschiedene Modi.
- Standard – Ansible mit dem Distributions-basierten Paketmanager installieren.
- PIP – Ansible mit PIP installieren.
- PIP-Argumente – Installation mit PIP-Argumenten.
Standardmäßig versucht der Vagrant, aus dem Repository zu installieren. Wenn Sie über PIP installieren möchten Sie können die Syntax wie folgt einstellen. Wenn Sie PIP verwenden, prüft der Vagrant zuerst, ob PIP auf dem Gastcomputer verfügbar ist, und versucht, es zu installieren. Sobald PIP verfügbar ist, wird es PIP verwenden, um ein Ansible-Paket von PyPI herunterzuladen und zu installieren.
config.vm.provision "ansible_local" do |ans| ans.playbook = "my_playbook.yml" ans.install_mode = "pip"
Das war es für diesen Artikel. Im nächsten Artikel werden wir sehen, wie man benutzerdefinierte Boxen in vagrant erstellt.