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_uploadjest 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 toHEADelements_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