rvm.ruby
Was ist rvm1-ansible?
Es ist eine Ansible Rolle, um Ruby-Versionen mit rvm zu installieren und zu verwalten.
Warum sollten Sie rvm verwenden?
In der Produktion ist es nützlich, weil das Kompilieren einer neuen Ruby-Version leicht über 10 Minuten dauern kann. Das bedeutet 10 Minuten, in denen Ihre CPU konstant auf 100% läuft.
RVM bietet vorkompilierte Binärdateien für viele Betriebssysteme. Das bedeutet, dass Sie Ruby in etwa einer Minute installieren können, selbst auf einer langsamen Mikroinstanz.
Diese Rolle fügt sogar die Ruby-Binärdateien zum Systempfad hinzu, wenn Sie eine systemweite Installation durchführen. So können Sie auf sie zugreifen, als ob sie ohne einen Versionsmanager installiert wären, während Sie gleichzeitig von den Vorteilen von rvm profitieren.
Installation
$ ansible-galaxy install rvm.ruby
Rollenvariablen
Hier ist eine Liste von Standardwerten, die Sie konfigurieren können:
---
# Installieren Sie 1 oder mehrere Ruby-Versionen
# Die letzte aufgelistete Ruby-Version wird als Standard festgelegt
rvm1_rubies:
- 'ruby-2.3.1'
# Bundler-Gem installieren
rvm1_bundler_install: True
# Eine bestimmte Ruby-Version löschen (z.B. ruby-2.1.0)
rvm1_delete_ruby:
# Installationspfad für rvm (Standard ist ein Einzelbenutzer)
# HINWEIS: Wenn Sie eine INSTALLATION FÜR ROOT machen, stellen Sie sicher,
# dass Sie den Installationspfad auf etwas wie '/usr/local/rvm' setzen
rvm1_install_path: '~/.rvm'
# Fügen Sie Installationsflags hinzu oder entfernen Sie sie
# HINWEIS: Wenn Sie eine ROOT-BASED INSTALLATION machen,
# stellen Sie sicher, dass Sie das --user-install-Flag entfernen
rvm1_install_flags: '--auto-dotfiles --user-install'
# Zusätzliche Installationsflags für Ruby hinzufügen
rvm1_ruby_install_flags:
# Besitzer des rvm-Verzeichnisses festlegen
# HINWEIS: Wenn Sie eine ROOT-BASED INSTALLATION durchführen,
# stellen Sie sicher, dass Sie rvm1_user auf 'root' setzen
rvm1_user: 'ubuntu'
# URL für das neueste Installationsskript
rvm1_rvm_latest_installer: 'https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer'
# Zu verwendende rvm-Version
rvm1_rvm_version: 'stable'
# Überprüfen und aktualisieren Sie rvm, das Deaktivieren zwingt rvm, niemals zu aktualisieren
rvm1_rvm_check_for_updates: True
# GPG-Schlüsselverifizierung, verwenden Sie einen leeren String, wenn Sie dies überspringen möchten
# Hinweis: Es sei denn, Sie wissen, was Sie tun, lassen Sie es einfach so
# Identitätsnachweis: https://keybase.io/mpapis
# PGP-Nachricht: https://rvm.io/mpapis.asc
rvm1_gpg_keys: '409B6B1796C275462A1703113804BB82D39DC0E3'
# GPG-Schlüsselserver
rvm1_gpg_key_server: 'hkp://keys.openpgp.org'
# Autolib-Modus, siehe https://rvm.io/rvm/autolibs
rvm1_autolib_mode: 3
# Symlink-Binärdateien zum Systempfad
rvm1_symlink: true
Beispiel-Playbooks
---
- name: Server mit Ruby-Unterstützung für Einzelbenutzer konfigurieren
hosts: all
roles:
- { role: rvm.ruby,
tags: ruby,
rvm1_rubies: ['ruby-2.3.1'],
rvm1_user: 'ubuntu'
}
Wenn Sie eine Liste von Ruby-Versionen übergeben müssen, verwenden Sie ein Array wie folgt.
---
- name: Server mit Ruby-Unterstützung systemweit konfigurieren
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', # Entfernen Sie --user-install von den Standardeinstellungen
rvm1_install_path: /usr/local/rvm, # Auf Systemstandort setzen
rvm1_user: root # Root-Konto erforderlich, um auf den Systemstandort zuzugreifen
}
rvm_rubies muss im Format ruby-x.x.x
angegeben werden, sodass Sie, wenn Sie
ruby 2.2.5 möchten, ein Array rvm_rubies: ['ruby-2.2.5'] übergeben müssen.
Systemweite Installation
Das obige Beispiel würde Ruby systemweit einrichten. Es ist sehr wichtig, dass Sie das Play als Root ausführen, da es an einem vom rvm1_install_path angegebenen Systemstandort geschrieben werden muss.
Zum gleichen Benutzer wie ansible_user
In diesem Fall überschreiben Sie einfach rvm_install_path
, das standardmäßig das --user-install
-Flag gesetzt hat:
rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/{{ ansible_user }}/.rvm'
Zu einem Benutzer, der nicht ansible_user
ist
Sie benötigen hier Root-Zugriff, da Sie außerhalb des Home-Verzeichnisses des Ansible-Benutzers schreiben. Abgesehen davon ist es dasselbe wie oben, außer dass Sie ein anderes Benutzerkonto angeben:
rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/someuser/.rvm'
Schnellnotizen zu rvm1_user
In einigen Fällen möchten Sie möglicherweise, dass der rvm-Ordner und seine Dateien einem bestimmten Benutzer gehören, anstatt root. Setzen Sie einfach rvm1_user: 'foo'
, und wenn Ruby installiert wird, wird sichergestellt, dass foo
das rvm-Verzeichnis besitzt.
Dies würde das become
von Ansible im Hintergrund verwenden. Im Falle von Fehlern (z.B. Fehler beim Festlegen der Berechtigungen für die temporären Dateien, die Ansible erstellen muss, wenn es zu einem nicht privilegierten Benutzer wird
) überprüfen Sie https://docs.ansible.com/ansible/latest/user_guide/become.html für Details und mögliche Lösungen.
Upgrade und Entfernen alter Ruby-Versionen
Ein typischer Ablauf zum Aktualisieren Ihrer Ruby-Version wäre:
- Installieren Sie die neue Version
- Führen Sie Ihr Anwendungs-Playbook aus, damit
bundle install
Ihre Gems neu installiert - Löschen Sie die vorherige Ruby-Version
Nutzen Sie --extra-vars
von Ansible
Fügen Sie einfach --extra-vars 'rvm1_delete_ruby=ruby-2.1.0'
am Ende Ihres Playbook-Befehls hinzu, und diese Version wird entfernt.
Anforderungen
Potentiell sollte jedes von Ansible unterstützte Linux/Unix-System, das die RVM-Voraussetzungen erfüllt, funktionieren.
Die Kompatibilität mit Linux-Distributionen, die auf Debian, Ubuntu oder Redhat basieren, wird aktiv getestet.
Das Continuous-Integration-Setup dieses Projekts deckt derzeit folgende Plattformen ab:
- CentOS 6, 7 und 8
- Debian 8, 9 und 10
- Ubuntu 14.04, 16.04, 18.04 und 20.04
Ansible Galaxy
Sie können es auf der offiziellen Ansible Galaxy finden, wenn Sie es bewerten möchten.
Mitwirken
Unterstützer
Werden Sie ein Unterstützer und unterstützen Sie uns mit einer kleinen monatlichen Spende, um unsere Aktivitäten fortzusetzen.
Sponsoren
Werden Sie ein Sponsor und erhalten Sie Ihr Logo auf unserem README auf Github mit einem Link zu Ihrer Website.
Lizenz
MIT
The official RVM role to install and manage your ruby versions
ansible-galaxy install rvm.ruby