rvm.ruby

Estado de Construcción OpenCollective OpenCollective Rol de Ansible Descargas del Rol de Ansible

¿Qué es rvm1-ansible?

Es un rol de Ansible para instalar y gestionar versiones de ruby usando rvm.

¿Por qué deberías usar rvm?

En producción es útil porque compilar una nueva versión de ruby puede tardar fácilmente más de 10 minutos. Eso son 10 minutos con tu CPU funcionando al 100%.

rvm tiene binarios precompilados para muchos sistemas operativos. Eso significa que puedes instalar ruby en aproximadamente 1 minuto, incluso en una instancia micro lenta.

Este rol incluso agrega los binarios de ruby a tu ruta del sistema al hacer una instalación a nivel del sistema. Esto te permite acceder a ellos como si estuvieran instalados sin usar un administrador de versiones, mientras sigues beneficiándote de lo que rvm ofrece.

Instalación

$ ansible-galaxy install rvm.ruby

Variables del rol

A continuación se muestra una lista de valores predeterminados que puedes configurar:

---

# Instalar 1 o más versiones de ruby
# La última versión listada se establecerá como la versión predeterminada de ruby
rvm1_rubies:
  - 'ruby-2.3.1'

# Instalar el gem bundler
rvm1_bundler_install: True

# Eliminar una versión específica de ruby (por ejemplo, ruby-2.1.0)
rvm1_delete_ruby:

# Ruta de instalación para rvm (por defecto es usuario único)
# NOTA: Si estás haciendo una INSTALACIÓN BASADA EN ROOT, asegúrate de
#       establecer la ruta de instalación a algo como '/usr/local/rvm'
rvm1_install_path: '~/.rvm'

# Agregar o quitar cualquier bandera de instalación
# NOTA: Si estás haciendo una INSTALACIÓN BASADA EN ROOT, asegúrate de
#       ELIMINAR la bandera --user-install de abajo
rvm1_install_flags: '--auto-dotfiles --user-install'

# Agregar banderas adicionales de instalación de ruby
rvm1_ruby_install_flags:

# Establecer el propietario del directorio de rvm
# NOTA: Si estás haciendo una INSTALACIÓN BASADA EN ROOT, asegúrate de
#       establecer rvm1_user como 'root'
rvm1_user: 'ubuntu'

# URL para el último script de instalación
rvm1_rvm_latest_installer: 'https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer'

# Versión de rvm a usar
rvm1_rvm_version: 'stable'

# Comprobar y actualizar rvm, deshabilitar esto forzará a rvm a nunca actualizar
rvm1_rvm_check_for_updates: True

# Verificación de clave GPG, usa una cadena vacía si deseas omitir esto
# Nota: A menos que sepas lo que estás haciendo, déjalo como está
#           Prueba de identidad: https://keybase.io/mpapis
#           Mensaje PGP: https://rvm.io/mpapis.asc
rvm1_gpg_keys: '409B6B1796C275462A1703113804BB82D39DC0E3'

# El servidor de claves GPG
rvm1_gpg_key_server: 'hkp://keys.openpgp.org'

# Modo autolib, consulta https://rvm.io/rvm/autolibs
rvm1_autolib_mode: 3

# Crear enlaces simbólicos de los binarios a la ruta del sistema
rvm1_symlink: true

Ejemplos de playbooks

---

- name: Configurar servidores con soporte para ruby para un único usuario
  hosts: all

  roles:
    - { role: rvm.ruby,
        tags: ruby,
        rvm1_rubies: ['ruby-2.3.1'],
        rvm1_user: 'ubuntu'
      }

Si necesitas pasar una lista de versiones de ruby, pásala en un arreglo así.

---
- name: Configurar servidores con soporte para ruby a nivel del sistema
  hosts: all
  roles:
    - { role: rvm.ruby,
        tags: ruby,
        become: yes,

        rvm1_rubies: ['ruby-2.2.5','ruby-2.3.1'],
        rvm1_install_flags: '--auto-dotfiles',     # Eliminar --user-install de los valores predeterminados
        rvm1_install_path: /usr/local/rvm,         # Establecer en la ubicación del sistema
        rvm1_user: root                            # Necesitarás una cuenta root para acceder a la ubicación del sistema
      }

rvm_rubies debe especificarse a través de ruby-x.x.x así que si deseas ruby 2.2.5, necesitarás pasar un arreglo rvm_rubies: ['ruby-2.2.5']

Instalación a nivel del sistema

El ejemplo anterior configuraría ruby a nivel del sistema. Es muy importante que ejecutes el play como root porque necesitará escribir en una ubicación del sistema especificada por rvm1_install_path.

Al mismo usuario como ansible_user

En este caso, solo sobrescribe rvm_install_path y por defecto se establece la bandera --user-install:

rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/{{ ansible_user }}/.rvm'

A un usuario que no es ansible_user

Aquí necesitarás acceso root porque estarás escribiendo fuera del directorio de inicio del usuario de ansible. Aparte de eso, es lo mismo que el anterior, excepto que proporcionarás una cuenta de usuario diferente:

rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/someuser/.rvm'

Notas rápidas sobre rvm1_user

En algunos casos, puedes querer que la carpeta de rvm y sus archivos sean propiedad de un usuario específico en lugar de root. Simplemente establece rvm1_user: 'foo' y cuando se instale ruby, asegurará que foo sea el propietario del directorio rvm.

Esto usaría become de Ansible. En caso de fallos (por ejemplo, Error al establecer permisos en los archivos temporales que Ansible necesita crear al convertirse en un usuario no privilegiado), consulta https://docs.ansible.com/ansible/latest/user_guide/become.html para más detalles y posibles soluciones.

Actualización y eliminación de versiones antiguas de ruby

Un flujo de trabajo común para actualizar tu versión de ruby sería:

  1. Instalar la nueva versión
  2. Ejecutar tu rol de aplicación para que el bundle install reinstale tus gems
  3. Eliminar la versión anterior de ruby

Aprovechar --extra-vars de ansible

Simplemente agrega --extra-vars 'rvm1_delete_ruby=ruby-2.1.0' al final de tu comando del playbook y esa versión será eliminada.

Requisitos

Cualquier sistema Linux/Unix que sea compatible con Ansible y cumpla con los requisitos previos de RVM debería funcionar.

La compatibilidad con distribuciones de Linux basadas en Debian, Ubuntu o familias de Redhat se prueba activamente.

La configuración de integración continua de este proyecto actualmente abarca las siguientes plataformas:

  • CentOS 6, 7 y 8
  • Debian 8, 9 y 10
  • Ubuntu 14.04, 16.04, 18.04 y 20.04

Ansible Galaxy

Puedes encontrarlo en la galaxia oficial de ansible si deseas calificarlo.

Contribuciones

Patrocinadores

Conviértete en un patrocinador y obtén tu logo en nuestro README en Github con un enlace a tu sitio.

Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador Patrocinador

Licencia

MIT

Acerca del proyecto

The official RVM role to install and manage your ruby versions

Instalar
ansible-galaxy install rvm.ruby
Licencia
mit
Descargas
881k
Propietario
Ruby enVironment Manager