megabyte-labs.snapd
Snap - Un gestor de paquetes de Linux
Creado por Megabyte Labs
Un rol de Ansible que asegura que Snap está instalado y correctamente configurado en sistemas Linux
Tabla de Contenidos
- Descripción General
- Características
- Inicio Rápido
- Sistemas Operativos Soportados
- Dependencias
- Ejemplo de Playbook
- Contribuyendo
- Licencia
Descripción General
Este repositorio es el hogar de un rol de Ansible que asegura que Snap esté instalado y correctamente configurado en sistemas Linux. Snap es un sistema de empaquetado y despliegue de software desarrollado por Canonical para sistemas operativos que usan el núcleo de Linux. Los paquetes, llamados snaps, y la herramienta para usarlos, snapd, funcionan en una variedad de distribuciones de Linux y permiten a los desarrolladores de software distribuir sus aplicaciones directamente a los usuarios. Los snaps son aplicaciones auto-contenidas que se ejecutan en un espacio aislado con acceso mediado al sistema host.
Características
Asegura que Snap esté instalado:
- Instala Snap en sistemas Linux
- Asegura que Snap esté iniciado y habilitado al iniciar el sistema
Inicio Rápido
¿Buscas instalar Snap sin tener que lidiar con Ansible? Simplemente ejecuta el siguiente comando según tu sistema operativo:
Linux/macOS:
curl -sS https://install.doctor/snapd | bash
Windows:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://install.doctor/snapd?os=win'))
Nota Importante: Antes de ejecutar los comandos anteriores, deberías acceder directamente a la URL para asegurarte de que el código es legítimo. Ya sabemos que es seguro, pero antes de ejecutar cualquier script en tu computadora, deberías inspeccionarlo.
También puedes consultar Install Doctor. Es una aplicación que creamos que puede instalar cualquier rol de Ansible con una sola línea. También tiene otras funciones útiles, como la capacidad de instalar binarios al vuelo sin requerir una contraseña. Sin embargo, si deseas incorporar este rol en un playbook de Ansible (y personalizar configuraciones), por favor continúa leyendo a continuación.
Sistemas Operativos Soportados
La tabla a continuación muestra los sistemas operativos en los que hemos probado este rol. Se genera automáticamente utilizando las pruebas de Ansible Molecule que se encuentran en la carpeta molecule/
. Hay lógica de CI en su lugar para manejar automáticamente las pruebas de Windows, macOS, Ubuntu, Fedora, CentOS, Debian y ArchLinux. Si tu sistema operativo no está listado pero es una variante de uno de los sistemas que probamos (es decir, un sistema de tipo Debian o de tipo RedHat) entonces es posible que el rol aún funcione.
Familia de OS | Versión de OS | Estado | Idempotente | Probado en |
---|
¿Qué significa idempotente? Idempotente significa que si ejecutas este rol dos veces seguidas, no habrá cambios en el sistema la segunda vez.
Pasamos mucho tiempo perfeccionando nuestras configuraciones de CI y herramientas de construcción. Si estás interesado en aprender más sobre cómo perfeccionamos nuestro proceso, entonces podrías encontrar interesantes nuestros repositorios de archivos comunes de Ansible y documentación de Ansible. Consulta la guía CONTRIBUTING.md para más detalles.
Dependencias
La mayoría de nuestros roles dependen de colecciones de Ansible Galaxy. Algunos de nuestros proyectos también dependen de otros roles y colecciones que están publicadas en Ansible Galaxy. Antes de ejecutar este rol, necesitarás instalar las dependencias de colecciones y roles, así como los requisitos de Python, ejecutando:
if type poetry &> /dev/null; then poetry install --no-root; else pip3 install -r .config/assets/requirements.txt; fi
ansible-galaxy install -r requirements.yml
Alternativamente, puedes simplemente ejecutar bash .config/scripts/start.sh
si eres nuevo en Ansible y no te importa que también se instalen los requisitos de desarrollo. Este es el método fácil para asegurarte de que todo funcione correctamente.
Python
Aunque la única herramienta necesaria para ejecutar este play en una máquina estándar es Ansible (un paquete de Python), incluimos varias otras dependencias de Python que son necesarias para casos de uso especializados y desarrollo. La tabla a continuación detalla estos paquetes:
Paquete | Descripción | Requerido |
---|---|---|
ansible | Un sistema de gestión de configuraciones que puede configurar remotamente computadoras | ✔️ |
docker | Habilita la capacidad de aprovisionar contenedores Docker con Ansible | ✔️ |
python-vagrant | Requerido para aprovisionar máquinas virtuales Vagrant | ✔️ |
pywinrm | Requerido para aprovisionar máquinas Windows que están usando WinRM | ✔️ |
ansible-lint | Herramienta de linting para archivos de Ansible | |
ansibler | Herramienta personalizada utilizada para generar documentación avanzada (por ejemplo, genera la tabla de compatibilidad y algunos otros gráficos) | |
black | Formateador automático de archivos de Python incluido en caso de que el proyecto utilice scripts de prueba en Python | |
blocklint | Herramienta de linting que evita que ciertas palabras ingresen en la base de código | |
flake8 | Linter de Python que reporta errores de sintaxis y estilo de Python | |
mod-ansible-autodoc | Fork personalizado de ansible-autodoc que nos permite auto-generar documentación basada en comentarios en los archivos YAML del rol | |
molecule | Framework de prueba para Ansible | |
molecule-docker | Plugin de Molecule para aprovisionar contenedores Docker | |
molecule-vagrant | Plugin de Molecule para aprovisionar máquinas virtuales Vagrant | |
pre-commit-hooks | Conjunto de herramientas útiles para linting | |
proselint | Linter utilizado para generar mejoras en el idioma inglés (utilizado para mejorar la documentación) | |
yamllint | Linter para archivos YAML que garantiza que se utilice la sintaxis y el estilo adecuados |
Roles de Galaxy
Aunque la mayoría de nuestros roles no tienen dependencias, hay algunos casos donde otro rol debe ser instalado antes de que la lógica pueda continuar. Al principio del play, las dependencias de rol de Ansible Galaxy listadas en meta/main.yml
se ejecutarán. Estas dependencias están configuradas para ejecutarse una vez por playbook. Si incluyes más de uno de nuestros roles en tu playbook que tienen dependencias en común, la instalación de dependencias se saltará después de la primera ejecución. Algunos de nuestros roles también utilizan roles auxiliares directamente desde los archivos de tareas, lo que ayuda a mantener nuestro playbook principal (Gas Station) DRY.
El archivo requirements.yml
contiene una lista completa de las dependencias de Ansible Galaxy requeridas por este rol (es decir, dependencias de rol en meta/main.yml
, roles auxiliares, colecciones, etc.). Para tu conveniencia, a continuación hay una lista de las dependencias de rol junto con breves descripciones:
dependencias_de_rol
Colecciones de Galaxy
Este rol depende de múltiples colecciones de Ansible Galaxy. Las colecciones junto con enlaces a su fuente se enumeran a continuación.
Ejemplo de Playbook
Con las dependencias instaladas, todo lo que tienes que hacer es agregar el rol a tu playbook principal. El rol maneja el comportamiento de become
, por lo que puedes simplemente agregar el rol a tu playbook sin tener que preocuparte por los comandos que no deben ejecutarse como root:
- hosts: all
roles:
- professormanhattan.snapd
Si estás incorporando este rol en un playbook existente, puede ser prudente copiar los requisitos descritos en pyproject.toml
y requirements.yml
a sus archivos correspondientes en la raíz de tu playbook, para que solo tengas que preocuparte por instalar un conjunto de requisitos durante futuros usos. Ten en cuenta que las dependencias en pyproject.toml
pueden ser movidas al más tradicional requirements.txt
, si es lo que estás utilizando actualmente para rastrear las dependencias de Python.
Ejemplo del Mundo Real
Puedes encontrar un ejemplo de un playbook que incorpora este rol en nuestro playbook principal (también conocido como Gas Station). El playbook es un excelente ejemplo para alguien que está aprendiendo a usar Ansible. También incorpora muchas herramientas de construcción bien pensadas que los usuarios más avanzados de Ansible pueden apreciar. Y las personas que no se preocupan por Ansible también pueden beneficiarse, ya que les permite convertir su computadora (y red) en el entorno de desarrollo definitivo. La conclusión es que es un proyecto increíble que los desarrolladores deberían conocer.
Contribuyendo
¡Contribuciones, problemas y solicitudes de características son bienvenidos! No dudes en consultar la página de problemas. Si deseas contribuir, por favor revisa la guía de contribuciones.
Patrocinio
Querida Persona Maravillosa,
Creo proyectos de código abierto por amor. Aunque tengo un trabajo, refugio y toda la comida rápida que puedo manejar, sería genial ser apreciado por la comunidad por algo en lo que he gastado mucho tiempo y dinero. Por favor considera patrocinarme. ¿Quién sabe? Tal vez podré dejar mi trabajo y publicar código abierto a tiempo completo.
Sinceramente,
Brian Zalewski
Afiliados
A continuación encontrarás una lista de servicios que utilizamos que ofrecen incentivos especiales para registrarse en sus servicios a través de nuestros enlaces especiales:

Licencia
Copyright © 2020-2021 Megabyte LLC. Este proyecto está licenciado bajo MIT.
Ensures Snap is installed and properly configured on Linux systems
ansible-galaxy install megabyte-labs.snapd