silverlogic.rvm
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 utiliser rvm ?
En production, c'est utile car la compilation d'une nouvelle version de Ruby peut facilement prendre plus de 10 minutes. Cela signifie 10 minutes où votre CPU est utilisé à 100 %.
rvm dispose de 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 Ruby à votre chemin système lors d'une installation à l'échelle du système. Cela vous permet d'y accéder comme s'ils étaient installés sans utiliser de gestionnaire de version tout en profitant des avantages que rvm a à offrir.
Installation
$ ansible-galaxy install rvm.ruby
Variables du rôle
Voici une liste de 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 gem bundler
rvm1_bundler_install: True
# Version de Bundler - Si laissé vide, utiliser la dernière
rvm1_bundler_version: ''
rvm1_bundler_install_command: '{{ rvm1_bundler_version | ternary("gem install -v {{ rvm1_bundler_version }} bundler", "gem install bundler") }}'
# Supprimer une version spécifique de Ruby (par exemple, ruby-2.1.0)
rvm1_delete_ruby:
# Chemin d'installation pour rvm (par défaut pour un utilisateur unique)
# REMARQUE : Si vous effectuez une INSTALLATION BASÉE SUR LE ROOT, assurez-vous de régler le chemin d'installation sur quelque chose comme '/usr/local/rvm'
rvm1_install_path: '~/.rvm'
# Ajouter ou supprimer des flags d'installation
# REMARQUE : Si vous effectuez une INSTALLATION BASÉE SUR LE ROOT alors assurez-vous de RETIRER le flag --user-install ci-dessous
rvm1_install_flags: '--auto-dotfiles --user-install'
# Ajouter des flags d'installation supplémentaires pour Ruby
rvm1_ruby_install_flags:
# Définir le propriétaire du répertoire rvm
# REMARQUE : Si vous effectuez une INSTALLATION BASÉE SUR LE ROOT alors assurez-vous de définir rvm1_user sur 'root'
rvm1_user: 'ubuntu'
# URL pour le script d'installation le plus récent
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 mettre à jour
rvm1_rvm_check_for_updates: True
# Vérification de la clé GPG, utilisez une chaîne vide si vous voulez sauter cela
# Remarque : À moins que vous ne sachiez ce que vous faites, conservez-le tel quel
# 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://pool.sks-keyservers.net'
# mode autolib, voir https://rvm.io/rvm/autolibs
rvm1_autolib_mode: 3
Exemples de playbooks
---
- name: Configurer les serveurs avec prise en charge de Ruby pour un utilisateur unique
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 de Ruby, faites-le dans un tableau comme ceci.
---
- name: Configurer les serveurs avec prise en charge de Ruby pour tous les utilisateurs
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 valeurs par défaut
rvm1_install_path: /usr/local/rvm, # Définir sur un emplacement système
rvm1_user: root # Besoin d'un 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 devez passer un tableau rvm_rubies: ['ruby-2.2.5']
Installation à l'échelle du système
L'exemple ci-dessus configurerait Ruby à l'échelle du système. Il est très important que vous exécutiez le play en tant que root car il aura besoin d'écrire dans un emplacement système spécifié par rvm1_install_path.
Pour le même utilisateur que ansible_user
Dans ce cas, il suffit de remplacer rvm_install_path
qui par défaut est défini sur le flag --user-install
:
rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/{{ ansible_user }}/.rvm'
Pour 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. Autrement cela reste le même que ci-dessus, sauf que vous fournirez un compte utilisateur différent :
rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/someuser/.rvm'
Une petite note sur rvm1_user
Dans certains cas, vous pourriez vouloir que le dossier rvm et ses fichiers appartiennent à un utilisateur spécifique au lieu de root. Il suffit de définir rvm1_user: 'foo'
et lorsque Ruby est installé, il s'assurera que foo
possède le répertoire rvm.
Mise à niveau et suppression des anciennes versions de Ruby
Un flux de travail commun pour mettre à niveau votre version de Ruby serait :
- Installer la nouvelle version
- Exécuter votre rôle d'application pour que bundle install réinstalle vos gems
- Supprimer l'ancienne version de Ruby
Utiliser --extra-vars
d'ansible
Ajoutez simplement --extra-vars 'rvm1_delete_ruby=ruby-2.1.0'
à la fin de votre commande playbook et cette version sera supprimée.
Exigences
- Testé sur CentOS 6 et 7
- Testé sur Debian 8 et 9
- Testé sur Ubuntu 14.04 et 16.04
Ansible Galaxy
Vous pouvez le trouver sur l'ansible galaxy officiel si vous souhaitez le noter.
Contribuer
Soutiens
Devenir un soutien et nous aider avec un petit don mensuel pour nous aider à continuer nos activités.
Sponsors
Devenir un sponsor et obtenir votre logo sur notre README sur Github avec un lien vers votre site.
Licence
MIT
The official RVM role to install and manage your ruby versions
ansible-galaxy install silverlogic.rvm