GNU/Linux >> Tutoriels Linux >  >> Linux

Comment j'utilise Ansible et anacron pour l'automatisation

L'automatisation est le grand idéal informatique et DevOps, mais d'après mon expérience, tout ce qui n'est pas immédiatement pratique peut tout aussi bien ne pas exister du tout. Il y a eu de nombreuses fois où j'ai trouvé une assez bonne solution pour une tâche, et je vais même la scripter, mais je m'arrête avant de la rendre littéralement automatisée parce que l'infrastructure pour une automatisation facile n'existe pas sur la machine Je travaille dessus.

En savoir plus sur Ansible

  • Guide de démarrage rapide d'Ansible
  • Aide-mémoire Ansible
  • Cours en ligne gratuit :les bases d'Ansible
  • Télécharger et installer Ansible
  • eBook :L'entreprise automatisée
  • Livre électronique :Ansible pour DevOps
  • Livres numériques Ansible gratuits
  • Derniers articles Ansible

Mon outil d'automatisation facile préféré était le système cron - ancien, fiable, orienté utilisateur et (à part une syntaxe de planification que je ne peux jamais mémoriser) simple. Cependant, le problème avec cron est qu'il suppose qu'un ordinateur est allumé 24 heures sur 24, tous les jours. Après avoir raté un trop grand nombre de sauvegardes planifiées, j'ai découvert anacron, le système cron basé sur des horodatages plutôt que sur des heures planifiées. Si votre ordinateur est éteint lorsqu'une tâche aurait normalement été exécutée, anacron s'assure qu'elle est exécutée lorsque l'ordinateur est rallumé. Créer une tâche est aussi simple que de déposer un script shell dans l'un des trois répertoires :cron.daily , cron.weekly , ou cron.monthly (vous pouvez en définir plus si vous le souhaitez). Avec anacron, je me retrouve à mettre en place des scripts et des playbooks Ansible pour toutes sortes de tâches triviales, y compris des rappels contextuels des dates d'échéance ou des événements à venir.

C'est une solution simple et évidente à un problème moderne, mais cela ne me sert à rien si anacron n'est pas installé sur l'ordinateur.

Configuration du logiciel avec Ansible

Chaque fois que j'installe un nouvel ordinateur, qu'il s'agisse d'un ordinateur portable, d'un poste de travail ou d'un serveur, j'installe anacron. C'est facile, mais une installation anacron ne fournit que la commande anacron. Il ne configure pas l'environnement utilisateur anacron. J'ai donc créé un playbook Ansible pour configurer ce dont l'utilisateur a besoin pour utiliser anacron et installer la commande anacron.

Tout d'abord, le passe-partout Ansible standard :

---
- hosts: localhost
  tasks:

Créer des répertoires avec Ansible

Ensuite, je crée l'arborescence de répertoires que j'utilise pour anacron. Vous pouvez considérer cela comme une sorte de crontab transparent.

    - 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 syntaxe de ceci peut sembler un peu étrange, mais c'est en fait une boucle. Le with_items: définit quatre répertoires à créer et Ansible parcourt le ansible.builtin.file: directive une fois pour chaque répertoire (le nom du répertoire remplit le {{ item }} variable). Comme pour tout dans Ansible, il n'y a pas d'erreur ou de conflit si le répertoire existe déjà.

Copier des fichiers avec Ansible

Le ansible.builtin.copy module copie les fichiers d'un emplacement à un autre. Pour que cela fonctionne, j'avais besoin de créer un fichier appelé anacrontab . Ce n'est pas un playbook Ansible, donc je le garde dans mon ~/Ansible/data répertoire, où je conserve les fichiers de support pour mes playbooks.

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

Mon anacrontab est simple et imite celui que certaines distributions installent par défaut dans /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/

Exécuter anacron lors de la connexion

La plupart des distributions Linux configurent anacron pour lire les travaux depuis /etc/anacron . J'utilise principalement anacron en tant qu'utilisateur régulier, donc je lance anacron depuis mon login ~/.profile . Je ne veux pas avoir à me rappeler de le configurer moi-même, alors j'ai Ansible pour le faire. J'utilise le ansible.builtin.lineinfile module, qui crée ~/.profile s'il n'existe pas déjà et insère la ligne de lancement 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

Installer anacron avec Ansible

Pour la plupart de mes systèmes, le dnf module fonctionnerait pour l'installation du paquet, mais mon poste de travail exécute Slackware (qui utilise slackpkg ), et parfois une distribution Linux différente fait son chemin dans ma collection. Le ansible.builtin.package Le module fournit une interface générique pour l'installation des packages, je l'utilise donc pour ce playbook. Heureusement, je n'ai pas rencontré de dépôt qui s'appelle anacron tout sauf anacron , donc pour l'instant, je n'ai pas à tenir compte des différences potentielles dans les noms de packages.

Il s'agit en fait d'un jeu séparé car l'installation du package nécessite une élévation de privilèges, fournie par le becomes: true directives.

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

Utiliser anacron et Ansible pour une automatisation facile

Pour installer anacron avec Ansible, je lance le playbook :

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

À partir de là, je peux écrire des scripts shell pour effectuer des tâches triviales mais répétitives et les copier dans ~/.local/etc/cron.daily pour qu'il s'exécute automatiquement une fois par jour (ou à peu près). J'écris également des playbooks Ansible pour des tâches telles que le nettoyage de mon dossier de téléchargements. Je place mes playbooks dans ~/Ansible , où je garde mes lectures Ansible, puis je crée un script shell dans ~/.local/etc/cron.daily pour exécuter la pièce. C'est facile, indolore et devient rapidement une seconde nature.


Linux
  1. Installer et utiliser Ansible (outil d'automatisation) dans CentOS 7

  2. Comment installer et utiliser Ansible sur Debian 11

  3. Image Optimizer gratuitement :Découvrez YOGA et apprenez à l'utiliser

  4. Comment installer et utiliser Etcher sur Linux pour créer une clé USB Live Linux

  5. Comment utiliser Ansible pour installer et configurer Redis 6 sur Debian 11

Rôles Ansible et comment les utiliser dans les Playbooks

Outils de capture d'écran pour Ubuntu - Comment installer et utiliser ?

Comment utiliser Ansible pour configurer Vim

Comment installer et utiliser Ansible sur Debian 10

Comment installer et utiliser Okteta pour les fichiers de données RAW sous Linux

Comment installer et configurer Ansible sur Ubuntu