silverlogic.rvm
Was ist rvm1-ansible?
Es ist eine Ansible Rolle zur Installation und Verwaltung von Ruby-Versionen mit rvm.
Warum solltest du rvm verwenden?
In der Produktion ist es nützlich, weil das Kompilieren einer neuen Ruby-Version leicht über 10 Minuten dauern kann. Das sind 10 Minuten, in denen deine CPU auf 100% belastet wird.
RVM hat vorgefertigte Binärdateien für viele Betriebssysteme. Das bedeutet, dass du Ruby in etwa 1 Minute installieren kannst, selbst auf einer langsamen Micro-Instanz.
Diese Rolle fügt sogar die Ruby-Binärdateien in deinen Systempfad ein, wenn du eine systemweite Installation machst. So kannst du auf sie zugreifen, als wären sie installiert, ohne einen Versionsmanager zu verwenden, und trotzdem von den Vorteilen von rvm profitieren.
Installation
$ ansible-galaxy install rvm.ruby
Rollenvariablen
Hier ist eine Liste von Standardwerten, die du konfigurieren kannst:
---
# Installiere 1 oder mehr Ruby-Versionen
# Die letzte aufgeführte Ruby-Version wird als Standard gesetzt
rvm1_rubies:
- 'ruby-2.3.1'
# Installiere das Bundler-Gem
rvm1_bundler_install: True
# Bundler-Version - Wenn leer, wird die neueste verwendet
rvm1_bundler_version: ''
rvm1_bundler_install_command: '{{ rvm1_bundler_version | ternary("gem install -v {{ rvm1_bundler_version }} bundler", "gem install bundler") }}'
# Lösche eine spezifische Ruby-Version (z. B. ruby-2.1.0)
rvm1_delete_ruby:
# Installationspfad für rvm (standardmäßig für einen einzelnen Benutzer)
# HINWEIS: Wenn du eine INSTALLATION FÜR ROOT MACHST, stelle sicher, dass
# du den Installationspfad auf etwas wie '/usr/local/rvm' setzt
rvm1_install_path: '~/.rvm'
# Füge Installationsflags hinzu oder entferne sie
# HINWEIS: Wenn du eine INSTALLATION FÜR ROOT MACHST, stelle sicher,
# dass du das --user-install-Flag entfernst
rvm1_install_flags: '--auto-dotfiles --user-install'
# Füge zusätzliche Ruby-Installationsflags hinzu
rvm1_ruby_install_flags:
# Setze den Eigentümer des rvm-Verzeichnisses
# HINWEIS: Wenn du eine INSTALLATION FÜR ROOT MACHST, stelle sicher, dass du
# rvm1_user auf 'root' setzt
rvm1_user: 'ubuntu'
# URL für das neuste Installationsskript
rvm1_rvm_latest_installer: 'https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer'
# rvm-Version, die verwendet werden soll
rvm1_rvm_version: 'stable'
# Überprüfe und aktualisiere rvm, das Deaktivieren dieser Option zwingt rvm, niemals zu aktualisieren
rvm1_rvm_check_for_updates: True
# GPG-Schlüsselverifizierung, benutze einen leeren String, wenn du das überspringen möchtest
# Hinweis: Es sei denn, du weißt, was du tust, lasse es so wie es ist
# Identitätsnachweis: https://keybase.io/mpapis
# PGP-Nachricht: https://rvm.io/mpapis.asc
rvm1_gpg_keys: '409B6B1796C275462A1703113804BB82D39DC0E3'
# Der GPG-Schlüsselserver
rvm1_gpg_key_server: 'hkp://pool.sks-keyservers.net'
# Autolib-Modus, siehe https://rvm.io/rvm/autolibs
rvm1_autolib_mode: 3
Beispiel-Playbooks
---
- name: Konfiguriere Server mit Ruby-Unterstützung für einen einzelnen Benutzer
hosts: all
roles:
- { role: rvm.ruby,
tags: ruby,
rvm1_rubies: ['ruby-2.3.1'],
rvm1_user: 'ubuntu'
}
Wenn du eine Liste von Ruby-Versionen übergeben möchtest, mache es in einem Array so:
---
- name: Konfiguriere Server mit Ruby-Unterstützung systemweit
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', # Entferne --user-install aus den Standardwerten
rvm1_install_path: /usr/local/rvm, # Setze auf Systemstandort
rvm1_user: root # Root-Konto erforderlich, um auf den Systemstandort zuzugreifen
}
rvm_rubies muss mit ruby-x.x.x
angegeben werden, damit, wenn du
ruby 2.2.5 möchtest, du ein Array übergeben musst rvm_rubies: ['ruby-2.2.5']
Systemweite Installation
Das obige Beispiel würde Ruby systemweit einrichten. Es ist sehr wichtig, dass du das Play als Root ausführst, da es in ein vom rvm1_install_path angegebene Systemverzeichnis schreiben muss.
Für denselben Benutzer wie ansible_user
In diesem Fall überschreibe einfach rvm_install_path
und standardmäßig ist das --user-install
-Flag gesetzt:
rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/{{ ansible_user }}/.rvm'
Für einen Benutzer, der nicht ansible_user
ist
Du benötigst hier Root-Zugriff, da du außerhalb des Home-Verzeichnisses des Ansible-Benutzers schreiben musst. Abgesehen davon ist es dasselbe wie oben, nur dass du ein anderes Benutzerkonto angeben musst:
rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/someuser/.rvm'
Eine kurze Notiz zu rvm1_user
In manchen Fällen möchtest du vielleicht, dass der rvm-Ordner und seine Dateien von einem bestimmten Benutzer und nicht von Root besessen werden. Setze einfach rvm1_user: 'foo'
und wenn Ruby installiert wird, wird sichergestellt, dass foo
das rvm-Verzeichnis besitzt.
Upgrade und Entfernen alter Ruby-Versionen
Ein üblicher Workflow für das Upgrade deiner Ruby-Version könnte folgendermaßen aussehen:
- Installiere die neue Version
- Führe deine Anwendungsrolle aus, damit
bundle install
deine Gems erneut installiert - Lösche die vorherige Ruby-Version
Nutze --extra-vars
von Ansible
Füge einfach --extra-vars 'rvm1_delete_ruby=ruby-2.1.0'
am Ende deines Playbook-Befehls hinzu, und diese Version wird entfernt.
Anforderungen
- Getestet auf CentOS 6 und 7
- Getestet auf Debian 8 und 9
- Getestet auf Ubuntu 14.04 und 16.04
Ansible Galaxy
Du kannst es im offiziellen Ansible Galaxy finden, wenn du es bewerten möchtest.
Mitwirken
Unterstützer
Werde ein Unterstützer und unterstütze uns mit einer kleinen monatlichen Spende, um unsere Aktivitäten fortzusetzen.
Sponsoren
Werde ein Sponsor und erhalte dein Logo in unserer README auf Github mit einem Link zu deiner Webseite.
Lizenz
MIT
The official RVM role to install and manage your ruby versions
ansible-galaxy install silverlogic.rvm