rvm.ruby

Statut de la construction OpenCollective OpenCollective Rôle Ansible Téléchargements de rôle Ansible

Qu'est-ce que rvm1-ansible ?

C'est un rôle Ansible pour installer et gérer les versions de Ruby en utilisant RVM.

Pourquoi devriez-vous utiliser RVM ?

En production, c'est utile car la compilation d'une nouvelle version de Ruby peut facilement prendre plus de 10 minutes. Cela représente 10 minutes pendant lesquelles votre CPU est à 100 %.

RVM propose des binaires pré-compilés pour de nombreux systèmes d'exploitation. Cela signifie que vous pouvez installer Ruby en environ 1 minute, même sur une instance micro lente.

Ce rôle ajoute même les binaires de Ruby à votre chemin système lors d'une installation à l'échelle du système. Cela vous permet d'y accéder comme si vous les aviez installés sans gestionnaire de version, tout en bénéficiant des avantages de RVM.

Installation

$ ansible-galaxy install rvm.ruby

Variables du rôle

Voici une liste des valeurs par défaut que vous pouvez configurer :

---

# Installer 1 ou plusieurs versions de Ruby
# La dernière version de Ruby listée sera définie comme la version par défaut
rvm1_rubies:
  - 'ruby-2.3.1'

# Installer la gemme bundler
rvm1_bundler_install: True

# Supprimer une version spécifique de Ruby (ex. : ruby-2.1.0)
rvm1_delete_ruby:

# Chemin d'installation pour RVM (par défaut pour un seul utilisateur)
# REMARQUE : Si vous effectuez une installation basée sur ROOT, assurez-vous
#           de définir le chemin d'installation sur quelque chose comme '/usr/local/rvm'
rvm1_install_path: '~/.rvm'

# Ajouter ou supprimer des drapeaux d'installation
# REMARQUE : Si vous effectuez une installation basée sur ROOT, assurez-vous de
#           SUPPRIMER le drapeau --user-install ci-dessous
rvm1_install_flags: '--auto-dotfiles  --user-install'

# Ajouter des drapeaux d'installation Ruby supplémentaires
rvm1_ruby_install_flags:

# Définir le propriétaire du répertoire RVM
# REMARQUE : Si vous effectuez une installation basée sur ROOT, assurez-vous de
#           définir rvm1_user sur 'root'
rvm1_user: 'ubuntu'

# URL du dernier script d'installation
rvm1_rvm_latest_installer: 'https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer'

# Version de RVM à utiliser
rvm1_rvm_version: 'stable'

# Vérifier et mettre à jour RVM, désactiver cela forcera RVM à ne jamais se mettre à jour
rvm1_rvm_check_for_updates: True

# Vérification de clé GPG, utilisez une chaîne vide si vous souhaitez l'ignorer
# Remarque : À moins que vous ne sachiez ce que vous faites, conservez-la telle quelle
#           Preuve d'identité : https://keybase.io/mpapis
#           Message PGP : https://rvm.io/mpapis.asc
rvm1_gpg_keys: '409B6B1796C275462A1703113804BB82D39DC0E3'

# Le serveur de clés GPG
rvm1_gpg_key_server: 'hkp://keys.openpgp.org'

# Mode autolib, voir https://rvm.io/rvm/autolibs
rvm1_autolib_mode: 3

# Lier les binaires au chemin système
rvm1_symlink: true

Exemples de playbooks

---

- name: Configurer les serveurs avec support Ruby pour un seul utilisateur
  hosts: all

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

Si vous devez passer une liste de versions Ruby, passez-la dans un tableau comme ceci.

---
- name: Configurer les serveurs avec un support Ruby à l'échelle du système
  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',     # Retirer --user-install des paramètres par défaut
        rvm1_install_path: /usr/local/rvm,         # Définir à l'emplacement système
        rvm1_user: root                            # Besoin du compte root pour accéder à l'emplacement système
      }

rvm_rubies doit être spécifié via ruby-x.x.x donc si vous voulez ruby 2.2.5, vous devrez passer un tableau rvm_rubies: ['ruby-2.2.5']

Installation à l'échelle du système

L'exemple ci-dessus installerait Ruby à l'échelle du système. Il est très important que vous exécutiez le play en tant que root car cela nécessitera d'écrire dans un emplacement système spécifié par rvm1_install_path.

Au même utilisateur que ansible_user

Dans ce cas, il vous suffit de remplacer rvm_install_path qui est par défaut défini sur le drapeau --user-install :

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

À un utilisateur qui n'est pas ansible_user

Vous aurez besoin d'un accès root ici car vous écrirez en dehors du répertoire personnel de l'utilisateur ansible. À part cela, c'est la même chose que ci-dessus, sauf que vous fournirez un autre compte utilisateur :

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

Notes rapides sur rvm1_user

Dans certains cas, vous pouvez souhaiter que le dossier RVM et ses fichiers soient possédés par un utilisateur spécifique au lieu de root. Il vous suffit de définir rvm1_user: 'foo' et lorsque Ruby est installé, il s'assurera que foo possède le répertoire RVM.

Cela utiliserait become d'Ansible en arrière-plan. En cas d'échecs (par exemple, Échec de la définition des autorisations sur les fichiers temporaires qu'Ansible doit créer lorsque devenant un utilisateur non privilégié), consultez https://docs.ansible.com/ansible/latest/user_guide/become.html pour plus de détails et des solutions possibles.

Mise à jour et suppression des anciennes versions de Ruby

Un flux de travail courant pour mettre à niveau votre version de Ruby serait :

  1. Installer la nouvelle version
  2. Exécuter votre rôle d'application afin que bundle install réinstalle vos gems
  3. Supprimer la version précédente de Ruby

Profiter des --extra-vars d'ansible

Ajoutez simplement --extra-vars 'rvm1_delete_ruby=ruby-2.1.0' à la fin de votre commande de playbook et cette version sera supprimée.

Exigences

Potentiellement, tout système Linux/Unix pris en charge par Ansible et satisfaisant les prérequis de RVM devrait fonctionner.

La compatibilité avec les distributions Linux basées sur Debian, Ubuntu ou Redhat est activement testée.

La mise en place de l'intégration continue de ce projet couvre actuellement les plateformes suivantes :

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

Ansible galaxy

Vous pouvez le trouver sur le galaxy officiel d'ansible si vous souhaitez le noter.

Contribuer

Soutiens

Devenez un soutien et soutenez-nous avec un petit don mensuel pour nous aider à continuer nos activités.

Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien Soutien

Sponsors

Devenez un sponsor et mettez votre logo dans notre README sur Github avec un lien vers votre site.

Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor Sponsor

Licence

MIT

À propos du projet

The official RVM role to install and manage your ruby versions

Installer
ansible-galaxy install rvm.ruby
Licence
mit
Téléchargements
881k
Propriétaire
Ruby enVironment Manager