GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzo Ansible e anacron per l'automazione

L'automazione è il grande ideale IT e DevOps, ma secondo la mia esperienza, tutto ciò che non è immediatamente conveniente potrebbe anche non esistere affatto. Ci sono state molte volte in cui ho trovato una soluzione abbastanza buona per alcune attività e la scriverò persino, ma mi fermo prima di renderla letteralmente automatizzata perché l'infrastruttura per una facile automazione non esiste sulla macchina Ci sto lavorando.

Altro su Ansible

  • Una guida rapida ad Ansible
  • Cheat sheet di Ansible
  • Corso online gratuito:Ansible essentials
  • Scarica e installa Ansible
  • eBook:l'impresa automatizzata
  • eBook:Ansible for DevOps
  • Ebook Ansible gratuiti
  • Ultimi articoli Ansible

Il mio strumento di automazione facile preferito era il sistema cron:vecchio, affidabile, rivolto all'utente e (a parte una sintassi di pianificazione che non posso mai impegnare in memoria) semplice. Tuttavia, il problema con cron è che presuppone che un computer sia acceso 24 ore al giorno, tutti i giorni. Dopo aver saltato uno di troppo backup programmati, ho scoperto anacron, il sistema cron basato su timestamp anziché su orari programmati. Se il tuo computer è spento quando in genere un lavoro sarebbe stato eseguito, anacron assicura che venga eseguito quando il computer è di nuovo acceso. Creare un lavoro è facile come trascinare uno script di shell in una delle tre directory:cron.daily , cron.weekly o cron.monthly (puoi definire di più se vuoi). Con anacron, mi ritrovo a inserire script e playbook Ansible per tutti i tipi di attività banali, inclusi promemoria pop-up di date di scadenza o eventi imminenti.

È una soluzione semplice ed ovvia a un problema moderno, ma non mi aiuta se anacron non è installato sul computer.

Configurazione del software con Ansible

Ogni volta che configuro un nuovo computer, sia esso un laptop, una workstation o un server, installo anacron. È facile, ma un'installazione di anacron fornisce solo il comando anacron. Non configura l'ambiente utente anacron. Quindi ho creato un playbook Ansible per impostare ciò di cui l'utente ha bisogno per utilizzare anacron e installare il comando anacron.

Innanzitutto, lo standard Ansible boilerplate:

---
- hosts: localhost
  tasks:

Creazione di directory con Ansible

Successivamente, creo l'albero delle directory che uso per anacron. Puoi pensare a questo come a una sorta di crontab trasparente.

    - 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'

La sintassi di questo potrebbe sembrare un po' strana, ma in realtà è un loop. Il with_items: La direttiva definisce quattro directory da creare e Ansible esegue un'iterazione su ansible.builtin.file: direttiva una volta per ogni directory (il nome della directory popola il {{ item }} variabile). Come per tutto in Ansible, non ci sono errori o conflitti se la directory esiste già.

Copiare file con Ansible

Il ansible.builtin.copy modulo copia i file da una posizione all'altra. Affinché funzionasse, avevo bisogno di creare un file chiamato anacrontab . Non è un playbook Ansible, quindi lo tengo nel mio ~/Ansible/data directory, dove conservo i file di supporto per i miei playbook.

    - name: copy anacrontab into place
      ansible.builtin.copy:
        src: ~/Ansible/data/anacrontab
        dest: ~/.local/etc/anacrontab
        mode: '0755'

Il mio anacrontab è semplice e imita quello che alcune distribuzioni installano per impostazione predefinita in /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/

Esecuzione di anacron all'accesso

La maggior parte delle distribuzioni Linux configura anacron per leggere i lavori da /etc/anacron . Uso principalmente anacron come utente normale, quindi lancio anacron dal mio login ~/.profile . Non voglio dovermi ricordare di configurarlo da solo, quindi ho fatto fare ad Ansible. Uso il ansible.builtin.lineinfile modulo, che crea ~/.profile se non esiste già e inserisce la riga di lancio di anacron.

    - 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

Installazione di anacron con Ansible

Per la maggior parte dei miei sistemi, il dnf il modulo funzionerebbe per l'installazione del pacchetto, ma la mia workstation esegue Slackware (che utilizza slackpkg ), e talvolta una diversa distribuzione Linux si fa strada nella mia raccolta. Il ansible.builtin.package module fornisce un'interfaccia generica per l'installazione del pacchetto, quindi lo uso per questo playbook. Fortunatamente, non mi sono imbattuto in un repository che si chiama anacron tutt'altro che anacron , quindi per ora non devo tenere conto di potenziali differenze nei nomi dei pacchetti.

Questo è in realtà un gioco separato perché l'installazione del pacchetto richiede l'escalation dei privilegi, fornita da becomes: true direttiva.

- hosts: localhost
  become: true
  tasks:
    - name: install anacron
      ansible.builtin.package:
        name: anacron
        state: present

Utilizzo di anacron e Ansible per una facile automazione

Per installare anacron con Ansible, eseguo il playbook:

$ ansible-playbook ~/Ansible/setup-anacron.yaml

Da quel momento in poi, posso scrivere script di shell per eseguire alcune attività banali ma ripetitive e copiarle in ~/.local/etc/cron.daily per farlo funzionare automaticamente una volta al giorno (o giù di lì). Scrivo anche playbook Ansible per attività come ripulire la mia cartella dei download. Metto i miei playbook in ~/Ansible , che è dove tengo le mie riproduzioni Ansible, quindi creo uno script di shell in ~/.local/etc/cron.daily per eseguire il gioco. È facile, indolore e diventa rapidamente una seconda natura.


Linux
  1. Installa e usa Ansible (Strumento di automazione) in CentOS 7

  2. Come installare e utilizzare Ansible su Debian 11

  3. Ottimizzatore di immagini gratuito:incontra YOGA e scopri come usarlo

  4. Come installare e utilizzare Etcher su Linux per creare Live Linux USB

  5. Come utilizzare Ansible per installare e configurare Redis 6 su Debian 11

Ruoli Ansible e come usarli nei Playbook

Strumenti di screenshot per Ubuntu:come installare e utilizzare?

Come usare Ansible per configurare Vim

Come installare e utilizzare Ansible su Debian 10

Come installare e utilizzare Okteta per file di dati RAW in Linux

Come installare e configurare Ansible su Ubuntu