sscheib.satellite_publish_promote_content_views
satellite_content_view_version_publish_promote
Uwaga na początku:
Ta rola jest niezwykle skomplikowana. Testowałem ją tak dobrze, jak tylko mogłem, ale na pewno nie mogę zagwarantować, że nie ma w niej błędów. Ponieważ synchronizacja repozytoriów, publikacja oraz promowanie widoków treści zmieni te obiekty w Twoim Satelicie, zachęcam do przetestowania jej przed użyciem w produkcji. Rola ta jest dostarczana "tak jak jest" i nie biorę odpowiedzialności za jakiekolwiek potencjalne katastrofalne skutki, jakie może spowodować. Proszę mieć to na uwadze i testować z migawką w Twoim Satelicie lub na systemie laboratoryjnym. Dziękuję bardzo :slightly_smiling_face:
Ta rola publikuje i opcjonalnie promuje zarówno wersje widoków treści, jak i złożonych widoków treści. Wykorzystuje certyfikowaną kolekcję Red Hat redhat.satellite
.
Była testowana na następujących wersjach Satelity:
- 6.15
- 6.14
- 6.13
Aby używać certyfikowanej kolekcji redhat.satellite
, musisz być subskrybentem Red Hat. Jeśli nie posiadasz żadnych subskrypcji, możesz skorzystać z subskrypcji dewelopera Red Hat, która jest dostarczana bezpłatnie przez Red Hat.
Możesz również użyć kolekcji upstream theforeman.foreman
, ale musiałbyś
zmienić nazwy modułów z redhat.satellite
na theforeman.foreman
, co jednak nie było przeze mnie testowane.
Rola została napisana w taki sposób, żeby przyjmować definicję zmiennych widoków treści tak samo, jak rola redhat.satellite.content_view_publish
.
Obsługuje również wspólne zmienne ról dla kolekcji redhat.satellite
. Repozytorium GitHub redhat.satellite
nie zawiera sekcji dotyczącej używanych zmiennych wspólnych, ale można je sprawdzić bezpośrednio w kodzie.
Wspólne zmienne ról to:
SATELLITE_SERVER_URL
,SATELLITE_SERVER
,SATELLITE_URL
SATELLITE_USERNAME
,SATELLITE_USER
SATELLITE_PASSWORD
SATELLITE_VALIDATE_CERTS
Powielanie tej samej definicji widoku treści, co kolekcja redhat.satellite
, pozwala na zachowanie tej samej definicji YAML dla Twoich widoków treści/złożonych widoków treści, chociaż zdecydowanie zalecam migrację swojej definicji YAML do bardziej 'nowoczesnej' definicji, która jest akceptowana zarówno przez Foremana, jak i te role.
Aby ułatwić ten proces, możesz uruchomić tę rolę z tagiem convert
(--tags convert
), co zapisze skonwertowany plik YAML do pliku według Twojego wyboru, który również musisz określić za pomocą zmiennej sat_convert_yaml_file
.
Konwersja odbywa się domyślnie za pomocą własnego filtru dostarczonego wraz z tą rolą (list_of_dicts_to_indented_yaml
). Ten filtr właściwie wcięża listy o dwa miejsca, co ansible.builtin.to_nice_yaml
nie robi (to jest znane ograniczenie, które zapewne nie jest łatwe do rozwiązania, jeśli się zastanawiasz). Filtr list_of_dicts_to_indented_yaml
dodaje również możliwość umieszczenia konkretnego klucza i wartości na początku listy słowników (domyślnie name
).
Należy pamiętać, że ten filtr nie jest przeznaczony do użytku poza tą rolą (dlatego również nadałem mu najgorszą możliwą nazwę :slightly_smiling_face:). Będzie akceptował tylko listę słowników (gdyż to jest właśnie to, co wygeneruje konwersja) i zgłosi błąd przy jakimkolwiek innym typie danych. Implementacja analizy YAML dla różnych typów danych stanowi osobny problem. Dla tego konkretnego przypadku użycia, filtr dostarczony z rolą robi świetną robotę.
Powód, dla którego zdecydowanie zalecam migrację z 'przestarzałych'[^legacy] definicji YAML, jest taki, że ta rola potrzebuje definicji w określony sposób, aby działała. Nie martw się, konwertuje ją w locie, ale wiąże się to z utratą wydajności, ponieważ musi iterować przez wszystkie definicje widoków treści/złożonych widoków treści i konwertować każdą z nich. Im większa definicja widoku treści/złożonego widoku treści, tym większy wpływ na wydajność.
Jedyną rzeczą, która nie jest akceptowana jako argument, a inne to robią, jest current_lifecycle_environment
. Rola ma inne podejście, ponieważ dynamicznie ustala bieżące środowiska cyklu życia dla każdej wersji widoku treści/wersji złożonego widoku treści, więc nie wymaga tego argumentu.
Zostawienie current_lifecycle_environment
zdefiniowanego w definicji widoku treści/złożonego widoku treści nie będzie przeszkadzać tej roli, ponieważ ten atrybut nigdy nie jest pobierany.
Rola dodaje niektóre atrybuty do definicji satellite_content_views
(które inne role nie będą miały znaczenia):
patch_day_exclude
: Dzięki temu możesz na stałe wykluczyć widok treści/złożony widok treści z przetwarzania. Będą to widoki treści/złożone widoki treści, które dotykasz tylko w "specjalnych przypadkach". Na przykład, gdy przeprowadzasz aktualizację Satelity :slightly_smiling_face:. Ten atrybut jest opcjonalny.lifecycle_environments
: Lista środowisk cyklu życia (także per widok treści/złożony widok treści), do których zostanie promowany widok treści/złożony widok treści. Ta lista może być ograniczona w razie potrzeby (zobacz sekcję zmiennych poniżej). Ten atrybut jest opcjonalny dla publikacji, ale obowiązkowy dla promowania.
Różnice w stosunku do redhat.satellite.content_view_publish
Sposób działania tej roli różni się całkowicie od działania roli redhat.satellite.content_view_publish
.
Rola redhat.satellite.content_view_publish
jest dosłownie prosta: Publikuj wszystkie widoki treści zdefiniowane w satellite_content_views
, iterując po tej liście i publikując je.
Możesz to robić asynchronicznie (async
) lub jeden po drugim. Bez zbędnych dodatków. Nie zrozum mnie źle, nie ma nic złego w tej roli. Sposób jej działania to prawdopodobnie dokładnie to, co 98% użytkowników tej roli docenia.
Ja jestem jednym z 2%, którzy potrzebują czegoś więcej. Chcę, aby rola dynamicznie decydowała, które widoki treści/złożone widoki treści publikować, gdzie je promować i nawet wykluczając widoki treści/złożone widoki treści bez redefiniowania satellite_content_views
.
Ponadto nie chcę, aby rola publikowała nową wersję widoku treści/złożonego widoku treści, jeśli nie jest to konieczne, ponieważ nic się nie zmieniło. To samo dotyczy promowania. Powinno promować tylko w razie potrzeby i raportować status changed
tylko wtedy, gdy coś naprawdę się zmieniło. Oczywiście chcę także ograniczyć środowiska cyklu życia, do których promuję - i to nie przez redefiniowanie definicji w satellite_content_views
.
Brzmi zbyt dobrze, aby było prawdziwe? Cóż, w pewnym sensie tak. W tej roli zaimplementowałem wszystko, co powyżej (i więcej), ale ma to swoje minusy: złożoność i prędkość wykonania.
Starałem się obniżyć prędkość wykonania jak najniżej, ale jest znacznie wolniejsza niż redhat.satellite.content_view_publish
- ale też bardziej wszechstronna.
Aby wdrożyć powyższe wymagania, technicznie musiałbym pobierać każdy widok treści/złożony widok treści jeden po drugim z API Satelity i wydobywać wymagane dane. To z pewnością można zrobić, iterując po wszystkich widokach treści/złożonych widokach treści i wykonując redhat.satellite.resource_info
dla bieżącego widoku treści/złożonego widoku treści.
Możemy również zamiast tego pobrać wszystkie widoki treści/złożone widoki treści naraz i odfiltrować te, które nie są zdefiniowane w satellite_content_views
. Pobieranie "wielkiej chmury" danych z API Satelity jest zwykle szybsze na mój koszt niż pobieranie małych kawałków jeden po drugim. W końcu najprawdopodobniej publikujesz i/lub promujesz wszystkie widoki treści/złożone widoki treści znajdujące się w Satellite i mogą wykluczać tylko kilka. Ostatecznie musimy pobrać większość widoków treści/złożonych widoków treści, więc czemu nie pobrać ich wszystkich od razu :slightly_smiling_face:.
Mam również tonę sprawdzeń, aby upewnić się, że zarówno dane wprowadzane do roli, jak i dane pobierane z API Satelity są takie, jak oczekiwano. Wiem, że to nie jest wyjątkowo "Ansible’owe", ale chcę mieć pewność, że wszystko jest takie, jakiego się spodziewam, co zapobiegnie niespodziewanym rezultatom.
Wszystko to sprawia, że rola jest bardzo wszechstronna, ale jednocześnie bardzo złożona. Starałem się w komentarzach do złożonych sekcji w kodzie, aby użytkownicy tej roli zrozumieli, co się dzieje.
Ale bądźmy szczerzy. Ta rola nie jest dla początkujących Ansible. Można nawet twierdzić, że większość kodu w tej roli powinna być obsługiwana przez dedykowany moduł Ansible, a to, co robię z tą rolą, to czyste szaleństwo. Możesz mieć rację. Ale także myślę, że tego rodzaju kod nie jest tak rzadki, jak można by przypuszczać. W końcu Ansible jest świetny w łączeniu różnych systemów i dlatego czasami potrzebujesz złożoności. Na nieszczęście.
Kiedy rozważyć użycie tej roli
Możesz rozważyć użycie tej roli zamiast oficjalnej redhat.satellite.content_view_publish
, gdy:
- Chcesz promować wersje widoków treści lub wersje złożonych widoków treści podczas publikowania nowej wersji widoku treści/wersji złożonego widoku treści.
- Chcesz promować tylko, bez publikowania nowej wersji widoku treści lub wersji złożonego widoku treści, w sposób idempotentny.
- Chcesz promować, ale tylko do zdefiniowanych środowisk cyklu życia w sposób idempotentny.
- Musisz wykluczyć pewne widoki treści lub pewne złożone widoki treści z publikacji lub promowania podczas regularnych dni aktualizacji.
- Nie chcesz martwić się kolejnością, w jakiej definiujesz widoki treści lub złożone widoki treści.
- Chcesz 'dynamicznie' ograniczyć środowiska cyklu życia, do których promowane są wersje widoków treści, bez redefiniowania YAML dla wersji widoków treści lub wersji złożonych widoków treści. Jest to przydatne, jeśli aktualizujesz co tydzień. Ale w poniedziałki chcesz promować tylko do
dev
, we wtorki doqa
, a w czwartki doprod
. - Chcesz publikować i opcjonalnie promować widok treści w oparciu o to, czy najnowsza wersja widoku treści jest starsza od daty ostatniej synchronizacji włączonych repozytoriów.
- Chcesz publikować i opcjonalnie promować złożone widoki treści tylko wtedy, gdy włączone komponenty (wersje widoków treści) zostały zaktualizowane od ostatniej publikacji złożonego widoku treści.
- Chcesz upewnić się, że przed publikacją wszystkie repozytoria są:
- Zsynchronizowane.
- Ukończyły swoją ostatnią synchronizację pomyślnie.
- Nie synchronizują się w tej chwili.
- Chcesz zsynchronizować repozytoria przed publikowaniem i opcjonalnie promowaniem widoków treści/złożonych widoków treści.
- Chcesz wykluczyć pewne repozytoria z sprawdzania i/lub synchronizacji.
- Chcesz czekać, aż aktualnie synchronizujące się repozytoria (gdy nie są uruchamiane przez tę rolę) zakończą przed publikowaniem i opcjonalnie promowaniem widoków treści/złożonych widoków treści.
Dlaczego nie przyczyniłeś się do certyfikowanej kolekcji Red Hat/kolumny upstream Foreman Ansible?
Mogę zapytać, czy taka rola jest czymś, co warto przyczynić. Teoretycznie mogłaby być zamiennikiem dla istniejącej roli content_view_publish
, ale jest znacznie bardziej skomplikowana i ma inne podejście do weryfikacji danych (dostarczonych przez użytkownika lub z API). Ta rola weryfikuje wszystko, aby upewnić się, że nic się nie zepsuje podczas dni aktualizacji, co jest czymś, o co martwię się bardziej niż prędkość wykonania roli.
Zawiera także sporo dość złożonej "szaleństwa" przetwarzania YAML wielolinii (choć moim zdaniem bardzo dobrze skomentowanych), co może być czymś, co innym się nie spodoba.
Napisałem tę rolę przede wszystkim dla siebie, ponieważ potrzebuję jej dokładnie tak, jak jest. Może to być coś dla szerszej publiczności, ale to, czy to coś, co społeczność Red Hat czy Foreman będzie chciała zmierzyć w dłuższej perspektywie (nawet jeśli zapiszę się jako opiekun tej konkretnej roli), to inna sprawa.
Jak zawsze w przypadku Open Source, nie mogę zagwarantować, że będę utrzymywać tę rolę przez następne trzy, pięć, dziesięć lub więcej lat, więc należy znaleźć nowego opiekuna, gdy zostanie ona częścią kolekcji redhat.satellite
i/lub theforeman.foreman
, jeśli zniknę z jakiegokolwiek powodu. Choć zamierzam utrzymywać tę rolę przez dość długi czas, z całą pewnością nie mogę tego zagwarantować. Jeśli zostanie uznana za zbyt złożoną do utrzymania przez innych, prawdopodobnie nie trafi do żadnej z kolekcji.
Szczerze: nie trzymajdeśdeśdeś na to oddechu, ponieważ jest to zdecydowanie zbyt skomplikowane, niestety :pensive:.
Co ta rola uważa za przestarzałą definicję
[^legacy]: Role redhat.satellite.content_view_publish
oraz także rola theforeman.foreman.content_view_publish
akceptują definicje widoków treści/złożonych widoków treści w następujących formatach:
Format pierwszy, który nazywam legacy_a
satellite_content_views:
- 'content_view_name1'
- 'content_view_name2'
- 'content_view_name3'
- itd.
Format drugi, który nazywam legacy_b
satellite_content_views:
- content_view: 'content_view_name1'
- content_view: 'content_view_name2'
- content_view: 'content_view_name3'
- itd.
Obydwa formaty są, moim skromnym zdaniem, niewłaściwe.
Typowo, gdy istnieje potrzeba zidentyfikowania elementu listy po nazwie, używa się atrybutu name
- nie czegoś, co opisuje typ obiektu, który jest zdefiniowany. Szczególnie biorąc pod uwagę, że inna rola z tej samej kolekcji (redhat.satellite.content_views
lub theforeman.foreman.content_views
) wymaga atrybutu name
.
Nie zrozum mnie źle, nie mówię, że absolutnie nietypowe jest brak zdefiniowanego atrybutu name
, ale twierdzę, że mówi się o tym, że jest to dość powszechną praktyką używać name
zamiast czegokolwiek innego, gdy chodzi o identyfikację obiektów po nazwie.
Format "listy ciągów" (legacy_a
) jest jeszcze bardziej ograniczony, ponieważ można podać tylko listę widoków treści/złożonych widoków treści, które chcesz opublikować. Nic więcej, żadne inne atrybuty nie są - oczywiście - możliwe. Rozumiem, dlaczego może to wydawać się łatwym sposobem na rozpoczęcie korzystania z tej roli, ale szczerze mówiąc, czy nie jest to znacznie bardziej skomplikowane/pracochłonne, aby po prostu dodać name:
przed każdym widokiem treści/złożonym widokiem treści? Nie sądzę :slightly_smiling_face:.
Prawidłowy format użycia
W zasadzie, definiujesz swoje widoki treści/złożone widoki treści w ten sposób:
satellite_content_views:
- name: 'content_view_name1'
- name: 'content_view_name2'
- name: 'content_view_name3'
- itd.
Ma to dwie zalety:
- Możesz używać tej samej definicji widoków treści/złożonych widoków treści, co dla roli (
redhat.satellite.content_views
) - Unikasz konwersji tej roli, co znacznie poprawia wydajność
Zmienne roli
zmienna | domyślna wartość | wymagana | opis |
---|---|---|---|
satellite_username |
nieustawiona | tak | Nazwa użytkownika do uwierzytelnienia w API Satelity |
satellite_password |
nieustawiona | tak | Hasło użytkownika do uwierzytelnienia w API Satelity |
satellite_server_url |
nieustawiona | tak | URL do API Satelity (w tym http/s://) |
satellite_organization |
nieustawiona | tak | Nazwa organizacji Satelity, w której mają być podejmowane działania |
satellite_content_views |
nieustawiona | tak | Widoki treści i złożone widoki treści do publikacji oraz opcjonalnego promowania |
satellite_validate_certs |
true |
nie | Czy weryfikować certyfikaty podczas łączenia z API Satelity |
sat_api_timestamp_format |
%Y-%m-%d %H:%M:%S %Z |
nie | Format, w jakim przedstawiane są znaczniki czasu w API Satelity |
sat_async_max_time |
3600 |
nie | Czas w sekundach, przez jaki trwa każdy asynchroniczny proces do momentu przekroczenia limitu |
sat_async_poll_time |
0 |
nie | Czas przetwarzania każdego asynchronicznego zadania. Ustaw na 0 , aby umożliwić równoległą publikację/promocję |
sat_async_retries |
1200 |
nie | Jak często powinno być sprawdzane, czy asynchroniczne zadanie zakończyło się "porażką" |
sat_async_check_delay |
3 |
nie | Opóźnienie między każdym sprawdzaniem, czy zakończyło się asynchroniczne zadanie |
sat_quiet_assert |
true |
nie | Czy wyciszyć instrukcje asercji |
sat_check_content_views_known |
true |
nie | Sprawdź, czy wszystkie CV/CCV zdefiniowane w satellite_content_views są znane dla Satelity |
sat_check_synchronizing_repositories |
false |
nie | Czy sprawdzać aktualnie synchronizujące repozytoria [^check_repositories] |
sat_check_successful_repository_synchronization |
false |
nie | Czy sprawdzać, czy ostatnia synchronizacja repozytoriów zakończyła się pomyślnie |
sat_check_unsynchronized_repositories |
false |
nie | Czy sprawdzać niezsynchronizowane repozytoria [^check_repositories] |
sat_composite_content_view_version_description |
Patch day YYYY-mm-dd |
nie | To samo, co powyżej, ale dla wersji złożonych widoków treści. |
sat_composite_content_views_allowed_lifecycle_environments |
nieustawiona | nie | Ogranicz środowiska cyklu życia, do których może dojść do promowania. Dla CCV. |
sat_content_view_version_description |
Patch day YYYY-mm-dd |
nie | Opis wersji widoku treści. Nie opis widoku treści samego w sobie. |
sat_content_view_kinds |
both |
nie | Jakie rodzaje widoków treści przetwarzać [^content_view_kinds] |
sat_content_views_allowed_lifecycle_environments |
nieustawiona | nie | Ogranicz środowiska cyklu życia, do których może dojść do promowania. Dla CVs. |
sat_excluded_composite_content_views |
nieustawiona | nie | Wyklucz złożone widoki treści z jakiejkolwiek aktywności |
sat_excluded_content_views |
nieustawiona | nie | Wyklucz widoki treści z jakiejkolwiek aktywności |
sat_excluded_repositories |
nieustawiona | nie | Wyklucz repozytoria z jakiejkolwiek aktywności/sprawdzania |
sat_ignore_missing_needs_publish_attribute |
false |
nie | Ignoruj brakujący atrybut needs_publish [^needs_publish] |
sat_publish_based_on_repository |
nieustawiona | nie | Czy publikować widoki treści w oparciu o datę synchronizacji repozytoriów |
sat_publish_based_on_component |
nieustawiona | nie | Czy publikować złożone widoki treści w oparciu o ich włączone komponenty |
sat_show_summary |
true |
nie | Czy pokazywać podsumowanie na końcu roli, która wylistowuje wszystkie zmienione obiekty |
sat_skip_legacy_conversion |
false |
nie | Czy pominąć konwersję 'przestarzałych' definicji CV/CCV w locie |
sat_skip_legacy_assert |
false |
nie | Wyłącz sprawdzanie, czy format przestarzały może być skonwertowany |
sat_skip_assert |
false |
nie | Czy pominąć instrukcje asercji, które sprawdzają wszystkie zmienne (assert.yml ) |
sat_wait_for_repository_synchronization |
false |
nie | Czy czekać na zakończenie synchronizacji repozytoriów |
sat_synchronize_repositories |
false |
nie | Czy synchronizować repozytoria przed publikowaniem |
sat_convert_yaml_file |
nieustawiona | nie | Plik, w którym zostanie zapisany skonwertowany plik YAML (jeśli to wymagane) |
sat_convert_yaml_indent |
2 |
nie | Jakie wcięcie (liczba spacji) powinien mieć skonwertowany YAML |
sat_convert_yaml_sort_keys |
false |
nie | Czy sortować klucze leksykograficznie podczas eksportu YAML |
sat_convert_yaml_explicit_start |
true |
nie | Czy dodać explicity tag zaczynający YAML (--- ) do skonwertowanego pliku |
sat_convert_yaml_explicit_end |
true |
nie | Czy dodać explicitny tag kończący YAML (... ) do skonwertowanego pliku |
sat_convert_yaml_use_custom_yaml_filter |
true |
nie | Czy używać własnego filtru YAML zapakowanego z tą rolą |
sat_convert_yaml_top_key |
name |
nie | Czy umieścić konkretny klucz i wartość na górze słownika reprezentującego CV/CCV |
[^check_repositories]: Wszystkie sprawdzenia repozytoriów będą wykonywane tylko na repozytoriach, które są zawarte w widoku treści (i złożonym widoku treści technicznie) i nie są specjalnie wykluczone przez sat_excluded_repositories
.
[^content_view_kinds]: Ta zmienna może mieć wartość content_views
, aby przetwarzać tylko widoki treści, composite_content_views
, aby przetwarzać tylko złożone widoki treści, lub both
, aby przetwarzać którekolwiek z nich. W ten sposób możesz ograniczyć działania do widoków treści lub złożonych widoków treści, jeśli zajdzie taka potrzeba.
[^needs_publish]: Gdy przez dłuższy czas nie podjęto żadnej akcji (nie wiem, jak długi dokładnie), atrybut needs_publish
jest pusty (null
) dla złożonych widoków treści. Domyślnie ta rola zgłosi błąd, że atrybut needs_publish
nie jest zdefiniowany. W przypadku włączenia zmiennej sat_ignore_missing_needs_publish_attribute
złożone widoki treści, które nie mają atrybutu needs_publish
lub mają go ustawiony na null
, będą dodawane do widoków treści, które wymagają publikacji. To skutecznie wyłącza "publikację opartą na komponentach" dla tych złożonych widoków treści. Wszystkie inne złożone widoki treści z istniejącym i wypełnionym atrybutem needs_publishing
nie są tym dotknięte i będą oceniane jak zwykle.
Uwagi
sat_publish_based_on_repository
ma sens tylko dla widoków treści. Dlatego zostanie pominięty dla złożonych widoków treści.sat_publish_based_on_component
jest wadliwy tylko dla złożonych widoków treści, ponieważ składają się one z jednego lub więcej komponentów (wersji widoków treści).
Zależności
Ta rola korzysta z certyfikowanej kolekcji Red Hat redhat.satellite
, która jest określona w collections/requirements.yml
.
Przykładowy playbook
Proszę zauważyć, że poniższy przykład zawiera również repozytoria i komponenty.
To nie jest wymagane i nie jest używane przez tę rolę. Zamieszczono je tylko, aby pokazać, że możesz użyć tej samej definicji widoku treści/złożonego widoku treści dla tej roli, którą użyjesz dla redhat.satellite.content_views
.
Złożony przykład
---
- hosts: 'localhost'
gather_facts: false
roles:
- name: 'satellite_content_view_publish_promote'
vars:
sat_async_max_time: 3900
sat_async_poll_time: 0
sat_async_retries: 2000
sat_async_check_delay: 2
sat_content_view_version_description: 'Dzień poprawek'
sat_composite_content_view_version_description: 'Dzień poprawek'
satellite_server_url: 'https://satellite.example.com'
satellite_organization: 'org-example'
sat_only_promote_content_views: false
sat_only_promote_composite_content_views: false
sat_publish_based_on_repository: true
sat_check_unsynchronized_repositories: true
sat_wait_for_repository_synchronization: true
sat_check_successful_repository_synchronization: true
sat_check_synchronizing_repositories: true
sat_content_view_kinds: 'both'
sat_synchronize_repositories: false
sat_check_content_views_known: true
sat_publish_based_on_component: true
satellite_content_views:
- name: 'cv-rhcdn-base-rhel-8'
lifecycle_environments:
- 'lce-default-dev'
- 'lce-default-prod'
repositories:
- name: 'Red Hat Enterprise Linux 8 for x86_64 - BaseOS RPMs 8'
product: 'Red Hat Enterprise Linux for x86_64'
- name: 'Red Hat Enterprise Linux 8 for x86_64 - AppStream RPMs 8'
product: 'Red Hat Enterprise Linux for x86_64'
- name: 'Red Hat Enterprise Linux 8 for x86_64 - BaseOS Kickstart 8.9'
product: 'Red Hat Enterprise Linux for x86_64'
- name: 'Red Hat Enterprise Linux 8 for x86_64 - AppStream Kickstart 8.9'
product: 'Red Hat Enterprise Linux for x86_64'
- name: 'cv-rhcdn-base-rhel-9'
lifecycle_environments:
- 'lce-default-dev'
repositories:
- name: 'Red Hat Enterprise Linux 9 for x86_64 - BaseOS RPMs 9'
product: 'Red Hat Enterprise Linux for x86_64'
- name: 'Red Hat Enterprise Linux 9 for x86_64 - AppStream RPMs 9'
product: 'Red Hat Enterprise Linux for x86_64'
- name: 'Red Hat Enterprise Linux 9 for x86_64 - BaseOS Kickstart 9.3'
product: 'Red Hat Enterprise Linux for x86_64'
- name: 'Red Hat Enterprise Linux 9 for x86_64 - AppStream Kickstart 9.3'
product: 'Red Hat Enterprise Linux for x86_64'
- name: 'cv-rhcdn-satellite_6_client-rhel-8'
patch_day_exclude: true
repositories:
- name: 'Red Hat Satellite Client 6 for RHEL 8 x86_64 RPMs'
product: 'Red Hat Enterprise Linux for x86_64'
- name: 'cv-rhcdn-satellite_6_client-rhel-9'
patch_day_exclude: true
repositories:
- name: 'Red Hat Satellite Client 6 for RHEL 9 x86_64 RPMs'
product: 'Red Hat Enterprise Linux for x86_64'
- name: 'ccv-default-rhel-8'
lifecycle_environments:
- 'lce-default-dev'
- 'lce-default-prod'
components:
- content_view: 'cv-rhcdn-base-rhel-8'
latest: true
- content_view: 'cv-rhcdn-satellite_6_client-rhel-8'
latest: true
- name: 'ccv-default-rhel-9'
lifecycle_environments:
- 'lce-default-dev'
components:
- content_view: 'cv-rhcdn-base-rhel-9'
latest: true
- content_view: 'cv-rhcdn-satellite_6_client-rhel-9'
latest: true
Licencja
GPL-2.0-or-later
Publishes and optionally promotes Content View versions and Composite Content View versions.
ansible-galaxy install sscheib.satellite_publish_promote_content_views