megabyte-labs.java
Java
Creado por Megabyte Labs
Un rol de Ansible que instala Java en casi cualquier plataforma
Tabla de Contenidos
- Descripción General
- Características
- Inicio Rápido
- Sistemas Operativos Compatibles
- Dependencias
- Ejemplo de Playbook
- Contribuciones
- Licencia
Descripción General
Este repositorio es el hogar de un Ansible rol que instala Java en casi cualquier plataforma. Java es un lenguaje de programación orientado a objetos que está diseñado para tener la menor cantidad de dependencias de implementación posible.
Características
Asegura que Java esté instalado:
- Instala Java usando Chocolatey en Windows
- Asegura que la variable
JAVA_HOME
esté configurada - Instala Java en sistemas macOS, Linux y Windows
- Asegura que Java se añade al
PATH
Optimización para Windows:
- Elimina la carpeta de Java del menú de inicio en Windows
Inicio Rápido
¿Buscas instalar Java sin tener que lidiar con Ansible? Simplemente ejecuta el siguiente comando que corresponde a tu sistema operativo:
Linux/macOS:
curl -sS https://install.doctor/java | 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/java?os=win'))
Nota Importante: Antes de ejecutar los comandos anteriores, es recomendable acceder directamente a la URL para asegurarte de que el código es legítimo. Sabemos que es seguro, pero siempre es bueno revisar cualquier script antes de ejecutarlo en tu computadora.
También puedes consultar Install Doctor. Es una aplicación que creamos que puede instalar cualquier rol de Ansible con una sola línea. Tiene algunas 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 la configuración), por favor sigue leyendo a continuación.
Sistemas Operativos Compatibles
El siguiente cuadro muestra los sistemas operativos en los que hemos probado este rol. Se genera automáticamente utilizando las pruebas de Molecule de Ansible ubicadas en la carpeta molecule/
. Hay una 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á en la lista, pero es una variante de uno de los sistemas que probamos (es decir, un sistema de tipo Debian o uno de tipo RedHat), entonces es posible que el rol todavía funcione.
Familia OS | Versión del OS | Estado | Idempotente | Probado en |
---|
¿Qué significa idempotente? Idempotente significa que si ejecutas este rol dos veces seguidas, entonces no habrá cambios en el sistema la segunda vez.
Hemos pasado 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, podrías encontrar interesantes nuestros 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 publicados en Ansible Galaxy. Antes de ejecutar este rol, necesitarás instalar las dependencias de colección y rol, 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. Esta es la forma más fácil de 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 siguiente tabla detalla estos paquetes:
Paquete | Descripción | Requerido |
---|---|---|
ansible | Un sistema de gestión de configuración que puede configurar computadoras de manera remota | ✔️ |
docker | Permite la capacidad de aprovisionar contenedores Docker con Ansible | ✔️ |
python-vagrant | Requerido para aprovisionar máquinas virtuales de Vagrant | ✔️ |
pywinrm | Requerido para aprovisionar máquinas Windows que utilizan WinRM | ✔️ |
ansible-lint | Herramienta de linting para archivos de Ansible | |
ansibler | Herramienta personalizada utilizada para generar documentación avanzada (por ejemplo, genera el gráfico de compatibilidad y otros gráficos) | |
black | Formateador automático de archivos Python incluido en caso de que el proyecto utilice scripts de prueba en Python | |
blocklint | Herramienta de linting que previene que ciertas palabras entren en la base de código | |
flake8 | Linter de Python que informa sobre errores de sintaxis y estilo en Python | |
mod-ansible-autodoc | Fork personalizado de ansible-autodoc que nos permite generar documentación automáticamente basada en comentarios en los archivos YAML del rol | |
molecule | Marco de pruebas para Ansible | |
molecule-docker | Plugin de Molecule para aprovisionar contenedores Docker | |
molecule-vagrant | Plugin de Molecule para aprovisionar máquinas virtuales de Vagrant | |
pre-commit-hooks | Conjunto de herramientas útiles para linting | |
proselint | Linter utilizado para generar mejoras en el lenguaje inglés (se utiliza para mejorar la documentación) | |
yamllint | Linter para archivos YAML que asegura que se utilice la sintaxis y estilo correctos |
Roles de Galaxy
Aunque la mayoría de nuestros roles no tienen dependencias, hay algunos casos en los que otro rol debe instalarse antes de que la lógica pueda continuar. Al comienzo del play, las dependencias de rol de Ansible Galaxy que se enumeran en meta/main.yml
se ejecutarán. Estas dependencias están configuradas para ejecutarse solo una vez por playbook. Si incluyes más de uno de nuestros roles en tu playbook que tienen dependencias en común, entonces la instalación de dependencias se omitirá 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, las dependencias de rol de meta/main.yml
, roles auxiliares, colecciones, etc.). Para tu conveniencia, a continuación se muestra una lista de las dependencias de rol junto con breves descripciones:
role_dependencies
Colecciones de Galaxy
Este rol depende de múltiples colecciones de Ansible Galaxy. Las colecciones junto con los enlaces a su fuente se enumeran a continuación.
Ejemplo de Playbook
Con las dependencias instaladas, todo lo que necesitas 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 preocuparte por los comandos que no deberían ejecutarse como root:
- hosts: all
roles:
- professormanhattan.java
Si estás incorporando este rol en un playbook preexistente, entonces puede ser prudente copiar los requisitos que se detallan en pyproject.toml
y requirements.yml
a sus archivos correspondientes en el raíz de tu playbook, así solo tendrás que preocuparte por instalar un conjunto de requisitos durante futuros usos. Ten en cuenta que las dependencias en pyproject.toml
se pueden mover al más tradicional requirements.txt
, si es que eso es lo que usas 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 les interesa Ansible también pueden beneficiarse de él, ya que te permite convertir tu computadora (y red) en el entorno de desarrollo definitivo. La conclusión es que es un proyecto impresionante que los desarrolladores deben conocer.
Contribuciones
¡Las contribuciones, problemas y solicitudes de funciones son bienvenidas! Siéntete libre de revisar la página de problemas. Si deseas contribuir, consulta la guía de contribuciones.
Patrocinio
Querida Persona Asombrosa,
Creo proyectos de código abierto por amor. Aunque tengo un trabajo, refugio, y tanto comida rápida como puedo manejar, aún 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 pueda 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 y que ofrecen incentivos especiales por registrarse a través de nuestros enlaces especiales:

Licencia
Derechos de autor © 2020-2021 Megabyte LLC. Este proyecto tiene licencia MIT.
Installs Java on almost any platform
ansible-galaxy install megabyte-labs.java