silverlogic.rvm
Czym jest rvm1-ansible?
To rola Ansible do instalacji i zarządzania wersjami Ruby za pomocą rvm.
Dlaczego warto używać rvm?
Jest to przydatne w produkcji, ponieważ kompilacja nowej wersji Ruby może zająć nawet 10 minut. To 10 minut, w którym CPU jest w pełni obciążone.
Rvm zapewnia wstępnie skompilowane binaria dla wielu systemów operacyjnych. Oznacza to, że możesz zainstalować Ruby w około 1 minutę, nawet na wolnej mikroinstancji.
Ta rola dodaje również binaria Ruby do ścieżki systemowej przy instalacji ogólnosystemowej. Pozwala to na ich dostęp, tak jakby były zainstalowane bez używania menedżera wersji, jednocześnie korzystając z zalet, jakie oferuje rvm.
Instalacja
$ ansible-galaxy install rvm.ruby
Zmienne roli
Poniżej znajduje się lista domyślnych wartości, które możesz skonfigurować:
---
# Zainstaluj 1 lub więcej wersji Ruby
# Ostatnia wersja Ruby na liście będzie ustawiona jako domyślna
rvm1_rubies:
- 'ruby-2.3.1'
# Zainstaluj gem bundlera
rvm1_bundler_install: True
# Wersja bundlera - jeśli pusta, użyj najnowszej
rvm1_bundler_version: ''
rvm1_bundler_install_command: '{{ rvm1_bundler_version | ternary("gem install -v {{ rvm1_bundler_version }} bundler", "gem install bundler") }}'
# Usuń konkretną wersję Ruby (np. ruby-2.1.0)
rvm1_delete_ruby:
# Ścieżka instalacji dla rvm (domyślnie dla pojedynczego użytkownika)
# UWAGA: Jeśli wykonujesz instalację jako ROOT, upewnij się, że
# ustawiasz ścieżkę instalacji na coś w stylu '/usr/local/rvm'
rvm1_install_path: '~/.rvm'
# Dodaj lub usuń jakiekolwiek flagi instalacyjne
# UWAGA: Jeśli wykonujesz instalację jako ROOT, upewnij się, że
# USUNĄŁEŚ flagę --user-install poniżej
rvm1_install_flags: '--auto-dotfiles --user-install'
# Dodaj dodatkowe flagi instalacyjne Ruby
rvm1_ruby_install_flags:
# Ustaw właściciela katalogu rvm
# UWAGA: Jeśli wykonujesz instalację jako ROOT, upewnij się, że
# ustawiasz rvm1_user na 'root'
rvm1_user: 'ubuntu'
# URL najnowszego skryptu instalacyjnego
rvm1_rvm_latest_installer: 'https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer'
# Wersja rvm do użycia
rvm1_rvm_version: 'stable'
# Sprawdzaj i aktualizuj rvm, wyłączenie tego wymusi, że rvm nigdy się nie zaktualizuje
rvm1_rvm_check_for_updates: True
# Weryfikacja kluczy GPG, użyj pustego ciągu, jeśli chcesz to pominąć
# Uwaga: Chyba że wiesz, co robisz, po prostu zostaw tak, jak jest
# Dowód tożsamości: https://keybase.io/mpapis
# Wiadomość PGP: https://rvm.io/mpapis.asc
rvm1_gpg_keys: '409B6B1796C275462A1703113804BB82D39DC0E3'
# Serwer kluczy GPG
rvm1_gpg_key_server: 'hkp://pool.sks-keyservers.net'
# tryb autolib, zobacz https://rvm.io/rvm/autolibs
rvm1_autolib_mode: 3
Przykłady playbooków
---
- name: Skonfiguruj serwery z obsługą Ruby dla jednego użytkownika
hosts: all
roles:
- { role: rvm.ruby,
tags: ruby,
rvm1_rubies: ['ruby-2.3.1'],
rvm1_user: 'ubuntu'
}
Jeśli musisz przekazać listę wersji Ruby, przekaż ją w tablicy, jak poniżej.
---
- name: Skonfiguruj serwery z obsługą Ruby systemowo
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', # Usuń --user-install z domyślnych
rvm1_install_path: /usr/local/rvm, # Ustaw na lokalizację systemową
rvm1_user: root # Potrzebny jest dostęp root do lokalizacji systemowej
}
rvm_rubies musi być określone w formacie ruby-x.x.x
, aby
jednak jeśli chcesz
ruby 2.2.5, musisz przekazać tablicę rvm_rubies: ['ruby-2.2.5']
Instalacja systemowa
Powyższy przykład skonfiguruje Ruby systemowo. Ważne jest, aby uruchomić play jako root, ponieważ będzie potrzebne zapisanie do lokalizacji systemowej określonej przez rvm1_install_path.
Dla tego samego użytkownika co ansible_user
W tym przypadku po prostu nadpisz rvm_install_path
, a domyślnie ustaw flagę --user-install
:
rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/{{ ansible_user }}/.rvm'
Dla użytkownika, który nie jest ansible_user
Będziesz potrzebował dostępu root, ponieważ będziesz pisał poza katalogiem domowym użytkownika ansible. Inaczej jest tak samo jak powyżej, z tą różnicą, że musisz podać inny konto użytkownika:
rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/someuser/.rvm'
Krótkie uwagi dotyczące rvm1_user
Czasami chcesz, aby katalog rvm i jego pliki były własnością konkretnego użytkownika, a nie roota. Po prostu ustaw rvm1_user: 'foo'
, a gdy Ruby zostanie zainstalowany, upewni się, że foo
jest właścicielem katalogu rvm.
Uaktualnianie i usuwanie starych wersji Ruby
Typowy proces aktualizacji wersji Ruby mógłby wyglądać tak:
- Zainstaluj nową wersję
- Uruchom swoją rolę aplikacji, aby bundle install ponownie zainstalował twoje gemy
- Usuń poprzednią wersję Ruby
Wykorzystaj --extra-vars
Ansible
Po prostu dodaj --extra-vars 'rvm1_delete_ruby=ruby-2.1.0'
na końcu swojego polecenia playbooka, a ta wersja zostanie usunięta.
Wymagania
- Testowano na CentOS 6 i 7
- Testowano na Debianie 8 i 9
- Testowano na Ubuntu 14.04 i 16.04
Ansible galaxy
Możesz znaleźć to na oficjalnym ansible galaxy, jeśli chcesz to ocenić.
Współpraca
Wspierający
Zostań wspierającym i wspieraj nas małą miesięczną darowizną, aby pomóc nam kontynuować nasze działania.
Sponsorzy
Zostań sponsorem i umieść swoje logo w naszym README na Githubie z linkiem do swojej strony.
Licencja
MIT
ansible-galaxy install silverlogic.rvm