GNU/Linux >> Znalost Linux >  >> Linux

Automatické nastavení Ansible Lab s Vagrant a Virtualbox v Linuxu

Ansible je automatizační platforma používaná v oblasti orchestrace, správy konfigurací, nasazení, zajišťování atd. Pokud jste začátečník, který se chce naučit ansible nebo někdo, kdo plánuje získat certifikaci ansible, musíte mít nastavení domácí laboratoře, abyste mohli procvičovat ansible . Ruční nastavení domácí laboratoře je časově náročný úkol. Existuje několik automatických řešení, jako je Docker , Vagrant , Cloudová řešení, která lze použít k vybudování ansible laboratoře. V této příručce se naučíme automatický způsob, jak nastavit laboratoř Ansible pomocí Vagrant a VirtualBox v Linuxu.

Vagrant je vynikající nástroj pro rychlé nastavení vašeho vývojového prostředí. Pokud s tuláky začínáte, doporučuji vám podívat se na náš úvod do průvodce tuláky.

  • Výukový program Vagrant – Začínáme s Vagrant v Linuxu

Pro účely této příručky budeme používat Vagrant s VirtualBoxem jako poskytovatelem k vybudování naší ansible laboratoře. Místo VirtualBoxu můžete také použít KVM. Pokud chcete jako poskytovatele používat KVM, přečtěte si níže uvedený článek o tom, jak používat vagrant s KVM.

  • Jak používat Vagrant s poskytovatelem Libvirt KVM

Nastavení Ansible Lab

Předpokladem je, že musíte mít na svém počítači se systémem Linux nainstalovaný Vagrant a Virtualbox. Pokud jste Vagrant ještě nenainstalovali, přečtěte si prosím následující průvodce instalací Vagrantu na různé distribuce Linuxu.

  • Jak nainstalovat Vagrant na Linux

Vybudujeme tříuzlové nastavení laboratoře. Jeden uzel bude fungovat jako uzel master/controller a dva uzly budou fungovat jako spravované uzly. Pro demonstrační účely používám ubuntu/focal64 tulácká krabice.

Zde jsou podrobnosti o nastavení mé laboratoře Ansible.

TYP UZLU NÁZEV UZLU IP ADRESA OS FLAVOR
Řídicí uzel controller.anslab.com 192.168.10.3 ubuntu/focal64
Spravovaný uzel managed1.anslab.com 192.168.10.4 ubuntu/focal64
Spravovaný uzel managed2.anslab.com 192.168.10.5 ubuntu/focal64

Zde nastavuji pouze tři uzly pro svou laboratoř, ale při nastavování vlastní laboratoře můžete přidat libovolný počet spravovaných uzlů.

Klonovat úložiště projektu

Hostil jsem všechny požadované soubory k nastavení laboratoře Ansible v mém úložišti GitHub. Spuštěním následujícího příkazu lokálně naklonujte úložiště.

Klon $ git --rekurzivní https://github.com/KarthickSudhakar/Ansible_lab_vagrant_virtualbox.git

Pojďme se pohybovat v adresáři projektu, abychom viděli, jaké soubory jsou přítomny.

Dovolte mi, abych vám stručně představil každý soubor.

1. Vagrantfile

V tomto souboru jsou uloženy všechny konfigurace související s VM. Zde je obsah tohoto souboru.

# -*- režim:ruby ​​-*-# vi:set ft=ruby :Vagrant.configure("2") do |config| config.vm.provider "virtualbox" do |rs| rs.memory =2048 rs.cpus =2 end # Nebude kontrolovat aktualizace boxů při každém spuštění. config.vm.box_check_update =false # Hlavní uzel, kam bude nainstalován ansible config.vm.define "controller" do |controller| controller.vm.box ="ubuntu/focal64" controller.vm.hostname ="controller.anslab.com" controller.vm.network "private_network", ip:"192.168.10.3" controller.vm.provision "shell", cesta :"bootstrap.sh" controller.vm.provision "file", zdroj:"key_gen.sh", cíl:"/home/vagrant/" end # Spravovaný uzel 1. config.vm.define "m1" do |m1| m1.vm.box ="ubuntu/focal64" m1.vm.hostname ="managed1.anslab.com" m1.vm.network "private_network", ip:"192.168.10.4" m1.vm.provision "shell", cesta :"bootstrap.sh" end # Spravovaný uzel 2. config.vm.define "m2" do |m2| m2.vm.box ="ubuntu/focal64" m2.vm.hostname ="managed2.anslab.com" m2.vm.network "private_network", ip:"192.168.10.5" m2.vm.provision "shell", cesta :endend "bootstrap.sh"

