Pokud jste správcem systému, je důležité, abyste měli konzistentní způsob správy všech serverů a počítačů, které používáte. Systémy pro správu konfigurace mohou tento proces do značné míry zjednodušit. Efektivně spravují všechny systémy z jednoho centrálního místa.
Na Linux je k dispozici několik systémů pro správu konfigurace. Například Puppet, Chef, Ansible, Bcfg2, Juju, CFEngine atd. Zatímco nástroje jako Puppet a Chef bývají složitější a pokročilejší, Ansible nabízí jednoduchost a snadné použití. Abyste mohli Ansible používat, nemusíte na uzly instalovat žádný další klientský software. Místo toho Ansible používá SSH ke správě a automatizaci systémů. Ansible je open-source software. Je také vysoce škálovatelný, konzistentní a spolehlivý.
Tento návod ukazuje, jak nainstalovat a nakonfigurovat Ansible na Ubuntu 20.04.
Ansible na Ubuntu
Ansible dokáže realizovat tři typy automatizace:
-
Provisioning: Může zprovoznit různé servery podle potřeb infrastruktury.
-
Configuration management: Může provádět různé změny konfigurace serverů. Například spouštění a zastavování služeb, instalaci aplikací a aktualizací, implementaci bezpečnostních zásad atd.
-
Application deployment: Usnadňuje DevOps díky automatizovanému nasazování interně vyvíjených aplikací do produkčního systému.
Ansible může perfektně fungovat v téměř jakémkoli IT prostředí – ať už jde o hostované nebo tradiční servery, virtualizační platformy nebo cloud. Podporuje také správu různých systémů, jako jsou databáze, sítě, firewally, úložná zařízení a mnoho dalších. CloudSigma také podporuje Ansible pro naši cloudovou infrastrukturu.
Prerequisites
Pro tento návod budeme potřebovat několik strojů:
-
Control node: Řídicí uzel je centrální uzel, který se připojuje ke všem hostitelským uzlům, zadává úkoly a spravuje různé aspekty systému. Řídicím uzlem může být cokoli – lokální stroj nebo vzdálený server.
-
Host node: Hostitelé Ansible jsou stroje, které může řídicí uzel Ansible automatizovat.
As the title of the guide suggests, all these machines are expected to be configured with Ubuntu 20.04 with the latest packages. Here’s a quick guide on setting up an Ubuntu server. Protože Ansible používá k připojení ke strojům SSH, musí mít všechny hostitelské uzly správně nastavené SSH klíče s řídicím uzlem. Ujistěte se, že všechny hostitelské uzly mají veřejný SSH klíč řídicího uzlu přidaný do authentication_keys souboru. Podle našeho návodu se dozvíte, how to generate and add SSH keys to Linux servers.
Krok 1: Instalace Ansible
V případě Ubuntu není potřeba žádná další konfigurace balíčků nebo repozitářů. Ansible je přímo dostupný z oficiálních serverů s balíčky pro Ubuntu. Provádění jakýchkoli změn na úrovni systému vyžaduje administrátorský přístup – uživatele root nebo uživatele bez oprávnění root s právy sudo. The sudoers file spravuje oprávnění sudo pro uživatele a skupiny.
Nejprve nainstalujeme Ansible na počítač, který bude sloužit jako řídicí uzel. Chcete-li nainstalovat Ansible na řídicí uzel, spusťte následující příkazy:
|
1 |
sudo apt update |

|
1 |
sudo apt install ansible -y |

Pokud se chystáte použít heslo jako mechanismus ověřování SSH, musíte mít nainstalovaný balíček sshpass nainstalovaný:
|
1 |
sudo apt install sshpass |

Krok 2: Konfigurace souboru inventáře
V Ansible obsahuje soubor inventáře informace o všech hostitelích, které bude Ansible spravovat. Může jít o desítky nebo stovky serverů registrovaných v inventárním souboru. Servery lze také rozdělit do skupin a podskupin. Obecně se inventární soubor používá k definování proměnných, které budou platné pouze pro konkrétní hostitele nebo skupiny. Je to užitečná technika při psaní playbooků a šablon. Určité proměnné mohou také ovlivnit způsob spuštění playbooku.
Ansible je dodáván s výchozím souborem inventáře. Nejprve otevřete tento soubor v textovém editoru:
|
1 |
sudo vim /etc/ansible/hosts |

