GNU/Linux >> Znalost Linux >  >> Linux

Jak používám Ansible a anacron pro automatizaci

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í.


Linux
  1. Jak nainstalovat a používat Ansible na Debian 11

  2. Jak nainstalovat a používat Etcher na Linuxu pro vytvoření živého Linuxu USB

  3. Jak používat Ansible k instalaci a konfiguraci Redis 6 na Debian 11

  1. Nainstalujte a používejte Ansible (Automation Tool) v CentOS 7

  2. Jak stáhnout a používat role Ansible Galaxy v Ansible Playbook

  3. Image Optimizer zdarma:Seznamte se s YOGA a naučte se, jak ji používat

  1. Jak používat proměnné v Ansible Playbook

  2. Jak vytvořit Ansible role a používat je v Playbooku

  3. Jak vytvářet a používat vlastní fakta v Ansible