2. bootstrap.sh

Toto je skript shellu, který je zodpovědný za nastavení ansible v uzlu řadiče, instalaci balíčků, úpravu systémových konfigurací.

Obsah tohoto souboru je uveden níže:

#!/usr/bin/env bash# vagrant ve výchozím nastavení vytváří svůj vlastní klíčový pár pro všechny počítače. Autentizace založená na hesle bude ve výchozím nastavení zakázána a bude povolena, aby bylo možné provést ověření založené na hesle. sudo sed -i 's/Ověření heslem ne/Ověření heslem ano/' /etc/ssh/sshd_configsudo systemctl restart sshd# Potlačení zprávy banneru při každém připojení na vagrant box.touch /home/vagrant/.hushlogin# Aktualizace souboru hosts pro všechny 3 uzly s IP uvedenou v vagrantfile# 192.168.10.3 controller.ansible.com controller# 192.168.10.4 managed1.ansible.com managed1# 192.168.10.5 managed2.ansible.com managed2echo -e "192.168.10.3 controller.anslab.com controller\n192.168.10.4 managed1.anslab.com managed1\n192.168.10.5 managed2.anslab.com managed2">> /etc managed2">> /hosts# Instalace potřebných balíčků sudo apt update &&sudo apt -y install curl wget net-tools iputils-ping python3-pip sshpass# Instalovat ansible pomocí pip pouze v controlleru nodeif [[ $(hostname) ="controller" ]]; poté sudo pip3 nainstalujte ansiblefi

3. key_gen.sh

Tento skript by se měl spustit ručně po dokončení všech tří sestavení virtuálního počítače. Tento skript se postará o vygenerování páru klíčů ssh a jeho distribuci mezi všechny tři uzly. Spustí také ukázkový ansible ad-hoc příkaz pro ověření.

Obsah tohoto souboru je uveden níže:

#!/usr/bin/env bash# TENTO SKRIPT VYTVOŘÍ KLÍČOVÝ PÁR SSH A DISTRIBUUJE PRO VŠECHNY NODESssh-keygen -b 2048 -t rsa -f /home/vagrant/.ssh/id_rsa -q -N ""# SMYČKA PROSTŘEDNICTVÍM A DISTRIBUCE KLÍČE pro val v kontroleru managed1 managed2; do echo "-------------------- KOPÍROVÁNÍ KLÍČE DO UZLU ${val^^} ------------------ -------------" sshpass -p 'vagrant' ssh-copy-id -o "StrictHostKeyChecking=no" [chráněno e-mailem]$val done# VYTVOŘIT SOUBOR INVENTURYPROJECT_DIRECTORY="/home/vagrant /ansible_project/"mkdir -p $PROJECT_DIRECTORYcd $PROJECT_DIRECTORY# Vytvoření souboru inventáře pro všechny 3 uzly pro spuštění nějakého adhoc příkazu.echo -e "controller\n\n[ubuntu1]\nmanaged1\n\n[ubuntu2]\nmanaged2"> inventerecho -e "[výchozí]\ninventory =inventář"> ansible.cfgecho -e "-------------------- SPOUŠTĚNÍ PŘÍKAZU ANSBILE ADHOC - UPTIME ---- --------------------------"echo# spuštění adhoc příkazu, aby se zjistilo, zda je vše možné zpracovat all -i inventář -m "shell" -a " uptime"echo

Všechny tyto tři soubory jsou hostovány v mém úložišti GitHub. Neváhejte a přispějte a vylepšete to.

Porozumění konfiguraci Vagrantfile

Před vytvořením laboratoře Ansible musíte porozumět konfiguracím uvnitř skriptů Vagrantfile a shellu.

1. Alokace paměti a Vcore

Pro všechny tři vagrant boxy musíme nastavit paměť a hodnotu CPU. Zde je paměť nastavena na 2 GB a CPU je nastaveno na 2 . Pokud si přejete zvýšit nebo snížit limit, jednoduše upravte zvýrazněné parametry ve Vagrantfile.

2. Příchuť OS

