stackhpc.cluster-infra
OpenStack Klaster jako Usługa
Ta rola generuje infrastrukturę OpenStack zdefiniowaną przez oprogramowanie, która może być używana do tworzenia złożonych topologii aplikacji na żądanie. Do osiągnięcia tego celu wykorzystuje się najnowszą wersję OpenStack Heat.
Wymagania
API OpenStack powinny być dostępne z docelowego hosta. Wymagana jest wersja OpenStack Newton lub nowsza. Kredencje klienta powinny być ustawione w środowisku lub przy użyciu formatu clouds.yaml
.
W zakresie pakietów Pythona wymagane są:
- ansible
- jmespath (wymagany przez filtr
json_query
)
Zmienne Roli
cluster_venv
: Opcjonalna ścieżka do wirtualnego środowiska Pythona, w którym zainstalowany jest pakiet shade
.
cluster_auth_type
: Opcjonalna nazwa wtyczki uwierzytelniającej OpenStack do użycia.
cluster_auth
: Opcjonalny słownik zawierający informacje uwierzytelniające.
cluster_cloud
: Opcjonalna nazwa chmury konfiguracyjnej klienta OpenStack do użycia.
cluster_state
: Pożądany stan klastra, jeden z present
, absent
lub query
. Domyślna wartość to present
. Jeśli wartość to query
, klaster nie zostanie zaktualizowany, ale jego konfiguracja zostanie zapytana, a plik inwentarza Ansible zostanie wygenerowany.
cluster_name
: Nazwa, która ma być przypisana stosowi Heat. Domyślnie to cluster
.
cluster_environment_nodenet
: Plik środowiskowy określający zasób do użycia dla zasobu sieciowego per-węzeł, Cluster::NodeNet
. UWAGA: Ta opcja jest przestarzała i zaleca się korzystanie z zasobów do definiowania nodenet_resource
w grupach oraz globalnego domyślnego zasobu za pomocą nodenet_resource
w cluster_params
.
cluster_environment_instance
: Plik środowiskowy określający zasób do użycia dla instancji, Cluster::Instance
. UWAGA: Ta opcja jest przestarzała, zaleca się korzystanie z zasobów dla określonych grup poprzez dodanie definicji dla node_resource
do grupy oraz globalnego domyślnego zasobu poprzez zdefiniowanie node_resource
w cluster_params
.
cluster_environment
: Lista plików środowiskowych do użycia podczas tworzenia stosu Heat.
cluster_params
: Parametry, które są przekazywane do stosu Heat.
cluster_prefix
: Prefiks nazwy do wykorzystania przy tworzeniu nazw hostów instancji.cluster_groups
: Lista grup w formacie JSON, z których każda jest opisana przez słownik, zawierający następujące elementy:name
: Nazwa grupy.flavor
: Nazwa lub UUID zasobu instancji do użycia przy wdrażaniu tej grupy.image
: Nazwa lub UUID obrazu do użycia przy wdrażaniu tej grupy.user
: Nazwa użytkownika chmury, dla którego udostępniono klucze SSH i skonfigurowano sudo bez hasła. Mogą to być na przykładcentos
,debian
lububuntu
.num_nodes
: Liczba węzłów do utworzenia w tej grupie.volume_size
: Opcjonalny rozmiar w GB woluminów używanych do uruchamiania instancji w tej grupie, gdy używany jest plik środowiskowyinstance-w-volume.yaml
.volume_type
: Opcjonalny typ woluminów używanych do uruchamiania instancji w tej grupie, gdy używany jest plik środowiskowyinstance-w-volume.yaml
.
cluster_keypair
: Nazwa pary kluczy SSH do użycia w dostępie do instancji.cluster_az
: Nazwa strefy dostępności, w której mają zostać utworzone instancje.cluster_config_drive
: Czy dostarczyć metadane za pomocą napędu konfiguracyjnego. Domyślnie tofalse
.cluster_net
: Lista sieci w formacie JSON, z których każda jest opisana przez słownik, zawierający następujące elementy:net
: Nazwa lub UUID sieci neutronowej, do której mają być podłączone instancje.subnet
: Nazwa lub UUID podsieci neutronowej, do której mają być podłączone instancje.security_groups
: Opcjonalna lista nazw lub UUID grup zabezpieczeń, które mają być dodane do portów instancji. Grupy zabezpieczeń mogą być obecne lub nieobecne w każdej wymienionej sieci.floating_net
: Opcjonalna nazwa lub UUID sieci neutronowej, do której mają być podłączone flotujące adresy IP, gdy używane są zasobyCluster::NodeNet1WithFIP
lubCluster::NodeNet2WithFIP
.
node_resource
: Nazwa zasobu z biblioteki niestandardowych nazw zasobów węzłów. Ten typ zasobu jest stosowany jako domyślny dla grup, które nie zastępują go konkretnym typem zasobu węzła.Ważne opcje to:
Cluster::Instance
: Instancja z tymczasowym magazynem. To jest wartość domyślna.Cluster::InstanceWithVolume
: Instancja zaopatrzona w wolumin Cinder.
nodenet_resource
: Nazwa zasobu z biblioteki niestandardowych zasobów sieciowych dla sieci węzłów. Ten typ zasobu jest używany dla grup, które nie określają konfiguracji sieci dla instancji grupy.Ważne opcje to:
Cluster::NodeNet1
: Jedna sieć bez przypisanego flotującego adresu IP. To jest wartość domyślna.Cluster::NodeNet1WithFIP
: Jedna sieć z przydzielonym flotującym adresem IP, przypisanym do portu.Cluster::NodeNet1WithPreallocatedFIP
: Jedna sieć z flotującym adresem IP (branym z prealokowanej i dostarczonej listy), przypisanym do portu.Cluster::NodeNet2
: Dwa interfejsy sieciowe. Używane są pierwsze dwie sieci wymienione wcluster_net
.Cluster::NodeNet2WithFIP
: Dwa interfejsy sieciowe. Używane są pierwsze dwie sieci wymienione wcluster_net
. Flotujący adres IP zostanie przydzielony z pierwszej sieci i przypisany do instancji.Cluster::NodeNet2WithFIPSRIOV
: Dwa interfejsy sieciowe. Pierwszy interfejs ma przypisany flotujący adres IP (korzystając zfloating_net
isecurity_groups
). Drugi interfejs jest skonfigurowany jako zasób portu SR-IOV, dla wysokowydajnych sieci wewnętrznych. Używane są pierwsze dwie sieci wymienione wcluster_net
.Cluster::NodeNet3
: Trzy interfejsy sieciowe. Używane są pierwsze trzy sieci wymienione wcluster_net
.
router_networks
: Opcjonalna lista CIDR podsieci IP, które powinny być dodane jako dozwolone sieci. Jest to potrzebne, jeśli port jest powiązany z węzłem bramowym, który wykonuje routing IP między podsieciami. Powinny one odpowiadać formatowiallowed_address_pairs
tutaj. Prosta, luźna konfiguracja dlarouter_networks
mogłaby wyglądać:
router_networks:
- ip_address: "0.0.0.0/0"
cluster_inventory
: Po wdrożeniu generowany jest plik inwentarza, który może być używany w późniejszej konfiguracji z wykorzystaniem Ansible.
cluster_roles
: Zestaw przypisania grup, które zostaną dodane do pliku inwentarza Ansible. Ten parametr jest listą słowników o następującej strukturze:
name
: Nazwa grupy do zdefiniowania w inwentarzu Ansible.groups
: Lista grup wybranych z obiektów słownikowych dostarczonych docluster_groups
, powyżej.
cluster_group_vars
: Słownik mapujący grupy inwentarza na zmienne grupowe, które mają być zdefiniowane dla danej grupy. Zmienne grupowe dla każdej grupy są definiowane jako słownik mapujący nazwy zmiennych na ich wartości.
cluster_environment_group
: Opcjonalna nazwa grupy Ansible, do której wszystkie hosty klastra i localhost będą dodane. Może to być przydatne, jeśli istnieje pojedyncza grupa reprezentująca środowisko, takie jak deweloperskie/stagingowe/producencyjne.
Zależności
Ta rola wymaga zainstalowania pakietu Pythona shade
na docelowym hoście. Pakiet może być zainstalowany w wirtualnym środowisku Pythona, w takim przypadku ścieżka do wirtualnego środowiska powinna być określona w zmiennej cluster_venv
.
Rola stackhpc.os-shade może być używana do zainstalowania pakietu Pythona shade
.
Przykład Księgi
Następująca księga tworzy stos Heat dla klastra zawierającego grupę login
oraz grupę compute
.
---
# Ta księga wykorzystuje moduły Ansible OpenStack do utworzenia klastra
# przy użyciu licznych instancji węzłów obliczeniowych baremetalowych i konfiguruje go
# dla partycji SLURM
- hosts: openstack
roles:
- role: stackhpc.cluster-infra
cluster_name: "openhpc"
cluster_params:
cluster_prefix: "ohpc"
cluster_keypair: "admin_rsa"
cluster_net:
- net: "internal"
subnet: "internal"
floating_net: "external"
security_groups:
- "default"
- "slurm"
cluster_groups:
- name: "login"
flavor: "compute-B"
image: "CentOS7-OpenHPC"
num_nodes: 1
node_resource: "Cluster::InstanceWithVolume"
node_resource: "Cluster::NodeNet1WithFIP"
- name: "compute"
flavor: "compute-A"
image: "CentOS7-OpenHPC"
num_nodes: 16
cluster_group_vars:
cluster:
ansible_user: centos
Informacje o autorach
- Stig Telfer (stig@stackhpc.com)
- Bharat Kunwar (bharat@stackhpc.com)
This role generates software-defined OpenStack infrastructure that can be used for generating complex application topologies on demand.
ansible-galaxy install stackhpc.cluster-infra