Ansible je široce používaný nástroj pro správu konfigurace napsaný v jazyce Python, který pomáhá konfigurovat jeden nebo více počítačů najednou. Ansible lze použít k provádění níže uvedených úloh
- Konfigurace od nuly jednoho nebo více uzlů
- Rozmisťování
- Změny konfigurace
- Záplatování
- Správa služeb
- a mnoho dalších
Ansible je široce používán díky své jednoduchosti. Kód Ansible je také napsán v jazyce YAML, nepotřebuje agenta, který by musel být nainstalován na vzdáleném počítači. Ansible používá port 22 (SSH) pro připojení ke vzdálenému počítači a provedení potřebných změn.
Řídicím uzlem se může stát jakýkoli stroj, který se dokáže připojit ke vzdálenému stroji na portu 22. Řídicí uzel je místo, kam můžete nainstalovat Ansible, a řízený uzel dostává správu od řídicích uzlů.
Podívejme se na instalaci Ansible na řídicí uzel.
- Instalace Ansible v systému CentOS 7:
- Instalace Ansible v systému CentOS 8:
- Instalace Ansible v Ubuntu:
- Instalace Ansible pomocí Python PIP v systémech CentOS, Debian a Ubuntu:
- Konfigurace hostitelů řídicí jednotky Ansible:
- Zkontrolujte připojení spravovaného uzlu:
- host3 | SUCCESS => {„changed“: false, „ping“: „
- Závěr:
Instalace Ansible v systému CentOS 7:
Jelikož jediným předpokladem pro instalaci Ansible je Python, nainstalujme Python provedením níže uvedeného příkazu.
$sudo yum install python3 -y
Pro instalaci Ansible v systému CentOS 7 nejprve zajistěte, aby byl nainstalován repozitář CentOS 7 EPEL. Pro instalaci úložiště epel spusťte níže uvedený příkaz.
$sudo yum install epel-release
Aktualizujte index systémových balíčků provedením níže uvedeného příkazu update.
$sudo yum update -y
Po instalaci úložiště nainstalujte Ansible pomocí správce balíčků yum. Pro instalaci Ansible proveďte níže uvedený příkaz.
$sudo yum install ansible -y
Ověřte, zda je Ansible správně nainstalován a jaká je jeho verze.
$ansible -v
Instalace Ansible v systému CentOS 8:
Podívejme se na postup instalace pro systém CentOS 8. Nainstalujme python na CentOS 8.
$sudo dnf install python3
Jakmile je python nainstalován, nainstalujme repozitář EPEL provedením níže uvedeného příkazu.
$sudo dnf install epel-release -y
Aktualizujte index systémových balíčků provedením níže uvedeného příkazu update.
$sudo dnf update -y
Nyní jsme připraveni nainstalovat Ansible. Spusťte níže uvedený příkaz pro instalaci Ansible.
$sudo dnf install ansible -y
Ověřte, zda je Ansible správně nainstalován a jaká je jeho verze.
$ansible -v
Instalace Ansible v Ubuntu:
Python je dnes výchozím balíčkem ve většině linuxových distribucí. Pokud nemáte python nainstalovaný, spusťte níže uvedený příkaz pro instalaci balíčku python.
$sudo apt-get install python3
Pro instalaci Ansible v Ubuntu nejprve nainstalujme repozitář spuštěním níže uvedeného příkazu.
$sudo apt-add-repository ppa:ansible/ansible
Aktualizujte index systémových balíčků provedením níže uvedeného příkazu update.
$sudo apt-get update -y
Nyní nainstalujte Ansible.
$sudo apt-get install -y ansible
Ověřte, zda je Ansible správně nainstalován a jeho verzi.
$ansible -v
Instalace Ansible pomocí Python PIP v systémech CentOS, Debian a Ubuntu:
Nezávisle na tom, jaký operační systém používáte, můžete Ansible nainstalovat pomocí instalátoru balíčků Python. Proveďme níže uvedený příkaz pro instalaci python3-pip.
Pro CentOS 7 a nižší:
$sudo yum install python3 python3-pip -y
Pro CentOS 8:
$sudo dnf install python3 python3-pip -y
Pro Ubuntu a Debian:
$sudo apt-get install python3 python3-pip
Jak máme nainstalovaný python a pip, proveďme níže uvedený příkaz v libovolném operačním systému pro instalaci Ansible.
$sudo pip3 install ansible
Ověřte, zda je Ansible správně nainstalován a jaká je jeho verze.
$ansible -v
Konfigurace hostitelů řídicí jednotky Ansible:
Nejprve musíme nastavit soubor „hosts“, abychom mohli začít komunikovat s našimi ostatními uzly. Tento soubor bude obsahovat všechny IP adresy nebo názvy hostitelů spravovaných uzlů.
Poznámka: Pro připojení ke spravovaným uzlům není vždy nutné používat soubor hosts. Pak ale pokaždé musíme při provádění každého příkazu použít IP nebo hostitelské jméno serveru spravovaného uzlu.
Vytvořte soubor (pokud tam ještě není) s právy roota provedením níže uvedeného příkazu:
$sudo touch /etc/ansible/hosts
Před zápisem do souboru se podívejme a pochopme ukázkový soubor hosts:
alias ansible_ssh_host=your_node_server_ip
Soubor hosts by měl mít výše uvedenou syntaxi. Podívejme se na jednotlivé parametry.
: Tento parametr vytvoří skupinu. Všechny IP adresy spravovaných uzlů nebo názvy hostitelů pod parametrem group_name budou patřit do stejné skupiny. Máme-li například v infrastruktuře více webových serverů, můžeme sem přidat všechny IP adresy nebo hostitelské názvy spravovaného uzlu.
alias: Tento parametr slouží k zadání aliasu pro identifikaci serveru spravovaného uzlu. Pokud máme v infrastruktuře například více webových serverů, můžeme jako alias uvést host1, host2, host3. Hlavní výhodou zadání aliasu je, že když budeme provádět příkaz Ansible ke změně konfigurace jednoho serveru, můžeme použít alias k identifikaci a provedení požadované úlohy na serveru.
ansible_ssh_host=your_node_server_ip: Tento parametr nasměruje alias na IP adresu nebo název hostitele spravovaného uzlu.
Budeme používat systém CentOS 8 jako řízený uzel se systémem Ansible. Jak bylo uvedeno výše, Ansible používá k připojení port 22 vzdáleného hostitele.
Předpokládáme, že IP adresy našich serverů řízených uzlů CentOS jsou 192.168.0.2, 192.168.0.3 a 192.168.0.4.
Aby mohl řídicí uzel Ansible komunikovat s řízenými uzly, musíme potvrdit, že řízené uzly jsou dostupné na portu 22, což je port SSH. Proveďte níže uvedený příkaz pro postupné potvrzení konektivity na všech třech spravovaných uzlech z řadiče.
$ssh [email protected]
$ssh [email protected]
$ssh [email protected]
Budete vyzváni k zadání hesla uživatele root všech uzlů. Ansible funguje velmi hladce, pokud máte nakonfigurováno ověřování bez hesla mezi řadičem Ansible a spravovanými uzly. S různými parametry v příkazu Ansible může fungovat i ověřování heslem.
Jak jsme nakonfigurovali ssh připojení mezi řadičem Ansible a spravovanými uzly, nakonfigurujme soubor hosts pro připojení ke všem spravovaným uzlům. Jak již bylo zmíněno, můžeme přidat více aliasů serverů uzlů do jedné skupiny. V tomto případě přidejme všechny tři uzly a přiřaďme jim alias jako host1, host2, respektive host3. Náš soubor hosts by měl po přidání všech údajů o spravovaných uzlech vypadat následovně. Spusťte níže uvedený příkaz pro úpravu souboru hosts, který jsme vytvořili dříve.
Otevřete soubor s právy roota provedením níže uvedeného příkazu:
$sudo vi /etc/ansible/hosts
Přidáme níže uvedenou konfiguraci do souboru hosts.
host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4
Zde jsme přidali všechny IP adresy spravovaných uzlů a aliasy do skupiny nazvané node_servers.
Pokusíme se nyní připojit ke spravovaným uzlům z řadiče Ansible.
$ansible -m ping node_servers
Výše uvedený příkaz používá modul ping pro připojení ke skupině „node_servers“, kterou jsme definovali v souboru hosts výše.
Na chyby můžete narazit z různých důvodů.
- Ansible se ve výchozím nastavení pokusí připojit ke spravovanému uzlu pomocí vašeho aktuálního uživatelského jména, pokud jste žádné nezadali. Pokud tento uživatel na serveru uzlu neexistuje, zobrazí se níže uvedená chyba.
- Pokud není port ssh 22 na spravovaných uzlech otevřen pro připojení. (Jak již bylo uvedeno, Ansible se připojuje na portu ssh)
- Pokud není IP adresa v souboru hosts správná.
Pokud některá z výše uvedených podmínek selže, zobrazí se níže uvedená chyba.
host1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host2 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
host3 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}
Ansible konkrétně řekneme, že se má připojovat ke spravovaným uzlům ve skupině „node_servers“ s uživatelem james. Vytvořte adresář group_vars, jak je uvedeno níže.
$sudo mkdir /etc/ansible/group_vars
Soubory v tomto adresáři slouží konkrétně ke konfiguraci proměnných, které můžeme použít v našich Ansible playboocích.
Vytvořme soubor s proměnnými pro naše nastavení provedením níže uvedeného příkazu:
$sudo vim /etc/ansible/group_vars/node_servers.yml
Přidejte do souboru níže uvedený kód:
---
ansible_ssh_user: james
Soubor XML začíná vždy na prvním řádku znakem „—„. Po dokončení tento soubor uložme a zavřeme. Nyní bude Ansible pro skupinu node_servers vždy používat uživatele james, bez ohledu na aktuálního uživatele, kterého používáte ke spuštění příkazu.
Zkontrolujte připojení spravovaného uzlu:
Teď, když máme nastavené naše hostitele a dostatek konfiguračních údajů, které nám umožňují úspěšné připojení ke spravovaným uzlům, můžeme vyzkoušet stejný příkaz, který jsme spustili předtím.
$ansible -m ping servers
Ansible vrátí následující výstup:
host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host3 | SUCCESS => {„changed“: false, „ping“: „
Jedná se o základní test, který má zajistit, že Ansible má spojení se spravovanými uzly.
Závěr:
Pro spravované uzly není nutné používat operační systém CentOS. Stejnou testovací konfiguraci, kterou jsme použili výše, můžete použít pro systémy CentOS, RedHat, Ubuntu a jakékoli jiné distribuce systému Linux.
.