Ansible, bezplatný a open source projekt společnosti Red Hat založený na Pythonu, je populární platforma pro správu konfigurace a automatizaci IT.
Je multiplatformní a může pracovat s většinou moderních operačních systémů, včetně Linuxu, Windows a Mac. Podporuje deklarativní jazyk napsaný v YAML nebo YAML Ain’t Markup Language pro popis konfigurace systému.
Ansible spolu s dalšími moderními platformami pro správu konfigurace způsobil revoluci v automatizaci IT a průmyslových standardech. Nástroje pro správu konfigurace se staly součástí sady nástrojů DevOps a jsou nedílnou součástí životního cyklu každého moderního IT procesu. To je použitelné pro jakékoli prostředí moderní infrastruktury, ať už je postaveno na místním, hybridním nebo cloudovém prostředí. Nejen pro DevOps, ale Ansible může také pomoci automatizovat mnoho každodenních úkolů prováděných správcem systému.
Jednou z výhod použití Ansible je to, že je bez agenta a nepotřebuje mnoho k zahájení, kromě přístupu SSH k cílovému počítači a podporované verzi Pythonu, která je již standardně nainstalována na většině moderních operačních systémů. Vzhledem k tomu, že se jedná o lehký nástroj, lze jej také nasadit a používat s odkazem na inovativní systémy.
Table of Contents
Použití Ansible
Orchestr
Ansible je nástroj volby pro orchestraci různých úloh správy a nasazení systému. Příručky umožňují používat stejné pracovní postupy orchestrace v různých projektech a konfigurační data založená na YAML umožňují ukládání a verzování vaší infrastruktury v úložišti Git nebo na jakékoli podporované platformě pro správu verzí.
Nasazení aplikací
Ať už se jedná o jednoduchou aplikaci s několika řádkovým kódem nebo vícevrstvé těžké nasazení, Ansible umožňuje automatizovat celý životní cyklus nasazení aplikací.
Zabezpečení a dodržování předpisů
Ansible může také pomoci zajistit, aby vaše systémy byly zabezpečeny podle pokynů vaší organizace a v souladu s průmyslovými standardy. Může běžet na tisících serverů, generovat audit a opravovat tyto bezpečnostní díry, což dává správci úplnou kontrolu nad prostředím.
Pojďme se nyní podívat na některé běžné úlohy Sysadmin, které můžete automatizovat pomocí Ansible.
Zkopírujte soubory z místního nebo vzdáleného systému
Jako správce systému je běžné kopírovat soubory z jednoho adresáře do druhého. Konfigurační soubory je často nutné zkopírovat na vzdálené servery nebo někdy potřebujeme přesunout soubory z jednoho vzdáleného umístění do druhého.
Modul Ansible copy vám může pomoci s těmito úkoly v playbooku.
Pro správce systému je rutinním úkolem znát stav spravovaných serverů a provádět předdefinované akce podle zásad organizace. Jedním z takových úkolů je znát dostupnost serveru. S Ansible můžeme snadno načíst hodnoty doby provozuschopnosti a vytisknout je společně. Níže je uveden příklad kopírování konfigurace ntp z místního na vzdálený server pomocí modulu kopírování:
--- - 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
Nakonfigurujte další úlohy cronu
Nastavení naplánovaných úloh pro provádění rutinních úloh je součástí správy jakéhokoli serveru. Můžete naplánovat automatické zálohování, opravy, auditování atd. v určitou denní nebo měsíční dobu automaticky a ponechat tak produktivní čas pro vaše použití.
cron je jedním z takových nástrojů v Linuxu, který podporuje plánování, a Ansible vám může pomoci tyto úlohy přidat nebo upravit. Jako příklad níže uvedená příručka ukazuje, jak můžete snadno nastavit úlohu rsync jako root na některých nebo všech vašich 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 lze použít ke správě disků, rozložení oddílů, souborových systémů a připojení, včetně /etc/fstab na serverech Linux. Různé moduly Ansible to umožňují. Zde je příklad, který vytvoří oddíl na 100GB disku, naformátuje jej souborovým systémem ext4, vytvoří nový adresář pro připojení oddílu a nakonec jej připojí k danému adresáři. Záznam v /etc/fstab je také vytvořen prostřednictvím dočasného nebo trvalého 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írejte protokoly serveru
Uchovávání protokolů na vhodném místě je někdy nezbytné pro zabezpečení, audit i analýzu. Ansible umožňuje shromažďování protokolů z různých serverů ve vašem podnikovém prostředí a snadno je udržuje na vámi definovaném místě. Zde je návod, jak toho dosáhnout:
--- - 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 }}"
Nainstalujte nebo odeberte balíčky a software
Balíčky je často nutné instalovat na požadavky uživatele nebo jako součást počátečních sestavení serveru. Můžeme také potřebovat odstranit určité balíčky, které již nejsou potřeba nebo mají nějaké kritické chyby atd. Ansible vám umožňuje snadno instalovat nebo odstraňovat balíčky, aniž byste museli přecházet na každý server a spouštět ruční příkazy. Zde je příklad demonstrující instalaci a odstranění jednoho balíčku pro Ubuntu a servery Linux založené 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, kolem které systémy založené na Unixu/Linuxu spravují přístup a oprávnění. Ve velké organizaci může být správa uživatelů a skupin velkou výzvou navzdory automatizaci podpory prostředí.
S Ansible má správce systému vynikající nástroj pro vytváření, úpravu a mazání uživatelů a skupin se všemi různými možnostmi podporovanými v OS.
Zde je jednoduchý příklad, který ukazuje vytváření a mazání uživatelů a skupin pomocí Ansible. Po spuštění této příručky budou mít cílové servery skupinu A a skupinu B vytvořenou s danými GID, zatímco uživatel1 bude odstraněn, pokud existuje. Nový uživatel bez shellu bude vytvořen jako uživatel2 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 procesní démoni, kteří běží na pozadí a obsluhují nějakou službu jako sshd poskytující SSH konektivitu atd. Pomocí Ansible můžete spravovat systémové a uživatelské služby, jako je jejich spouštění, zastavování a restartování. Zde je ukázková příručka, která 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
Ve výše uvedeném příkladu bude služba SSH restartována při dalším zastavení služby SSSD. Démon httpd je spuštěn ke konci. Protože Ansible je idempotentní, žádná služba, která je již spuštěna nebo zastavena, se nezmění, zatímco restart vždy změní stav služby. Nezapomeňte zkontrolovat název služby, protože různé distribuce Linuxu používají jiné názvy i pro stejnou službu, jako je ssh a sshd.
Shrnutí 👨💻
Ansible usnadňuje život systémového administrátora tím, že vám umožňuje provádět opakované a časově náročné úkoly automatizovaným způsobem a snižuje lidské chyby a úsilí. Dále umožní ukládání konfiguračních dat v centrálním úložišti kódu, jako je Git, což umožní více uživatelům spolupracovat a kontrolovat každou aktivitu.
Chcete-li si přečíst více o Ansible a jeho rozsáhlé sadě modulů, podívejte se na jeho dokumentace.