GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie ich Ansible und Anacron für die Automatisierung verwende

Automatisierung ist das große IT- und DevOps-Ideal, aber meiner Erfahrung nach kann alles, was nicht sofort bequem ist, auch gar nicht existieren. Es gab viele Male, in denen ich eine ziemlich gute Lösung für eine Aufgabe gefunden habe, und ich werde sie sogar skripten, aber ich höre damit auf, sie buchstäblich zu automatisieren, weil die Infrastruktur für eine einfache Automatisierung auf der Maschine nicht vorhanden ist Ich arbeite an.

Mehr zu Ansible

  • Eine Schnellstartanleitung für Ansible
  • Ansible-Spickzettel
  • Kostenloser Online-Kurs:Grundlagen von Ansible
  • Ansible herunterladen und installieren
  • eBook:Das automatisierte Unternehmen
  • eBook:Ansible für DevOps
  • Kostenlose Ansible-eBooks
  • Neueste Ansible-Artikel

Mein bevorzugtes einfaches Automatisierungstool war früher das Cron-System – alt, zuverlässig, benutzerfreundlich und (abgesehen von einer Planungssyntax, die ich mir nie merken kann) einfach. Das Problem mit cron ist jedoch, dass davon ausgegangen wird, dass ein Computer jeden Tag rund um die Uhr eingeschaltet ist. Nachdem ich zu viele geplante Backups verpasst hatte, entdeckte ich Anacron, das Cron-System, das eher auf Zeitstempeln als auf geplanten Zeiten basiert. Wenn Ihr Computer ausgeschaltet ist, wenn ein Job normalerweise ausgeführt worden wäre, stellt anacron sicher, dass er ausgeführt wird, wenn der Computer wieder eingeschaltet ist. Das Erstellen eines Jobs ist so einfach wie das Ablegen eines Shell-Skripts in einem der drei Verzeichnisse:cron.daily , cron.weekly , oder cron.monthly (Sie können mehr definieren, wenn Sie möchten). Mit anacron stelle ich fest, dass ich Skripte und Ansible-Playbooks für alle möglichen trivialen Aufgaben, einschließlich Pop-up-Erinnerungen an bevorstehende Fälligkeiten oder Ereignisse, an Ort und Stelle ablege.

Es ist eine einfache und offensichtliche Lösung für ein modernes Problem, aber es nützt mir nichts, wenn anacron nicht auf dem Computer installiert ist.

Software-Setup mit Ansible

Jedes Mal, wenn ich einen neuen Computer einrichte, sei es ein Laptop, eine Workstation oder ein Server, installiere ich anacron. Das ist einfach, aber eine Anacron-Installation bietet nur den Anacron-Befehl. Es richtet nicht die anacron-Benutzerumgebung ein. Also habe ich ein Ansible-Playbook erstellt, um einzurichten, was der Benutzer benötigt, um Anacron zu verwenden und den Anacron-Befehl zu installieren.

Zuerst die standardmäßige Ansible-Boilerplate:

---
- hosts: localhost
  tasks:

Verzeichnisse mit Ansible erstellen

Als nächstes erstelle ich den Verzeichnisbaum, den ich für Anacron verwende. Sie können sich das als eine Art transparentes Crontab vorstellen.

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

Die Syntax mag etwas seltsam erscheinen, aber es ist eigentlich eine Schleife. Der with_items: -Direktive definiert vier zu erstellende Verzeichnisse, und Ansible iteriert über ansible.builtin.file: Direktive einmal für jedes Verzeichnis (der Verzeichnisname füllt die {{ item }} Variable). Wie bei allem in Ansible gibt es keinen Fehler oder Konflikt, wenn das Verzeichnis bereits existiert.

Kopieren von Dateien mit Ansible

Die ansible.builtin.copy Modul kopiert Dateien von einem Ort zum anderen. Damit dies funktionierte, musste ich eine Datei namens anacrontab erstellen . Es ist kein Ansible-Playbook, also bewahre ich es in meinem ~/Ansible/data auf Verzeichnis, in dem ich Support-Dateien für meine Playbooks bewahre.

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

Mein anacrontab Datei ist einfach und ahmt die nach, die einige Distributionen standardmäßig in /etc/anacron installieren :

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/

Anacron wird beim Login ausgeführt

Die meisten Linux-Distributionen konfigurieren anacron so, dass Jobs aus /etc/anacron gelesen werden . Ich verwende anacron meistens als normaler Benutzer, also starte ich anacron von meinem Login ~/.profile . Ich möchte nicht daran denken müssen, das selbst zu konfigurieren, also lasse ich es von Ansible erledigen. Ich verwende die ansible.builtin.lineinfile Modul, das ~/.profile erstellt falls es noch nicht existiert und fügt die Anacron-Startzeile ein.

    - 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

Anacron mit Ansible installieren

Für die meisten meiner Systeme ist der dnf -Modul für die Paketinstallation funktionieren würde, aber auf meiner Workstation läuft Slackware (die slackpkg verwendet ), und manchmal kommt eine andere Linux-Distribution in meine Sammlung. Das ansible.builtin.package -Modul bietet eine generische Schnittstelle zur Paketinstallation, daher verwende ich es für dieses Playbook. Glücklicherweise ist mir noch kein Repo mit dem Namen anacron begegnet alles außer anacron , also muss ich vorerst keine möglichen Unterschiede in den Paketnamen berücksichtigen.

Dies ist eigentlich ein separates Spiel, da die Paketinstallation eine Rechteausweitung erfordert, die durch becomes: true bereitgestellt wird Richtlinie.

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

Anacron und Ansible für einfache Automatisierung verwenden

Um Anacron mit Ansible zu installieren, führe ich das Playbook aus:

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

Von da an kann ich Shell-Skripte schreiben, um einige triviale, aber sich wiederholende Aufgaben auszuführen, und sie in ~/.local/etc/cron.daily kopieren um es automatisch einmal am Tag (oder so ungefähr) laufen zu lassen. Ich schreibe auch Ansible-Playbooks für Aufgaben wie das Aufräumen meines Download-Ordners. Ich platziere meine Playbooks in ~/Ansible , wo ich meine Ansible-Spiele aufbewahre, und erstelle dann ein Shell-Skript in ~/.local/etc/cron.daily um das Stück auszuführen. Es ist einfach, schmerzlos und wird schnell zur zweiten Natur.


Linux
  1. Installieren und verwenden Sie Ansible (Automatisierungstool) in CentOS 7

  2. So installieren und verwenden Sie Ansible unter Debian 11

  3. Kostenloser Bildoptimierer:Lerne YOGA kennen und lerne, wie man es benutzt

  4. So installieren und verwenden Sie Etcher unter Linux, um Live Linux USB zu erstellen

  5. So verwenden Sie Ansible zum Installieren und Konfigurieren von Redis 6 unter Debian 11

Ansible-Rollen und ihre Verwendung in Playbooks

Screenshot-Tools für Ubuntu – Wie installieren und verwenden?

Wie man Ansible verwendet, um Vim zu konfigurieren

So installieren und verwenden Sie Ansible unter Debian 10

So installieren und verwenden Sie Okteta für RAW-Datendateien unter Linux

So installieren und konfigurieren Sie Ansible unter Ubuntu