Ve výchozím nastavení obsahuje soubor inventáře různé příklady pro referenci. Zde je příklad se skupinou pojmenovanou servers obsahující tři různé servery. Proměnná ansible_python_interpreter definuje interpret Pythonu pro všechny hostitele zahrnuté v inventáři. Pomocí direktivy ansible_user, můžeme deklarovat uživatelský účet, ke kterému se Ansible připojí:
|
1 2 3 4 5 6 7 |
[servers] server_1 ansible_host=<server_1_ip> ansible_user=<server_1_username> server_2 ansible_host=<server_2_ip> ansible_user=<server_2_username> server_3 ansible_host=<server_3_ip> ansible_user=<server_3_username> [all:vars] ansible_python_interpreter=/usr/bin/python3 |

Poté soubor uložte a zavřete editor. Chcete-li zkontrolovat inventář, spusťte následující příkaz:
|
1 |
ansible-inventory --list -y |
Výstup by měl vypadat nějak takto:

Krok 3: Testování připojení
Po nakonfigurování souboru inventáře musíme otestovat, zda se Ansible může k těmto serverům připojit přes SSH. Můžeme to provést jednoduše tak, že pingneme všechny hostitelské uzly. Z řídicího uzlu, pingněte všechny hostitelské uzly:
|
1 |
ansible all -m ping |
Modul ping kontroluje následující věci:
-
Dostupnost hostitele
-
Platnost přihlašovacích údajů SSH
-
Hostitelé mohou spouštět moduly Ansible pomocí Pythonu
Výstup by měl vypadat nějak takto:

Pokud je odpověď z konkrétního uzlu pong, znamená to, že uzel je připraven spouštět příkazy a playbooky Ansible na serveru.
Krok 4: Spouštění ad-hoc příkazů
Toto je volitelný krok. Může však být užitečný pro ověření plné funkčnosti Ansible na vzdálených serverech. Tato část může také sloužit jako základní úvod do dalšího používání a konfigurace Ansible. Jakmile potvrdíme připojení k uzlům, můžeme začít spouštět ad-hoc příkazy a playbooky. Jakýkoli příkaz, který byste běžně spouštěli na vzdálených serverech, lze pomocí Ansible spustit na všech serverech.
Zde spusťte následující příkaz. Zkontroluje využití disku na všech uzlech současně:
|
1 |
ansible all -a "df -h" |

Pomocí funkce ad-hoc příkazů můžeme také spouštět různé moduly Ansible, stejně jako jsme spustili ping modul pro testování. Například modul apt pracuje se správcem balíčků APT v Ubuntu. Může spravovat balíčky na vzdáleném uzlu Ubuntu. Upozorňujeme, že k provádění změn na systémové úrovni vyžaduje oprávnění root. Vzdálený uzel musí povolit přihlášení uživatele root nebo uživatel musí mít oprávnění k provádění úloh správy.
V následujícím příkladu Ansible nainstaluje Nginx na všechny hostitelské uzly:
|
1 |
ansible all -m apt -a "name=nginx state=latest" -u root |
A co spouštění příkazů pouze na jednom serveru? K určení serveru použijeme přezdívku serveru (přiřazenou v souboru inventáře):
|
1 |
ansible server_1 -a "df -h" -u cloudsigma |

Můžeme také specifikovat více serverů. Deklarujte přezdívku každého cílového serveru s dvojtečkou jako oddělovačem:
|
1 |
ansible server_1:server_2:server_3 -a "df -h" -u cloudsigma |

Závěrečné myšlenky
V této příručce jsme vám ukázali postup krok za krokem, jak nainstalovat Ansible a nakonfigurovat soubor inventáře pro spouštění ad-hoc příkazů z řídicího uzlu Ansible. Po nakonfigurování může řídicí uzel provést jakýkoli příkaz nebo playbook, který chcete na hostitelích spustit.
Příjemnou práci!
Komentáře
Zatím žádné komentáře. Buďte první.