Všechny tři uzly (řadič a spravované) používají obraz Ubuntu 20.04 LTS. Takže když spustíte "vagrant up " command vagrant vyhledá následující parametr a pokusí se stáhnout obrázek, pokud není lokálně dostupný.

3. Nastavení sítě

Ve výchozím nastavení vagrant používá NAT na prvním rozhraní (adaptér1). Vagrant používá k připojení k virtuálnímu počítači přesměrování portů přes NAT. Zde nastavujeme název hostitele a statické IP adresy pro všechny tři virtuální počítače v privátní síti.

Bude vytvořeno samostatné rozhraní (Adaptér2) a bude mu přidělena statická IP adresa. VM, který je součástí privátní sítě, může mezi sebou komunikovat.

V prostředí multi-vm tulák automaticky opraví kolizi portů.

==> m2:Opravená kolize portu pro 22 => 2222. Nyní na portu 2201.  ==> m2:Vymazání všech dříve nastavených síťových rozhraní...==> m2:Příprava síťových rozhraní na základě konfigurace... m2:Adaptér 1:nat m2:Adaptér 2:hostonly  ==> m2:Přesměrování portů... m2:22 (host) => 2201 (hostitel) (adaptér 1)==> m2:Spouštění přizpůsobení virtuálního počítače před spuštěním...==> m2:Spouštění virtuálního počítače. ..==> m2:Čekání na spuštění počítače. To může trvat několik minut... m2:Adresa SSH:127.0.0.1:2201

4. Uživatelské jméno a komunikace SSH

Existuje výchozí uživatel s názvem „vagrant“ s heslem „vagrant“. Uživatel Vagrant má ve výchozím nastavení nakonfigurované oprávnění sudo bez hesla ve vm.

Ve výchozím nastavení je ověřování na základě hesla pro virtuální počítač zakázáno. Vagrant vytvoří pár klíčů ssh a použije soukromý klíč k připojení k vm, když spustíte "vagrant ssh "příkaz."

$ vagrant ssh ovladač 
$ tulák ssh m1
$ tulák ssh m2

Ověřování na základě hesla je povoleno prostřednictvím bootstrap.sh takže se můžete k uzlu připojit pomocí IP adresy a ověřování na základě hesla namísto ověřování na základě klíče.

5. Bootstrap Script

Skript bootstrap.sh je zodpovědný za

  • Povolení ověřování na základě hesla.
  • Vytvořte .huhlogin soubor k potlačení výchozí zprávy banneru.
  • Přidejte položky hostitele do /etc/hosts soubor pro všechny tři uzly.
  • Instalace požadovaných balíčků.
  • Instalace ansible prostřednictvím správce balíčků python (pip) pouze na uzel řadiče.

Používám shell Provider, kde bude bootstrap.sh zkopírován do /tmp/ umístění ve všech třech virtuálních počítačích a skript bude spuštěn s oprávněním root.

Pozor: Pokud vytváříte laboratoř založenou na RHEL, měli byste upravit instalační příkaz balíčku z bootstrap.sh soubor podle dnf nebo rpm . Vše ostatní bude podobné ve všech distribucích.

6. Vygenerovat pár klíčů

Ansible používá pár klíčů SSH ke komunikaci se spravovanými uzly a ke spuštění úlohy. Nové klíče by měly být generovány z řídicího uzlu a sdíleny se všemi spravovanými uzly, aby ansible mohl komunikovat se spravovanými uzly bez nutnosti pokaždé vyžadovat hesla.

Skript key_gen.sh se postará o vytvoření ssh klíčů a distribuci klíčů do všech uzlů. Skript také vytvoří adresář projektu s ansible.cfg spisový a inventární spis. Adhoc příkaz bude spuštěn jako součást skriptu pro ověření připojení.

Pozor: Tento skript musí být spuštěn ručně z uzlu řadiče, jakmile budou zřízeny všechny tři virtuální počítače.

Sestavení Ansible Lab Setup

Přejděte do adresáře projektu a spusťte příkaz "vagrant up" a o zbytek se postará vagrant a bootstrap skript.

$ cd Ansible_lab_vagrant_virtualbox
$ vagrant up

Ukázkový výstup:

Přivedení „řadiče“ stroje k poskytovateli „virtualbox“… 
Přinášíme stroj 'm1' poskytovateli 'virtualboxu'…
Přinášíme stroj 'm2' poskytovateli 'virtualboxu'…
………

