Automatizace je skvělým ideálem IT a DevOps, ale podle mých zkušeností cokoli, co není hned pohodlné, nemusí vůbec existovat. Mnohokrát se mi stalo, že jsem přišel s docela dobrým řešením pro nějaký úkol, a dokonce ho naskriptuji, ale přestal jsem to dělat doslova automatizovaným, protože na stroji neexistuje infrastruktura pro snadnou automatizaci. Pracuji na.
Více o Ansible
- Rychlý průvodce Ansible
- Cheat sheet Ansible
- Bezplatný online kurz:Základy Ansible
- Stáhněte si a nainstalujte Ansible
- eKniha:Automatizovaný podnik
- eKniha:Ansible pro DevOps
- Bezplatné elektronické knihy Ansible
- Nejnovější články Ansible
Mým oblíbeným snadným automatizačním nástrojem býval systém cron – starý, spolehlivý, uživatelsky orientovaný a (kromě plánovací syntaxe, kterou si nikdy nedokážu uložit do paměti) jednoduchý. Problém cronu je však v tom, že předpokládá, že počítač je zapnutý 24 hodin denně, každý den. Poté, co jsem vynechal příliš mnoho naplánovaných záloh, objevil jsem anacron, systém cron založený na časových razítkách spíše než na plánovaných časech. Pokud je váš počítač vypnutý, když by se úloha obvykle spustila, anacron zajistí, že bude spuštěn, když je počítač znovu zapnutý. Vytvoření úlohy je stejně snadné jako umístění skriptu shellu do jednoho ze tří adresářů:cron.daily
, cron.weekly
nebo cron.monthly
(pokud chcete, můžete definovat více). S anacronem zjišťuji, že pouštím skripty a příručky Ansible na místo pro všechny druhy triviálních úkolů, včetně vyskakovacích připomenutí nadcházejících termínů nebo událostí.
Je to jednoduché a zřejmé řešení moderního problému, ale nedělá mi dobře, když na počítači není nainstalován anacron.
Nastavení softwaru pomocí Ansible
Kdykoli nastavuji nový počítač, ať už je to notebook, pracovní stanice nebo server, nainstaluji si anacron. To je snadné, ale instalace anacronu poskytuje pouze příkaz anacron. Nenastavuje uživatelské prostředí anacronu. Vytvořil jsem tedy Ansible playbook, abych nastavil, co uživatel potřebuje k používání anacronu, a nainstaloval příkaz anacron.
Za prvé, standardní typická verze Ansible:
---
- hosts: localhost
tasks:
Vytváření adresářů pomocí Ansible
Dále vytvořím strom adresářů, který používám pro anacron. Můžete si to představit jako jakýsi průhledný crontab.
- name: create directory tree
ansible.builtin.file:
path: "{{ item }}"
state: directory
with_items:
- '~/.local/etc/cron.daily'
- '~/.local/etc/cron.weekly'
- '~/.local/etc/cron.monthly'
- '~/.var/spool/anacron'
Syntaxe se může zdát trochu zvláštní, ale ve skutečnosti je to smyčka. with_items:
direktiva definuje čtyři adresáře k vytvoření a Ansible iteruje přes ansible.builtin.file:
direktivu jednou pro každý adresář (název adresáře vyplní {{ item }}
proměnná). Stejně jako u všeho v Ansible nedochází k chybě ani konfliktu, pokud adresář již existuje.
Kopírování souborů pomocí Ansible
ansible.builtin.copy
modul kopíruje soubory z jednoho umístění do druhého. Aby to fungovalo, potřeboval jsem vytvořit soubor s názvem anacrontab
. Není to kniha Ansible, takže ji uchovávám ve svém ~/Ansible/data
adresář, kde uchovávám soubory podpory pro mé playbooky.
- name: copy anacrontab into place
ansible.builtin.copy:
src: ~/Ansible/data/anacrontab
dest: ~/.local/etc/anacrontab
mode: '0755'
Můj anacrontab
soubor je jednoduchý a napodobuje ten, který některé distribuce instalují standardně do /etc/anacron
:
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1 0 cron.day run-parts $HOME/.local/etc/cron.daily/
7 0 cron.wek run-parts $HOME/.local/etc/cron.weekly/
30 0 cron.mon run-parts $HOME/.local/etc/cron.monthly/
Spuštění anacronu při přihlášení
Většina distribucí Linuxu konfiguruje anacron pro čtení úloh z /etc/anacron
. Anacron většinou používám jako běžný uživatel, takže anacron spouštím ze svého přihlášení ~/.profile
. Nechci si pamatovat, že to musím konfigurovat sám, takže to mám udělat Ansible. Používám ansible.builtin.lineinfile
modul, který vytvoří ~/.profile
pokud již neexistuje a vloží spouštěcí řádek anacronu.
- name: add local anacrontab to .profile
ansible.builtin.lineinfile:
path: ~/.profile
regexp: '^/usr/sbin/anacron'
line: '/usr/sbin/anacron -t ~/.local/etc/anacrontab'
create: true
Instalace anacronu s Ansible
Pro většinu mých systémů dnf
modul by fungoval pro instalaci balíčků, ale na mé pracovní stanici běží Slackware (který používá slackpkg
) a někdy se do mé sbírky dostane jiná distribuce Linuxu. ansible.builtin.package
modul poskytuje obecné rozhraní pro instalaci balíčku, takže jej používám pro tuto příručku. Naštěstí jsem nenarazil na repo s názvem anacron
cokoliv kromě anacron
, takže prozatím nemusím zohledňovat potenciální rozdíly v názvech balíčků.
Toto je ve skutečnosti samostatná hra, protože instalace balíčku vyžaduje eskalaci oprávnění, kterou zajišťuje becomes: true
směrnice.
- hosts: localhost
become: true
tasks:
- name: install anacron
ansible.builtin.package:
name: anacron
state: present
Použití anacronu a Ansible pro snadnou automatizaci
Pro instalaci anacronu s Ansible spustím playbook:
$ ansible-playbook ~/Ansible/setup-anacron.yaml
Od té doby mohu psát skripty shellu pro provedení nějaké triviální, ale opakující se úlohy a zkopírovat je do ~/.local/etc/cron.daily
aby se to automaticky spouštělo jednou denně (nebo tak nějak). Také píšu knihy Ansible pro úkoly, jako je čištění složky se staženými soubory. Své sešity umístím do ~/Ansible
, což je místo, kde uchovávám své hry Ansible a poté vytvořím skript shellu v ~/.local/etc/cron.daily
k provedení hry. Je to snadné, bezbolestné a rychle se to stane druhou přirozeností.