Tento průvodce vás krok za krokem provede kroky k instalaci a konfiguraci Ansible v Linuxu. Také vysvětluje, jak nastavit Ansible homelab v Linuxu, abyste se naučili základy ansible.
1. Úvod
Ansible je nástroj pro automatizaci IT, jehož prostřednictvím můžete automatizovat „N“ počet úloh ve vašem softwarovém prostředí. Chcete-li vědět, co je Ansible a jeho funkce, podívejte se na naše "Úvod do Ansible" průvodce.
Ansible je samozřejmě navržen pro správu konfigurace ve velkém měřítku. Pokud je vaším cílem učit se a rychle znovu vytvořit své prostředí, pak jste na správné cestě!
Ansible je bez agenta architektura. To znamená - na spravovaných uzlech neběží žádní příslušní agenti/procesy.
Jak jsem již zmínil v úvodním článku Ansile, v ansible existují dva typy uzlů.
- Uzel Master/Controller - Server/pracovní stanice, na které bude nainstalován ansible. Z tohoto uzlu budete spouštět všechny ansible playbooky a ansible příkazy.
- Spravované uzly - Seznam hostitelů, kteří budou spravováni pomocí ansible.
Všechny spravované uzly nemusí být spuštěny se stejnou distribuční verzí nebo typem. Jako spravované uzly můžete mít různé varianty Linuxu.
Komunikace mezi kontrolérem a spravovanými uzly bude probíhat pomocí ověření pomocí klíče ssh .
Tato praktická příručka vás naučí, jak nastavit laboratoř Ansible v distribucích Linuxu.
Poznámka:
- Nemůžete používat okna jako uzel ovladače.
- Je možné nakonfigurovat více uzlů ovladače.
Než začnu s Ansible, dovolte mi ukázat vám obrazovou reprezentaci mého nastavení domácí laboratoře Ansible.
2. Architektonický diagram pro 3uzlovou ansible lab
Následující grafická ilustrace vám pěkně názorně znázorňuje, jak bude laboratoř vypadat.
Pro demonstrační účely nastavuji uzel Controller na Ubuntu 20.04 a 2 spravované uzly na CentOS 8 a Ubuntu 21.04.
3. Nainstalujte a nakonfigurujte Ansible v Linuxu
Nejprve uvidíme, jak nastavit Ansible spravovaný uzel v Linuxu.
3.1. Nainstalujte Ansible v Linuxu
Protože Ansible je napsán v Pythonu, váš počítač s Linuxem by měl mít nainstalovaný python, aby ansible fungoval.
Naštěstí jsou všechny distribuce Linuxu dodávány s předinstalovaným Pythonem. Ansible podporuje jak Python 2.7, tak Python 3.5 a vyšší.
Chcete-li zkontrolovat, jaká verze pythonu je na vašem počítači nainstalována, můžete použít následující příkazy. Výstup se může lišit v závislosti na tom, jak je python nastaven ve vaší distribuci.
$ which python python2 python3 /usr/bin/python2 /usr/bin/python3
Zkontrolujte verzi Pythonu:
$ python2 --version Python 2.7.18rc1
$ python3 --version Python 3.8.5
$ compgen -c python | grep -P '^python..\d' python3.8 python3.8-config python2.7
Ansible v Linuxu můžete nainstalovat dvěma způsoby.
- Použití správce balíčků operačního systému
- Pomocí PIP - Správce balíčků Pythonu
3.1.1. Nainstalujte Ansible pomocí správce systémových balíčků
Nejprve uvidíte, jak použít správce balíčků vaší distribuce k instalaci ansible. Na základě vaší distribuce Linuxu spusťte následující příkazy.
Nainstalujte Ansible v Arch Linux, EndeavourOS, Manjaro Linux:
$ sudo pacman -S ansible
Debian:
Upravte /etc/apt/sources.list
soubor:
$ sudo nano /etc/apt/sources.list
Přidejte následující řádek:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
Poté spusťte následující příkazy:
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 $ sudo apt update $ sudo apt install ansible
Fedora:
$ sudo dnf install ansible
CentOS, RHEL, AlmaLinux, Rocky Linux:
$ sudo dnf install epel-release
$ sudo dnf install ansible
Ubuntu a jeho deriváty:
$ sudo apt update $ sudo apt install software-properties-common $ sudo add-apt-repository --yes --update ppa:ansible/ansible $ sudo apt install ansible
Vaše distribuce může být dodávána se zastaralou verzí Ansible. Chcete-li do svého systému nainstalovat aktualizovanou verzi Ansible, můžete použít Pip , správce balíčků pythonu.
3.1.2. Nainstalujte Ansible pomocí Pip
Nejprve ověřte, zda je nainstalován PIP spuštěním následujících příkazů:
$ which pip pip3 /usr/bin/pip /usr/bin/pip3
$ pip --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
$ pip3 --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
Pokud PIP není nainstalován, spusťte jej pomocí následujících příkazů.
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.py --user
Jakmile je PIP nainstalován, spusťte následující příkaz pro instalaci ansible:
$ sudo python3 -m pip install ansible
Tím se nainstaluje nejnovější verze Ansible.
Můžete také nainstalovat konkrétní verzi Ansible, například 2.9, jako níže:
$ sudo python3 -m pip install 'ansible==2.9'
Po instalaci Ansible spusťte následující příkaz a zkontrolujte verzi ansible:
$ ansible --version
Tento příkaz poskytuje informace o tom, kde je váš hostitelský soubor, konfigurační soubor a binární soubor ansible a jaká verze Ansible je nainstalována.
Ukázkový výstup:
ansible 2.9.0 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/karthick/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible executable location = /usr/local/bin/ansible python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
3.2. Nakonfigurujte Ansible
Jak bylo uvedeno dříve, Ansible bude komunikovat se spravovanými uzly pomocí ssh
autentizační protokol.
Vytvoříme pár klíčů ssh a rozmístíme je mezi všechny spravované uzly. Takže kdykoli je odeslán ansible příkaz, ověří se pomocí těchto klíčů u spravovaných uzlů.
3.2.1. Vygenerujte pár klíčů SSH pro spravované uzly
Vytvořte nového uživatele s názvem ansible v řadiči i ve spravovaných uzlech.
$ sudo useradd ansible ##create user $ sudo passwd ansible ##set password for ansible user.
Přihlaste se/přepněte se jako uživatel a vytvořte pár klíčů ssh pomocí příkazů:
$ su - ansible
$ ssh-keygen -t rsa
Tento příkaz vygeneruje dvojici klíčů SSH.
Nyní distribuujte veřejný klíč do všech spravovaných uzlů.
Můžete použít ssh-copy-id
příkaz pro zkopírování veřejného klíče do cílového uzlu.
Chcete-li zkopírovat veřejný klíč do cílového uzlu pomocí příkazu ssh-copy-id, spusťte:
$ ssh-copy-id -i ~/.ssh/id_rsa [email protected]
Pokud máte více uzlů, použijte for loop
pro zkopírování klíče ssh do všech cílových uzlů.
Pro účely této příručky mám 2 spravované uzly a pojmenoval jsem je centos1 (centos8) a ubuntu1 (Ubuntu 20.04). Ke zkopírování klíče do obou uzlů jsem použil následující kód:
$ for node in centos1 ubuntu1; do ssh-copy-id -i /home/ansible/.ssh/id_rsa [email protected]${node} done
Nyní se přihlaste ke svému spravovanému uzlu a zkontrolujte, zda ověřování na základě klíče funguje správně.
$ ssh [email protected]
Nyní je možné nastavení dokončeno. Jako další krok by měl být vytvořen soubor inventáře a spouštět některé ansible příkazy proti spravovaným hostitelům.
3.2.2. Otestujte konfiguraci Ansible
Ansible má dva důležité soubory, které jsou nutné k odeslání Adhoc nebo příručka příkazy.
Ansible.cfg
- přípustný konfigurační soubor.Hosts
– Soubor inventáře, kde jsou uvedeny podrobnosti o hostiteli.
Podrobněji o konfiguračních a inventárních souborech diskutujte v samostatném článku. V tuto chvíli ke spuštění prvního příkazu ansible stačí přidat názvy hostitelů spravovaných uzlů do souboru inventáře.
Konfigurační soubor Ansible se nachází v /etc/ansible/ansible.cfg
soubor. Tyto podrobnosti můžete také získat spuštěním ansible version
příkaz:
$ ansible --version ansible 2.9.0 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/karthick/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible executable location = /usr/local/bin/ansible python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]
Otevřete ansible.cfg
soubor a vyhledejte seznam parametrů. Na tento parametr bude odkazovat ansible během běhu, aby získal cestu k souboru inventáře.
$ sudo grep -iw "^#Inventory" /etc/ansible/ansible.cfg #inventory = /etc/ansible/hosts
Inventář ve výchozím nastavení odkazuje na /etc/ansible/hosts
soubor. Otevřete hosts
a přidejte název hostitele/IP adresu spravovaného uzlu.
Mám mapování DNS na IP, takže jsem uvedl název dns v souboru hostitele. Můžete také zadat IP adresu.
Vše je nastaveno tak, aby náš úkol běžel v ansible!
Podobné jako "Hello world"
program v programování, ansible má také tradici spouštění ping
module jako první příkaz ke kontrole konektivity mezi řadičem a spravovanými uzly.
ping
modul se pokusí dosáhnout spravovaných uzlů a zkontroluje, zda je k dispozici nějaký pythonový interpret, který lze použít a reagovat jako pong
.
$ ansible all -m ping
Můžete také explicitně zadat soubor hostitelů pomocí -i
příznak jako níže:
$ ansible all -m ping -i flag <path-to-host-file>
Nyní můžete začít hrát s jakýmkoliv modulem, se kterým chcete hrát.
Pokud chcete přidat více uzlů řadiče, stačí zkopírovat klíč SSH z uzlu řadiče do nového uzlu a přidat položku IP/DNS do souboru hostitele. A pak může ansible začít sbírat nově přidaný spravovaný uzel. Je to jednoduché!
Závěr
V této příručce jsme diskutovali o tom, jak nainstalovat a nakonfigurovat Ansible v Linuxu. Také jsme vám ukázali, jak ručně nastavit tříuzlovou domácí laboratoř Ansible.
Existují další automatizovaná řešení, jako je nastavení ansible laboratoře pomocí Vagrant nebo Docker . Těmto tématům se budeme věnovat v našich nadcházejících článcích.
Ansible je rozsáhlé téma! Probrali jsme pouze základy Ansible. Podívejte se na oficiální dokumentaci Ansible se dozvíte více o použití Ansible.
Další informace:
- Automatické nastavení Ansible Lab pomocí Vagrant a Virtualbox v Linuxu
- Ansible Inventory and Configuration Files