Skript po instalaci

Jakmile budou zřízeny všechny tři virtuální počítače, přihlaste se k uzlu řadiče a spusťte soubor /home/vagrant/key_gen.sh k vytvoření párů klíčů ssh a ověření spuštěním příkazu ansible ad-hoc.

$ vagrant ssh ovladač 
$ cd /home/vagrant/
$ bash key_gen.sh

Příkazy Vagrant pro správu VM

Následující příkazy vám pomohou udržovat životní cyklus tuláků.

Chcete-li zahájit vytváření virtuálních počítačů, spusťte následující příkaz z adresáře, kde se nachází soubor vagrantfile.

$ vagrant up

Pokud chcete vyvolat pouze jeden uzel, můžete přidat název hostitele do pole "vagrant up "příkaz."

$ vagrant up ovladač

Chcete-li zkontrolovat stav počítače, spusťte následující příkaz.

$ stav tuláků Aktuální stavy stroje:běžící ovladač (virtualbox)m1 běží (virtualbox)m2 běží (virtualbox)

Můžete také použít následující příkaz, který poskytne další informace o virtuálním počítači.

$ vagrant global-status --prunename poskytovatel státního adresáře ------------------------------------ -------------------------------------------------- -------------------------------6095cc7 ovladač virtualbox běží /home/karthick/Karthick_Root/Work/Vagrant/Lab/Ansible_lab_vagrant_virtualbox cf2e302 m1 virtualbox běží /home/karthick/Karthick_Root/Work/Vagrant/Lab/Ansible_lab_vagrant_virtualbox af10f7d m2 virtualbox běží /home/karthick/Karthick_Root/Work/Vagrant/Lab/Ansible_lab_vagrant_virtualbox 

Chcete-li se připojit k virtuálnímu počítači, můžete spustit "vagrant ssh ". Musíte předat název vm, jinak vyvolá následující chybu.

$ tulák ssh 
Tento příkaz vyžaduje konkrétní název virtuálního počítače pro cíl v prostředí s více virtuálními počítači.

Pro ssh do virtuálního počítače m1 by příkaz byl:

$ vagrant ssh m1

Nebo,

$ vagrant ssh cf2e302

Pokud je povoleno ověřování na základě hesla, můžete se také připojit pomocí uživatelského jména a hesla.

$ ssh [e-mail chráněný] 
Heslo uživatele [email protected]:
[e-mail chráněn]:~$

Chcete-li zastavit konkrétní virtuální počítač, spusťte příkaz halt s názvem vm.

$ ovladač tulákového zastavení

Chcete-li zastavit všechny virtuální počítače, spusťte následující příkaz.

$ tulácká zastávka 
==> m2:Pokus o elegantní vypnutí VM…
==> m1:Pokus o elegantní vypnutí VM…
==> controller:Pokus o elegantní vypnutí VM…

Chcete-li zničit všechny vm včetně jejich disku, spusťte následující příkaz.

$ tulák zničit -f 
==> m2:Ničení VM a souvisejících disků…
==> m1:Ničení VM a přidružených disků…
==> controller:Destroying VM a souvisejících disků…

Závěr

V tomto článku jsem ukázal automatizovaný způsob, jak nastavit ansible lab pomocí Vagrant a VirtualBox. Laboratoř je vytvořena pomocí zásobníku Ubuntu 20.04 LTS.

Pokud plánujete absolvovat ansible certifikaci a chcete laboratoř na procvičování, doporučuji vám upravit soubor vagrantfile ukazující název krabice na příchuť RHEL a nahradit apt příkaz k příslušnému dnf /yum příkaz v bootstrap.sh soubor.

Další informace:

  • Ansible Inventory and Configuration Files

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

  2. Jak nainstalovat a otestovat Ansible na Linuxu

  3. Zaregistrujte si Red Hat Enterprise Linux a připojte předplatné s Ansible

  1. Upravujte text v Linuxu pomocí KWrite a Kate

  2. Vyzkoušejte Linux na jakémkoli operačním systému s VirtualBoxem

  3. Chyba na Vagrant Up na Linuxu

  1. Přizpůsobení mého linuxového terminálu pomocí tmux a Git

  2. Správa procesů na Linuxu pomocí kill and killall

  3. Jak nainstalovat Vagrant a používat jej s VirtualBoxem na Ubuntu 20.04