Ansible, bezplatný projekt s otevřeným zdrojovým kódem od společnosti Red Hat, postavený na jazyku Python, představuje oblíbenou platformu pro automatizaci IT a správu konfigurací.
Je navržen jako multiplatformní řešení, které je kompatibilní s většinou současných operačních systémů, včetně Linuxu, Windows a macOS. Využívá deklarativní jazyk YAML (YAML Ain’t Markup Language) pro definování konfigurace systému.
Ansible, spolu s dalšími moderními platformami pro správu konfigurací, přinesl zásadní změny v automatizaci IT a stanovil nové průmyslové standardy. Nástroje pro správu konfigurací se staly klíčovou součástí sady nástrojů DevOps a jsou nezbytnou součástí životního cyklu každého moderního IT procesu. Ansible je efektivní v jakémkoli prostředí moderní infrastruktury, ať už se jedná o lokální, hybridní nebo cloudové řešení. Kromě využití v oblasti DevOps, Ansible může zautomatizovat i mnohé každodenní úlohy, které běžně provádí správce systému.
Jednou z výhod Ansible je jeho bezagentní architektura. Pro jeho spuštění není zapotřebí mnoho – stačí SSH přístup k cílovému počítači a podporovaná verze Pythonu, která je standardně instalována na většině moderních operačních systémů. Díky své nenáročnosti na zdroje je Ansible možné nasadit i v rámci moderních, inovativních systémů.
Využití Ansible
Orchestrace
Ansible je preferovaným nástrojem pro koordinaci různých úkolů správy a nasazení systému. Díky playbookům lze používat stejné pracovní postupy v různých projektech, a konfigurační data založená na YAML umožňují ukládat a spravovat verzi vaší infrastruktury v úložišti Git nebo na jakékoli jiné podporované platformě pro správu verzí.
Nasazení aplikací
Ansible umožňuje automatizovat celý životní cyklus nasazení aplikací, ať už se jedná o jednoduchou aplikaci s malým počtem řádků kódu nebo o komplexní vícevrstvé nasazení.
Zabezpečení a soulad s předpisy
Ansible může také přispět k zajištění bezpečnosti vašich systémů v souladu s interními pokyny a průmyslovými standardy. Umožňuje provádět audity a opravovat bezpečnostní zranitelnosti na tisících serverů, čímž poskytuje správcům plnou kontrolu nad IT prostředím.
Podívejme se nyní na některé běžné úkoly, které správce systému může automatizovat pomocí Ansible.
Kopírování souborů z lokálních nebo vzdálených systémů
Správci systémů často potřebují kopírovat soubory mezi různými adresáři. Konfigurační soubory je nutné přenášet na vzdálené servery, nebo přesouvat soubory mezi různými vzdálenými lokacemi.
Modul Ansible copy efektivně řeší tyto úlohy v rámci playbooku.
Běžnou rutinou správců systémů je sledování stavu spravovaných serverů a provádění definovaných akcí v souladu s firemními zásadami. Jednou z takových úloh je sledování dostupnosti serverů. S Ansible lze snadno získat a zobrazit dobu provozu serveru. Níže je uveden příklad kopírování konfigurace NTP z lokálního serveru na vzdálený server pomocí modulu copy:
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: Copy a new ntp configuration file and back up the original, if it differs
copy:
src: ./ntp.conf
dest: /etc/ntp.conf
owner: root
group: root
mode: '0644'
backup: yes
Konfigurace úloh cron
Nastavení plánovaných úloh pro automatické provádění rutinních úkolů je nedílnou součástí správy serveru. Můžete automatizovat zálohování, opravy, audity apod., a tak uvolnit čas pro produktivnější aktivity.
Cron je jeden z nástrojů v Linuxu, který umožňuje plánování. Ansible pomáhá tyto úlohy přidávat nebo upravovat. Následující příklad ukazuje, jak lze snadno nastavit úlohu rsync jako root na vybraných nebo všech serverech pomocí Ansible.
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: Deploy cron job
cron:
name: "Set rsync job"
user: root
minute: "5"
hour: "4"
job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"
Správa disků a souborových systémů
Ansible umožňuje efektivní správu disků, rozvržení oddílů, souborových systémů a jejich připojení, včetně úprav souboru /etc/fstab v systémech Linux. K tomu slouží různé moduly Ansible. Následující příklad demonstruje vytvoření oddílu o velikosti 100 GB, jeho naformátování pomocí souborového systému ext4, vytvoření nového adresáře pro připojení oddílu a jeho následné připojení k vytvořenému adresáři. Záznam v /etc/fstab je vytvořen pro dočasné nebo trvalé připojení v závislosti na možnostech modulu.
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: Create a partition
parted:
device: /dev/sdb
number: 1
part_end: "100%"
state: present
- name: Format new partition
filesystem:
fstype: ext4
dev: /dev/sdb1
- name: Create mount directory
file:
path: /data
state: directory
- name: Mount partition
mount:
path: /data
src: /dev/sdb1
fstype: ext4
state: mounted
Sběr serverových protokolů
Ukládání protokolů na vhodné místo je nezbytné pro účely zabezpečení, auditu a analýzy. Ansible umožňuje shromažďovat protokoly z různých serverů ve vašem firemním prostředí a snadno je ukládat na určené místo. Následující příklad ukazuje, jak na to:
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: Find logs
find:
paths: /var/log/
patterns: '*.log'
recurse: yes
register: _logs
- name: Fetch logs
fetch:
src: "{{ item.path }}"
dest: /tmp/logs
with_items: "{{ _logs.files }}"
Instalace a odinstalace balíčků a softwaru
Instalace balíčků je často vyžadována na základě požadavků uživatelů nebo v rámci počáteční konfigurace serveru. Stejně tak může být nutné odstraňovat nepotřebné balíčky. Ansible umožňuje snadno instalovat nebo odstraňovat balíčky, bez nutnosti manuálního provádění příkazů na každém serveru. Následující příklad demonstruje instalaci a odstranění balíčků pro Ubuntu a serverech Linux založených na RHEL/CentOS.
---
- hosts: ubuntu
gather_facts: no
tasks:
- name: Install lsof utility
apt:
pkg: lsof
state: latest
sudo: yes
- name: Remove ARP Scan utility
apt:
pkg: arp-scan
state: absent
sudo: yes
---
- hosts: centos
gather_facts: no
tasks:
- name: Install lsof utility
yum:
pkg: lsof
state: latest
sudo: yes
- name: Remove ARP Scan utility
yum:
pkg: arp-scan
state: absent
sudo: yes
Správa uživatelů
Uživatelé a skupiny tvoří základní strukturu pro správu přístupu a oprávnění v systémech Unix/Linux. Ve velkých organizacích může být správa uživatelů a skupin značnou výzvou.
Ansible poskytuje administrátorům výborný nástroj pro vytváření, úpravy a odstraňování uživatelů a skupin s veškerými možnostmi, které jsou podporovány operačním systémem.
Následující jednoduchý příklad demonstruje vytváření a odstraňování uživatelů a skupin pomocí Ansible. Po spuštění tohoto playbooku budou na cílových serverech vytvořeny skupiny A a B s danými GID, uživatel1 bude odstraněn (pokud existuje) a vytvořen nový uživatel user2 s daným UID, přiřazenými skupinami a uzamčeným heslem.
---
- hosts: all
gather_facts: no
become: yes
tasks:
- group:
gid: 12310
name: groupA
state: present
- group:
gid: 12311
name: groupB
state: present
- user:
name: user1
state: absent
- user:
name: user2
uid: 12427
shell: /bin/false
password_lock: yes
groups: groupA, groupB
Správa služeb
Služby jsou procesy běžící na pozadí a poskytující různé funkce, například sshd pro SSH konektivitu. Ansible umožňuje spravovat systémové i uživatelské služby, včetně jejich spouštění, zastavování a restartování. Následující ukázka to demonstruje:
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: Restart ssh daemon
service:
name: ssh
state: restarted
- name: Restart sssd daemon
service:
name: sssd
state: stopped
- name: Restart httpd daemon
service:
name: httpd
state: started
V uvedeném příkladu bude služba SSH restartována, služba SSSD zastavena a služba httpd spuštěna. Protože Ansible je idempotentní, nedojde ke změnám u služeb, které jsou již ve správném stavu. Restart však vždy změní stav služby. Je nutné ověřit názvy služeb, protože různé distribuce Linuxu mohou používat odlišné názvy pro stejné služby (např. ssh a sshd).
Závěr 👨💻
Ansible usnadňuje život správcům systémů automatizací opakovaných a časově náročných úkolů, což snižuje riziko lidské chyby a ušetří čas. Umožňuje také ukládat konfigurační data v centrálním úložišti kódu, například v Gitu, což umožňuje spolupráci více uživatelů a kontrolu každé aktivity.
Pro další informace o Ansible a jeho rozsáhlé sadě modulů, navštivte jeho dokumentaci.