rvm.ruby
Czym jest rvm1-ansible?
To rola Ansible do instalacji i zarządzania wersjami Rubiego przy użyciu rvm.
Dlaczego warto używać rvm?
W produkcji jest to przydatne, ponieważ kompilacja nowej wersji Rubiego może zająć ponad 10 minut. To 10 minut, w których Twój CPU jest obciążony w 100%.
Rvm ma prekompilowane pliki binarne dla wielu systemów operacyjnych. Oznacza to, że możesz zainstalować Rubiego w około 1 minutę, nawet na wolnym mikroinstancie.
Ta rola dodaje również pliki binarne Rubiego do ścieżki systemowej podczas instalacji systemowej. Dzięki temu możesz uzyskać do nich dostęp, jakby były zainstalowane bez użycia menedżera wersji, jednocześnie korzystając z tego, co oferuje rvm.
Instalacja
$ ansible-galaxy install rvm.ruby
Zmienne roli
Poniżej znajduje się lista domyślnych wartości, które można skonfigurować:
---
# Zainstaluj 1 lub więcej wersji Rubiego
# Ostatnia wersja Rubiego zostanie ustawiona jako domyślna
rvm1_rubies:
- 'ruby-2.3.1'
# Zainstaluj gem bundler
rvm1_bundler_install: True
# Usuń konkretną wersję Rubiego (np. ruby-2.1.0)
rvm1_delete_ruby:
# Ścieżka instalacji dla rvm (domyślnie dla pojedynczego użytkownika)
# UWAGA: Jeśli robisz instalację na poziomie ROOT, upewnij się, że
# ustawiasz ścieżkę instalacji na coś takiego jak '/usr/local/rvm'
rvm1_install_path: '~/.rvm'
# Dodaj lub usuń wszelkie flagi instalacyjne
# UWAGA: Jeśli robisz instalację na poziomie ROOT,
# upewnij się, że USUNIESZ flagę --user-install poniżej
rvm1_install_flags: '--auto-dotfiles --user-install'
# Dodaj dodatkowe flagi instalacji Rubiego
rvm1_ruby_install_flags:
# Ustaw właściciela katalogu rvm
# UWAGA: Jeśli robisz instalację na poziomie ROOT,
# upewnij się, że ustawiasz rvm1_user na 'root'
rvm1_user: 'ubuntu'
# URL ostatniego 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'
# Sprawdź i zaktualizuj rvm, wyłączenie tego wymusi, że rvm nigdy się nie zaktualizuje
rvm1_rvm_check_for_updates: True
# Weryfikacja klucza GPG, użyj pustego stringa, jeśli chcesz to pominąć
# Uwaga: Jeśli nie wiesz, co robisz, zostaw to, jak jest
# Dowód tożsamości: https://keybase.io/mpapis
# Komunikat PGP: https://rvm.io/mpapis.asc
rvm1_gpg_keys: '409B6B1796C275462A1703113804BB82D39DC0E3'
# Serwer kluczy GPG
rvm1_gpg_key_server: 'hkp://keys.openpgp.org'
# Tryb autolib, zobacz https://rvm.io/rvm/autolibs
rvm1_autolib_mode: 3
# Utwórz dowiązania symboliczne do ścieżki systemowej
rvm1_symlink: true
Przykładowe playbooki
---
- name: Skonfiguruj serwery z obsługą Rubiego 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 Rubiego, przekaż ją w tablicy w ten sposób.
---
- name: Skonfiguruj serwery z obsługą Rubiego na poziomie systemu
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 # Potrzebujesz konta root, aby uzyskać dostęp do lokalizacji systemowej
}
rvm_rubies musi być określone w postaci ruby-x.x.x
, więc jeśli chcesz
ruby 2.2.5, będziesz musiał przekazać w tablicy rvm_rubies: ['ruby-2.2.5']
Instalacja na poziomie systemu
Powyższy przykład skonfiguruje Rubiego na poziomie systemu. Bardzo ważne jest, aby uruchomić skrypt jako root, ponieważ będzie musiał zapisać w lokalizacji systemowej określonej przez rvm1_install_path.
Dla tego samego użytkownika co ansible_user
W takim przypadku wystarczy nadpisać rvm_install_path
, a domyślnie ustawiona jest flaga --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. Oprócz tego jest to to samo, co powyżej, z tą różnicą, że podasz inne konto użytkownika:
rvm1_install_flags: '--auto-dotfiles --user-install'
rvm1_install_path: '/home/someuser/.rvm'
Szybkie notatki dotyczące rvm1_user
W niektórych przypadkach możesz chcieć, aby folder rvm i jego pliki były własnością konkretnego użytkownika zamiast root. Po prostu ustaw rvm1_user: 'foo'
, a po zainstalowaniu Rubiego upewni się, że foo
jest właścicielem katalogu rvm.
To będzie korzystać z opcji Ansible become
. W przypadku niepowodzeń (np. Nie udało się ustawić uprawnień na tymczasowych plikach, które Ansible musi utworzyć, stając się użytkownikiem bez uprawnień
) sprawdź https://docs.ansible.com/ansible/latest/user_guide/become.html po szczegóły i możliwe rozwiązania.
Uaktualnianie i usuwanie starych wersji Rubiego
Typowy proces aktualizacji wersji Rubiego wyglądałby następująco:
- Zainstaluj nową wersję
- Uruchom rolę aplikacji, aby zainstalować ponownie swoje gemy
- Usuń poprzednią wersję Rubiego
Wykorzystaj --extra-vars
Ansible
Wystarczy dodać --extra-vars 'rvm1_delete_ruby=ruby-2.1.0'
na końcu komendy playbooka, a ta wersja zostanie usunięta.
Wymagania
Potencjalnie każdy system Linux/Unix wspierany przez Ansible, który spełnia wymagania wstępne RVM, powinien działać.
Kompatybilność z dystrybucjami Linuxa opartymi na rodzinach Debian, Ubuntu lub Redhat jest aktywnie testowana.
Ustawienie ciągłej integracji tego projektu obecnie obejmuje następujące platformy:
- CentOS 6, 7 i 8
- Debian 8, 9 i 10
- Ubuntu 14.04, 16.04, 18.04 i 20.04
Ansible galaxy
Możesz go znaleźć w oficjalnym ansible galaxy, jeśli chcesz go 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 Twojej strony.
Licencja
MIT
ansible-galaxy install rvm.ruby