Ansible je jedním z nejpopulárnějších nástrojů pro automatizaci správy konfigurací, nasazování aplikací a orchestraci úloh. Díky své jednoduchosti, idempotentní povaze a schopnosti bez agenta se stává základním kamenem mnoha infrastrukturních operací. Tento článek se zaměřuje na základy používání Ansible pro správu konfigurací a zajištění idempotence v konfiguračních změnách napříč serverovou flotilou s CentOS 7.
Předpoklady
Před zahájením je nutné mít:
- Nainstalovaný CentOS 7 na všech spravovaných serverech.
- Přístup k hlavnímu serveru s nainstalovaným Ansible.
- SSH klíče pro bezpečný přístup k cílovým serverům bez použití hesla.
Instalace Ansible
- Přihlaste se do svého řídícího serveru.
- Přidejte EPEL repozitář:
sudo yum install epel-release
.
- Instalujte Ansible:
sudo yum install ansible
.
- Ověřte instalaci:
ansible --version
.
Konfigurace Ansible
-
Vytvoření inventářního souboru: Vytvořte soubor /etc/ansible/hosts
a přidejte skupiny serverů spolu s jejich adresami. Příklad:
[webservers]
server1 ansible_host=192.168.1.1
server2 ansible_host=192.168.1.2
-
Nastavení SSH klíčů: Ujistěte se, že máte SSH klíče nastaveny pro bezpečné připojení k vašim serverům bez hesla.
-
Konfigurační soubor Ansible: Upravte /etc/ansible/ansible.cfg
pro optimalizaci chování Ansible, například nastavením host_key_checking = False
pro vynechání ověření SSH klíčů.
Základní použití Ansible
-
Testování připojení: Spusťte ansible all -m ping
pro ověření, že Ansible se může připojit k vašim serverům.
-
Spouštění ad-hoc příkazů: Pro spuštění příkazů na všech serverech použijte ansible all -a '<command>'
, kde <command>
je váš příkaz.
Idempotentní konfigurační změny
Idempotence je klíčový koncept v Ansible, který znamená, že opakované spuštění stejných úloh nezmění systém, pokud není potřeba změna. Pro zajištění idempotence:
-
Používejte moduly Ansible místo přímých příkazů: Moduly jako yum
, file
, template
, service
a další zajistí, že změny budou provedeny pouze v případě potřeby.
-
Vytvoření playbooků: Playbooky jsou soubory YAML, které definují, jaké úlohy mají být na serverech provedeny. Příklad playbooku pro instalaci a spuštění Nginx:
---
- hosts: webservers
tasks:
- name: Install nginx
yum:
name: nginx
state: present
- name: Start nginx
service:
name: nginx
state: started
enabled: yes
-
Spouštění playbooků: Použijte ansible-playbook <playbook_file>.yml
pro spuštění vašeho playbooku. Ansible zkontroluje stávající stav serverů a provede pouze ty změny, které jsou nutné pro dosažení požadovaného stavu definovaného v playbooku.
Ansible nabízí efektivní a jednoduchý způsob, jak spravovat konfigurace a zajišťovat idempotence v konfiguračních změnách napříč serverovou flotilou. Díky idempotentním playbookům a modulům můžete minimalizovat redundantní úpravy a zajistit konzistenci vaší infrastruktury.