GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo uso Ansible y Anacron para la automatización

La automatización es el gran ideal de TI y DevOps, pero en mi experiencia, cualquier cosa que no sea conveniente de inmediato puede no existir en absoluto. Ha habido muchas ocasiones en las que se me ocurrió una solución bastante buena para alguna tarea, e incluso la escribiré, pero no llegué a automatizarla literalmente porque la infraestructura para una automatización sencilla no existe en la máquina. Estoy trabajando.

Más sobre Ansible

  • Una guía de inicio rápido de Ansible
  • Hoja de trucos de Ansible
  • Curso en línea gratuito:conceptos básicos de Ansible
  • Descargar e instalar Ansible
  • eBook:La empresa automatizada
  • Libro electrónico:Ansible para DevOps
  • Libros electrónicos gratuitos de Ansible
  • Últimos artículos de Ansible

Mi herramienta de automatización fácil favorita solía ser el sistema cron:antiguo, confiable, orientado al usuario y (aparte de una sintaxis de programación que nunca puedo memorizar) simple. Sin embargo, el problema con cron es que asume que una computadora está encendida las 24 horas del día, todos los días. Después de perderme demasiadas copias de seguridad programadas, descubrí anacron, el sistema cron basado en marcas de tiempo en lugar de horarios programados. Si su computadora está apagada cuando normalmente se habría ejecutado un trabajo, anacron se asegura de que se ejecute cuando la computadora vuelva a encenderse. Crear un trabajo es tan fácil como colocar un script de shell en uno de los tres directorios:cron.daily , cron.weekly , o cron.monthly (puedes definir más si quieres). Con anacron, me encuentro colocando scripts y playbooks de Ansible en su lugar para todo tipo de tareas triviales, incluidos recordatorios emergentes de próximas fechas de vencimiento o eventos.

Es una solución simple y obvia para un problema moderno, pero no me sirve de nada si Anacron no está instalado en la computadora.

Configuración del software con Ansible

Cada vez que configuro una computadora nueva, ya sea una computadora portátil, una estación de trabajo o un servidor, instalo anacron. Eso es fácil, pero una instalación de anacron solo proporciona el comando anacron. No configura el entorno de usuario de anacron. Así que creé un libro de jugadas de Ansible para configurar lo que el usuario necesita para usar anacron e instalar el comando anacron.

En primer lugar, el modelo estándar de Ansible:

---
- hosts: localhost
  tasks:

Creación de directorios con Ansible

A continuación, creo el árbol de directorios que uso para anacron. Puedes pensar en esto como una especie de crontab transparente.

    - 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 sintaxis de esto puede parecer un poco extraña, pero en realidad es un bucle. El with_items: directiva define cuatro directorios para crear, y Ansible itera sobre el ansible.builtin.file: directiva una vez para cada directorio (el nombre del directorio llena el {{ item }} variable). Como con todo en Ansible, no hay error ni conflicto si el directorio ya existe.

Copiar archivos con Ansible

ansible.builtin.copy El módulo copia archivos de una ubicación a otra. Para que esto funcione, necesitaba crear un archivo llamado anacrontab . No es un libro de jugadas de Ansible, así que lo guardo en mi ~/Ansible/data directorio, donde guardo archivos de soporte para mis libros de jugadas.

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

Mi anacrontab El archivo es simple e imita el que algunas distribuciones instalan por defecto en /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/

Ejecutando anacron al iniciar sesión

La mayoría de las distribuciones de Linux configuran anacron para leer trabajos de /etc/anacron . Principalmente uso anacron como usuario regular, así que ejecuto anacron desde mi inicio de sesión ~/.profile . No quiero tener que acordarme de configurarlo yo mismo, así que hago que Ansible lo haga. Uso el ansible.builtin.lineinfile módulo, que crea ~/.profile si aún no existe e inserta la línea de inicio de 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

Instalación de Anacron con Ansible

Para la mayoría de mis sistemas, dnf funcionaría para la instalación del paquete, pero mi estación de trabajo ejecuta Slackware (que usa slackpkg ) y, a veces, una distribución de Linux diferente se abre paso en mi colección. El ansible.builtin.package El módulo proporciona una interfaz genérica para la instalación del paquete, por lo que lo uso para este libro de jugadas. Afortunadamente, no he encontrado un repositorio que nombre anacron cualquier cosa menos anacron , por lo que por ahora no tengo que tener en cuenta las posibles diferencias en los nombres de los paquetes.

En realidad, esta es una jugada separada porque la instalación del paquete requiere una escalada de privilegios, proporcionada por el becomes: true directiva.

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

Uso de anacron y Ansible para una fácil automatización

Para instalar anacron con Ansible, ejecuto el libro de jugadas:

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

A partir de ese momento, puedo escribir scripts de shell para realizar tareas triviales pero repetitivas y copiarlas en ~/.local/etc/cron.daily para que se ejecute automáticamente una vez al día (o más o menos). También escribo playbooks de Ansible para tareas como limpiar mi carpeta de descargas. Coloco mis libros de jugadas en ~/Ansible , que es donde guardo mis reproducciones de Ansible y luego creo un script de shell en ~/.local/etc/cron.daily para ejecutar la jugada. Es fácil, indoloro y rápidamente se convierte en una segunda naturaleza.


Linux
  1. Instale y use Ansible (herramienta de automatización) en CentOS 7

  2. Cómo instalar y usar Ansible en Debian 11

  3. Image Optimizer gratis:conozca YOGA y aprenda a usarlo

  4. Cómo instalar y usar Etcher en Linux para hacer Live Linux USB

  5. Cómo usar Ansible para instalar y configurar Redis 6 en Debian 11

Roles de Ansible y cómo usarlos en Playbooks

Herramientas de captura de pantalla para Ubuntu:¿cómo instalar y usar?

Cómo usar Ansible para configurar Vim

Cómo instalar y usar Ansible en Debian 10

Cómo instalar y usar Okteta para archivos de datos RAW en Linux

Cómo instalar y configurar Ansible en Ubuntu