silverlogic.rvm

Estado de Construcción OpenCollective OpenCollective 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. Son 10 minutos de tu CPU funcionando al 100%.

rvm tiene binarios precompilados para muchos sistemas operativos. Esto significa que puedes instalar Ruby en unos 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 de sistema. Esto te permite acceder a ellos como si estuvieran instalados sin usar un gestor de versiones, mientras aún te beneficias de lo que rvm tiene para ofrecer.

Instalación

$ ansible-galaxy install rvm.ruby

Variables del rol

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

---

# Instala 1 o más versiones de Ruby
# La última versión de Ruby listada será configurada como la versión predeterminada
rvm1_rubies:
  - 'ruby-2.3.1'

# Instala la gema bundler
rvm1_bundler_install: True

# Versión de bundler - Si está vacío, usa la más reciente
rvm1_bundler_version: ''
rvm1_bundler_install_command: '{{ rvm1_bundler_version | ternary("gem install -v {{ rvm1_bundler_version }} bundler", "gem install bundler") }}'

# Elimina una versión específica de Ruby (ej. ruby-2.1.0)
rvm1_delete_ruby:

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

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

# Agrega banderas adicionales de instalación de Ruby
rvm1_ruby_install_flags:

# Establece el propietario del directorio rvm
# NOTA: Si estás haciendo una INSTALACIÓN BASADA EN ROOT entonces
#       asegúrate de establecer rvm1_user a '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'

# Verifica y actualiza rvm; desactivar esto forzará a rvm a no actualizarse nunca
rvm1_rvm_check_for_updates: True

# Verificación de claves GPG; usa una cadena vacía si deseas omitir esto
# Nota: A menos que sepas lo que haces, solo 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://pool.sks-keyservers.net'

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

Ejemplos de playbooks

---

- name: Configurar servidores con soporte para Ruby para un solo 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, hazlo en un array de la siguiente forma.

---
- 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',     # Quita --user-install de los valores por defecto
        rvm1_install_path: /usr/local/rvm,         # Establece en la ubicación del sistema
        rvm1_user: root                            # Necesita 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 quieres ruby 2.2.5, deberás pasar un array 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ás escribir en una ubicación del sistema especificada por rvm1_install_path.

Para el mismo usuario que 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'

Para un usuario que no es ansible_user

Necesitarás acceso root aquí porque estarás escribiendo fuera del directorio principal del usuario de ansible. Aparte de eso, es lo mismo que lo anterior, excepto que deberás proporcionar una cuenta de usuario diferente:

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

Una nota rápida sobre rvm1_user

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

Actualizando y eliminando 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 bundle install reinstale tus gemas
  3. Eliminar la versión anterior de Ruby

Aprovechar los --extra-vars de ansible

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

Requisitos

  • Probado en CentOS 6 y 7
  • Probado en Debian 8 y 9
  • Probado en Ubuntu 14.04 y 16.04

Ansible galaxy

Puedes encontrarlo en el ansible galaxy oficial si deseas calificarlo.

Contribuyendo

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 silverlogic.rvm
Licencia
mit
Descargas
7.7k
Propietario