Ansible je nástroj s otevřeným zdrojovým kódem, který vám umožňuje zajišťovat, konfigurovat, spravovat a nasazovat aplikace. Pomáhá provozovat infrastrukturu jako kód, v podstatě automatizační nástroj. Ansible běží na systémech Linux, Unix a Windows. Je to bezplatný nástroj napsaný v Pythonu.
Použitím Ansible je automatizace a ovládání velkého množství serverů zjednodušeno. To umožnilo správci systému nebo inženýrovi DevOps spravovat všechny servery z jednoho řídicího uzlu.
Na rozdíl od Chef and Puppet nepotřebuje Ansible na uzly instalovat žádný speciální software. Ansible používá SSH k provádění úloh a soubor YAML k definování informací o poskytování.
Tento tutoriál vám ukáže, jak nainstalovat ansible na Ubuntu 20.04 a naučit se základy.
Ansible Control Node and Hosts
Ansible control nodes je počítač, který má nainstalovaný ansible a řídí jeden nebo více vzdálených hostitelů. Řídicí uzly komunikují s hostiteli nebo uzly přes SSH pomocí nástrojů příkazového řádku nebo konfiguračních skriptů (playbooků).
Hostitelé nebo spravované uzly jsou síťová zařízení nebo servery, které ansible spravuje. Ansible zjednodušuje operaci pomocí SSH, takže hostitelské počítače vyžadují pouze spuštěnou službu SSH a otevřený port.
V následující části se naučíme, jak nastavit řídicí uzel a získávat informace z hostitelů.
Požadavky
- Jeden ovládací uzel s párem klíčů ssh
- Jeden nebo více hostitelů – vzdálené servery s přidaným veřejným klíčem ssh
Pro demonstraci použijeme počítač Ubuntu 20.04 pro oba účely.
Nainstalujte Ansible na Ubuntu
Ansible komponenty jsou instalovány na řídicím uzlu. Následující příkaz k instalaci Ansible na Ubuntu.
Nejprve získejte aktualizovaný seznam všech balíčků z jejich zdrojů:
$ sudo apt update
Nyní pro instalaci ansible zadejte:
$ sudo apt install ansible
Nastavení řídicího uzlu a hostitelů
Doporučuje se vytvořit uživatele bez oprávnění root s právy sudo na ovládacím uzlu Ansible. Poté pro tohoto uživatele nastavte pár klíčů SSH.
Vytvořte nového uživatele bez oprávnění root:
$ sudo adduser controller
Poté musíte přiřadit sudo
oprávnění pro controller
uživatel:
$ sudo usermod -aG sudo controller
Nyní se můžete přihlásit k controller
uživatelskou relaci a vygenerujte klíč SSH:
$ su - controller
$ ssh-keygen
Výstup:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/controller/.ssh/id_rsa):
Created directory '/home/controller/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/controller/.ssh/id_rsa
Your public key has been saved in /home/controller/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:R033P2ygbVuZv5jJdRbIZtaPG8Af7ZFL2pE9vbzQgP0 controller@linoxide
The key's randomart image is:
+---[RSA 3072]----+
| . . |
| o . . |
| . .. .|
| . .* =.O|
| S .oo@.^=|
| . =o%+@|
| ++E*|
| . *++|
| =.o |
+----[SHA256]-----+
Musíme povolit SSH bez hesla z Ansible Control Node pro každého hostitele. V podstatě musíme zkopírovat veřejný klíč řídicího uzlu do souboru autorizovaných klíčů na každém hostiteli.
V tomto tutoriálu použijeme dva dostupné hostitele:host1@ip_address_1
a host2@ip_address_2
.
V řídicím uzlu Ansible spusťte následující příkaz pro zkopírování veřejného klíče na hostitelské servery:
$ ssh-copy-id host1@ip_address_1
$ ssh-copy-id host2@ip_address_2
Nastavení souboru inventáře
Ansible používá inventory file
k ukládání informací o vzdálených serverech (hostitelích) spravovaných Ansible Control Node. Hostitelé mohou být organizováni do skupin nebo podskupin.
Výchozí soubor inventáře ansible je umístěn v /etc/ansible/hosts
, ale soubor inventáře můžete vytvořit v libovolném umístění a musíte zadat cestu k souboru inventáře pomocí -i
parametr při spouštění příkazů Ansible.
Nyní můžete otevřít soubor inventáře pomocí svého oblíbeného editoru a upravit jej následovně:
$ sudo vim /etc/ansible/hosts
Upozorňujeme, že níže uvedené adresy IP nahraďte IP adresami svých hostitelů Ansible.
[servers]
server1 ansible_host=178.0.113.111
server2 ansible_host=178.0.113.112
Ověřte inventář následujícím příkazem:
$ ansible-inventory --list -y
Výstup:
all:
children:
servers:
hosts:
server1:
ansible_host: 178.0.113.111
server2:
ansible_host: 178.0.113.112
ungrouped: {}
Testování připojení
Je čas zkontrolovat, zda se Ansible může připojit ke vzdáleným serverům. Můžete použít -u
argument k určení vzdáleného uživatele na serverech. Například:
$ ansible all -m ping -u root
Příkaz použije ansible ping
modul pro kontrolu připojení z Ansible Control Node ke vzdáleným serverům.
server1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Když obdržíte pong
odpovědět ze vzdálených serverů, můžete na těchto serverech spouštět dostupné příkazy a playbooky.
Spuštění Ad-hoc
příkaz na vzdálených ansible hostitelích, například:
$ ansible all -a "df -h" -u root
Výstup:
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 746M 2.3M 744M 1% /run
/dev/sda1 20G 4.7G 15G 25% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/loop1 130M 130M 0 100% /snap/google-cloud-sdk/161
/dev/loop0 32M 32M 0 100% /snap/snapd/10238
/dev/sda15 105M 3.6M 101M 4% /boot/efi
tmpfs 746M 0 746M 0% /run/user/1001
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 746M 1.7M 745M 1% /run
/dev/sda1 20G 4.2G 16G 22% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/loop0 56M 56M 0 100% /snap/core18/1932
/dev/loop1 32M 32M 0 100% /snap/snapd/10492
/dev/sda15 105M 3.6M 101M 4% /boot/efi
tmpfs 746M 0 746M 0% /run/user/1001
Závěr
Ansible je nyní ve vlastnictví Redhat a přináší spoustu vylepšení kódu. Ansible Tower je podniková verze Ansible, kde můžete spravovat servery z moderního webového uživatelského rozhraní.
V tomto tutoriálu jste se pomocí příkladů naučili, jak nainstalovat ansible na Ubuntu a základní nastavení. Děkujeme za přečtení a zanechte prosím svůj návrh v sekci komentářů níže.