stackhpc.os-images
UWAGA:
To repozytorium nie jest już utrzymywane - rola została przeniesiona do katalogu Ansible ➡️ https://github.com/stackhpc/ansible-collection-openstack
Obrazy OpenStack
Ta rola generuje obrazy instancji gości przy użyciu disk-image-builder i przesyła je do OpenStack korzystając z modułu os_image
.
Wymagania
Interfejsy API OpenStack powinny być dostępne z docelowego hosta. Dane uwierzytelniające klienta powinny być ustawione w środowisku lub przy użyciu formatu clouds.yaml
.
Musisz używać virtualenv z włączonymi systemowymi pakietami, ponieważ ta rola polega na pakietach Pythona zainstalowanych przez menedżera pakietów, np:
virtualenv --system-site-packages ~/venvs/dib
Zmienne roli
os_images_package_dependencies_extra
: Lista dodatkowych pakietów do zainstalowania na hoście budującym.
os_images_cache
: ścieżka do katalogu, w którym będą przechowywane artefakty budowy. Domyślnie to ~/disk_images
.
UWAGA
: nowe obrazy NIE będą budowane, nawet jeśli dokonano zmian w konfiguracji, jeśli obraz jest już w pamięci podręcznej. Użyj flagi force_rebuild
, aby zastosować nowe zmiany w konfiguracji.
os_images_auth_type
: Typ uwierzytelnienia OpenStack oraz dane logowania. Domyślnie to password
.
os_images_auth
: Punkty uwierzytelnienia OpenStack i dane logowania. Na przykład, słownik o formie:
auth_url
: URL punktu uwierzytelnienia Keystone. Domyślnie toOS_AUTH_URL
.project
: Tenant/projekt OpenStack. Domyślnie toOS_TENANT_NAME
.username
: Nazwa użytkownika OpenStack. Domyślnie toOS_USERNAME
.password
: Hasło OpenStack. Domyślnie toOS_PASSWORD
.
os_images_region
: Definiuje region, w którym będą przesyłane obrazy. Domyślnie to None.
os_images_cacert
to opcjonalna ścieżka do pakietu certyfikatów CA.
os_images_interface
to typ URL punktu dostępu używanego do pobierania z katalogu usług. Może to być jedno z public
, admin
lub internal
.
os_images_list
to lista słowników YAML, gdzie elements
i image_url
są wykluczające, a każdy z nich zawiera:
name
: nazwa obrazu, która ma być użyta w OpenStack.elements
: lista elementów diskimage-builder do włączenia w obraz.image_url
: URL do lokalizacji obrazu w Internecie.checksum
: Suma kontrolna do walidacji pobranego obrazu. Format::<suma kontrolna|url>. env
: (opcjonalnie) zmienne środowiskowe do zdefiniowania dla parametrów diskimage-builder. To jest słownik o formieKLUCZ: WARTOŚĆ
.packages
: (opcjonalnie) lista pakietów do zainstalowania w obrazie.size
: (opcjonalnie) rozmiar systemu plików obrazu.properties
: (opcjonalnie) słownik właściwości do ustawienia na obrazie glance. Typowe właściwości obrazu są dostępne tutaj.type
: (opcjonalnie) typ obrazu. Domyślnie w DIB to qcow2. Format obrazów dostępny jest tutaj.force_rebuild
: (opcjonalnie) flaga boolowska wskazująca, czy obraz zawsze powinien być budowany (nawet jeśli istniejący obraz o tej samej nazwie został już zbudowany). Obrazy w glance będą zastępowane, jeślios_images_upload
jest ustawione naTrue
. Domyślnie toos_images_force_rebuild
, jeśli nie jest ustawione.is_public
: (opcjonalnie) czy obraz powinien być widoczny dla wszystkich projektów, czy pozostawać prywatny.owner
: (opcjonalnie) identyfikator projektu, który powinien być właścicielem przesłanego obrazu.
os_images_common
: Zestaw elementów, które należy uwzględnić w każdym z wymienionych obrazów. Domyślnie to cloud-init enable-serial-console stable-interface-names
.
os_images_dib_pkg_name
: Opcjonalnie dostosuj nazwę przekazywaną do modułu ansible.builtin.pip przy instalacji diskimage-builder. Można to wykorzystać do instalacji diskimage-builder z kontroli wersji.
os_images_dib_version
: Opcjonalnie ustaw wersję diskimage-builder do zainstalowania. Domyślnie nie jest ograniczone.
os_images_git_elements
: Opcjonalna lista elementów do pobrania z githuba, wdrożenia lokalnie w ramach obrazów. Przekaż listę słowników z następującymi parametrami:
repo
: URL repozytorium git do sklonowania (jeśli nie jest jeszcze obecne)local
: lokalna ścieżka do klonowania gitversion
: opcjonalny odnośnik git (gałąź, tag, hash) do klonowania. Domyślnie toHEAD
elements_path
: opcjonalna ścieżka względna do elementów w obrębie repozytorium.
os_images_elements
: Opcjonalna lista ścieżek dla specyficznych dla witryny elementów DIB.
os_images_upload
: Czy przesłać zbudowane obrazy do Glance. Domyślnie to True
.
os_images_force_rebuild
: Czy wymusić odbudowę obrazu DIB. Obrazy w Glance będą zastępowane nowo zbudowanym obrazem, jeśli os_images_upload
jest ustawione na True
. Domyślnie to False
.
os_images_public
: Czy przesłane obrazy są publiczne. Domyślnie to True
- wymaga to uprawnień administratora.
os_images_venv
: Ścieżka do virtualenv, w którym będą instalowane zależności Pythona do przesyłania obrazów.
os_images_dib_venv
: Ścieżka do virtualenv, w którym będzie zainstalowane DIB do budowy obrazów.
os_images_promote
: Czy wycofać stare i promować nowe obrazy. Domyślnie to False
.
os_images_build
: Czy zbudować obrazy.
os_images_name_suffix
: Przyrostek obrazu, który zostanie usunięty podczas promowania obrazu, np. -rc, -dev, -test itp. Obowiązkowe dla funkcji promowania. Domyślnie pusta.
os_images_hide
: Czy ukryć obrazy na liście Glance. Ukrywanie obrazów jest dostępne jako opcja w procesie wycofywania/promowania obrazów. Domyślnie to False
.
Zależności
Przykładowy playbook
Poniższy playbook generuje obraz gościa i przesyła go do OpenStack:
---
- name: Generowanie obrazu gościa i przesyłanie
hosts: openstack
roles:
- role: stackhpc.os-images
os_images_auth:
auth_url: "{{ lookup('env','OS_AUTH_URL') }}"
username: "{{ lookup('env','OS_USERNAME') }}"
password: "{{ lookup('env','OS_PASSWORD') }}"
project_name: "{{ lookup('env','OS_TENANT_NAME') }}"
os_images_list:
- name: FedoraCore
elements:
- fedora
- selinux-permissive
- alaska-extras
env:
DIB_ALASKA_DELETE_REPO: "y"
DIB_ALASKA_PKGLIST: "pam-python pam-keystone"
- name: FedoraAtomic27
image_url: https://ftp.icm.edu.pl/pub/Linux/dist/fedora-alt/atomic/stable/Fedora-Atomic-27-20180326.1/CloudImages/x86_64/images/Fedora-Atomic-27-20180326.1.x86_64.qcow2
properties:
os_distro: fedora-atomic
type: qcow2
Informacje o autorze
- Stig Telfer (stig@stackhpc.com)
Role to generate guest instance images and upload to OpenStack
ansible-galaxy install stackhpc.os-images