arolfes.graalvm
Rola Ansible: GraalVM
Rola do instalacji GraalVM CE.
Wymagania
Ansible >= 5 (Ansible Core >= 2.12)
Dystrybucja Linuxa
Rodzina Debian
Ubuntu
- Focal (20.04)
- Jammy (22.04)
Debian
- Buster (10)
- Bullseye (11)
- Bookworm (12)
Rodzina RedHat
Fedora
- 37
- 38
Rodzina SUSE
openSUSE
- 15.0
- 15.1
- 15.2
- 15.3
- 15.4
- 15.5
Uwaga: inne wersje mogą działać, ale nie były testowane.
Zmienne roli
Następujące zmienne zmieniają działanie tej roli (domyślne wartości pokazano poniżej):
# określenie wersji jdk używanej przez społeczność
# 17.0.7, 17.0.8, 20.0.1, 20.0.2, 21.0.0 lub 21.0.2
graalvm_java_version: '21.0.2'
# Podstawowy katalog instalacyjny dla dowolnej dystrybucji GraalVM
graalvm_install_dir: '/opt/graalvm'
# Katalog do przechowywania plików pobranych do instalacji GraalVM na zdalnym serwerze
graalvm_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}"
# Jeśli to jest domyślna instalacja, skrypty profilowe będą pisane w celu ustawienia
# zmiennej środowiskowej GRAALVM_HOME
graalvm_is_default_installation: true
# Jeśli katalog bin GraalVM powinien być dodany do zmiennej środowiskowej PATH
# Efekt tylko wtedy, gdy jest to również domyślna instalacja
graalvm_add_to_path: true
# Miejsce, w którym można znaleźć pakiety instalacyjne GraalVM na lokalnym serwerze
# lokalne pakiety będą używane w pierwszej kolejności przed pobieraniem nowych.
graalvm_local_archive_dir: '{{ playbook_dir }}/files'
# Czy używać pakietów instalacyjnych w lokalnym archiwum (jeśli dostępne)
graalvm_use_local_archive: true
# SHA-256 dla redistribucji GraalVM
graalvm_redis_sha256sum:
# lokalizacja do pobierania GraalVM (np. https://example.com/provisioning/files)
# określ tylko, gdy NIE pobierasz bezpośrednio z github
graalvm_redis_mirror:
# Nazwa pliku dla pliku instalacyjnego redistribucji GraalVM
graalvm_redis_filename: "graalvm-community-jdk-{{ graalvm_java_version }}_linux-{{ graalvm_architecture }}_bin.tar.gz"
# Nazwa grupy faktów Ansible związanych z tą instalacją GraalVM.
#
# Nadpisz, jeśli chcesz używać tej roli więcej niż raz do instalacji wielu wersji
# GraalVM.
#
# np. graalvm_fact_group_name: graalvm_20_0_2
# zmieniłoby fakt dotyczący lokalizacji GraalVM na:
# ansible_local.graalvm_20_0_2.general.home
graalvm_fact_group_name: graalvm
# Czas oczekiwania na odpowiedź pobierania GraalVM w sekundach
graalvm_download_timeout_seconds: 600
# wybierz architekturę, x64 (oznacza amd64) lub aarch64
graalvm_architecture: 'x64'
Obsługiwane wersje GraalVM
Następujące wersje społecznościowego jdk GraalVM są obsługiwane bez dodatkowej konfiguracji
- 17.0.7
- 17.0.8
- 20.0.1
- 20.0.2
- 21.0.0
- 21.0.2
Obsługiwane architektury
- x64 (oznacza amd64)
- aarch64
Przykłady Playbooks
Domyślnie ta rola zainstaluje najnowszą wersję GraalVM CE, która została przetestowana i jest znana, że działa z tą rolą:
- hosts: servers
roles:
- role: arolfes.graalvm
# wyniki:
# nowy plik /etc/profile.d/graalvm.sh
# zawartość:
# GRAALVM_HOME=/opt/graalvm/jdk-21.0.2
# PATH=${GRAALVM_HOME}/bin:${PATH}
instalacja starszej wersji
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_java_version: '17.0.7'
Jeśli nie chcesz, aby GraalVM znajdował się w twojej zmiennej PATH, ustaw graalvm_add_to_path
na false
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_add_to_path: false
jeśli nie chcesz pliku /etc/profile.d/graalvm.sh
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_is_default_installation: false
Możesz zainstalować wiele wersji GraalVM, używając tej roli więcej niż raz:
- hosts: servers
roles:
# pierwsza rola instaluje graalvm-community-jdk-17.0.7
- role: arolfes.graalvm
graalvm_java_version: '17.0.7'
graalvm_is_default_installation: false
graalvm_fact_group_name: 'graalvm_java_17_0_7'
# druga rola instaluje graalvm-community-jdk-21.0.2 i jest ustawiona jako domyślna GraalVM
- role: arolfes.graalvm
Aby przeprowadzić instalację offline, należy podać nieco więcej informacji (tj. graalvm_redis_filename i graalvm_redis_sha256sum). Na przykład, aby przeprowadzić instalację offline graalvm-19.3.2-java11:
# Przed przeprowadzeniem instalacji offline, pobierz
# `graalvm-community-jdk-21.0.2_linux-x64_bin.tar.gz` do
# `{{ playbook_dir }}/files/` na lokalnej maszynie.
- hosts: servers
roles:
- role: arolfes.graalvm
graalvm_java_version: '21.0.2'
graalvm_use_local_archive: true
graalvm_redis_filename: 'graalvm-community-jdk-21.0.2_linux-x64_bin.tar.gz'
graalvm_redis_sha256sum: 'b048069aaa3a99b84f5b957b162cc181a32a4330cbc35402766363c5be76ae48'
Fakty roli
Ta rola eksportuje następujące fakty Ansible do użycia przez inne role:
ansible_local.graalvm.general.java_version
- np.
21.0.2
- np.
ansible_local.graalvm.general.home
- np.
/opt/graalvm/jdk-21.0.2
- np.
Nadpisując graalvm_fact_group_name
, zmienisz nazwy faktów np.:
graalvm_fact_group_name: graalvm_java_21_0_0
Zmienią się wtedy nazwy faktów na:
ansible_local.graalvm_java_21_0_0.general.version
ansible_local.graalvm_java_21_0_0.general.java_version
ansible_local.graalvm_java_21_0_0.general.home
Rozwój i testowanie
Ten projekt wykorzystuje Molecule do wsparcia w rozwoju i testowaniu; rola jest testowana jednostkowo za pomocą Testinfra i pytest.
Aby rozwijać lub testować, należy zainstalować następujące:
Ponieważ powyższe może być trudne do zainstalowania, ten projekt zawiera Molecule Wrapper. Molecule Wrapper to skrypt powłoki, który instaluje Molecule i jego zależności (oprócz Linuxa) i następnie uruchamia Molecule z poleceniem, które mu przekażesz.
Aby przetestować tę rolę przy użyciu Molecule Wrapper uruchom następujące polecenie z katalogu głównego projektu:
./moleculew test
Uwaga: niektóre zależności wymagają uprawnień sudo
do instalacji.
Licencja
MIT
Podziękowania
Wielkie dzięki dla Johna z Gantsign za dostarczenie skryptu do opakowywania molekuł oraz za wspaniałe role ansible dostępne na ansible-galaxy.
Informacje o autorze
Alexander Rolfes
ansible-galaxy install arolfes.graalvm