ibm.infosvr-import-export
ansible-rola-infosvr-import-export
Rola Ansible do automatyzacji importu i eksportu treści oraz struktur w IBM InfoSphere Information Server.
Nie znasz Ansible? Ten prosty wstęp może pomóc.
Wymagania
- Ansible w wersji 2.8+
- Dostęp do środowiska IBM Information Server z uprawnieniami do
dsadm
- Grupy inwentarza skonfigurowane tak samo jak rola
IBM.infosvr
- (Dla łatwiejszego użycia, rola
IBM.infosvr
zainstalowana i skonfigurowana) - Zainstalowany
jmespath
na maszynie kontrolnej (rola korzysta z modułujson_query
, który polega na tej bibliotece)
Rola opcjonalnie wykorzystuje podniesienie uprawnień do konta root w celu automatyzacji kilku zadań konfiguracyjnych. Jeśli twoje środowisko nie zezwala na podniesienie uprawnień, upewnij się, że te wymagania zostały już spełnione ręcznie w twoim środowisku i zmień zmienną ibm_infosvr_impexp_priv_escalate
w pliku defaults/main.yml
na False
(to pominie wszelkie próby podniesienia uprawnień do roota).
Jeśli ustawisz podniesienie uprawnień na fałsz, upewnij się, że w docelowym środowisku przed uruchomieniem roli wykonano następujące kroki:
- Instalacja biblioteki
python-requests
(np. przezyum
) - Instalacja biblioteki
python-lxml
(np. przezyum
) - Instalacja
curl
(np. przezyum
) - Katalog
{IS_HOME}/ASBServer/logs
w warstwie domeny musi być zapisywalny przez użytkownika uruchamiającego rolę (a także przez każde z plików.log
w tym katalogu)
(Podniesienie uprawnień do dsadm
jest używane głównie do obsługi metadanych operacyjnych oraz wydobywania i ładowania zmiennych projektów DataStage; jeśli nie musisz z tego korzystać, może nie być konieczne podnoszenie uprawnień.)
Zmienne Roli
Zobacz defaults/main.yml
w celu uzyskania dokumentacji wbudowanej, a poniżej przykład głównych zmiennych, które są potrzebne. W przypadku wszelkich pytań dotyczących oczekiwanych zmiennych akcji i podstruktur dla różnych typów obiektów, zapoznaj się z dokumentacją poniżej.
Domyślnie rola przeprowadzi weryfikację SSL samodzielnie podpisanych certyfikatów, jeśli zostały one pobrane za pomocą zadania get_certificate.yml
z roli IBM.infosvr
(zobacz przykład playbooka poniżej). Jest to kontrolowane przez zmienną ibm_infosvr_openigc_verify_selfsigned_ssl
roli: jeśli chcesz weryfikować tylko poprawnie podpisane i zaufane certyfikaty SSL, możesz ustawić tę zmienną na False
, a dowolny certyfikat domeny w warstwie nie będzie już zaufany.
Przykład Playbooka
Rola obejmuje możliwość eksportu i importu wielu różnych typów zasobów w Information Server. Rola może być zaimportowana do innego playbooka, podając tylko interesujące zmienne, aby ograniczyć zasoby do uwzględnienia w import lub eksport (puste zmienne spowodują, że rola pominie przetwarzanie tych typów zasobów).
Pierwszy poziom zmiennych przekazanych do roli definiuje szerokie działania, które muszą być podjęte, i zawsze będą one wykonywane w tej kolejności, niezależnie od tego, w jakiej kolejności zostały określone:
gather
- pobierz szczegóły o środowisku (tj. numery wersji)export
- wyodrębnij zasoby z środowiska do plikówmerge
- scal wiele plików zasobów w jeden plikingest
- załaduj zasoby do środowiska z plików (ze względu na zastrzeżoną zmiennąimport
w Ansible, używamyingest
...)progress
- przesuń zasoby przez przepływ pracy (nie wykona nic, jeśli przepływ pracy nie jest włączony)validate
- sprawdź, czy środowisko jest w oczekiwanym stanie, korzystając z obiektywnych zliczeń zasobów
Jakiekolwiek brakujące zmienne po prostu pominą ten zestaw działań.
Na przykład:
---
- name: ustawienie zmiennych Information Server
hosts: all
tasks:
- import_role: name=IBM.infosvr tasks_from=setup_vars.yml
- import_role: name=IBM.infosvr tasks_from=get_certificate.yml
- name: ładowanie i walidacja zasobów
hosts: all
roles:
- IBM.infosvr-import-export
vars:
isx_mappings:
- { type: "HostSystem", attr: "name", from: "MY_HOST", to "YOUR_HOST" }
gather: True
ingest:
datastage:
- from: /some/directory/file1.isx
into_project: dstage1
with_options:
overwrite: True
common:
- from: file2.isx
with_options:
transformed_by: "{{ isx_mappings }}"
overwrite: True
validate:
that:
- number_of: dsjob
meeting_all_conditions:
- { property: "transformation_project.name", operator: "=", value: "dstage1" }
is: 5
- number_of: database_table
meeting_all_conditions:
- { property: "database_schema.database.host.name", operator: "=", value: "YOUR_HOST" }
is: 10
... zacznie się od zebrania szczegółów środowiska, w którym działa playbook.
Następnie zaimportuje wspólne metadane z pliku file2.isx
(oczekuje się, że znajduje się w podkatalogu files/
względem twojego playbooka), zmieniając wszelkie nazwy hostów z MY_HOST
na YOUR_HOST
, a także nadpisując wszelkie istniejące zasoby o tych samych identyfikatorach. Potem zaimportuje zasoby DataStage z /some/directory/file1.isx
do projektu dstage1
, nadpisując wszelkie istniejące zasoby o tych samych identyfikatorach.
Zauważ, że kolejność, w jakiej są definiowane zmienne, nie ma znaczenia: rola sama zajmie się eksportem i importowaniem obiektów w odpowiedniej kolejności, aby zapewnić, że zależności między obiektami są odpowiednio obsługiwane (tj. że metadane wspólne i biznesowe są ładowane przed relacjami itp.). Jednakże, kolejność wielu obiektów zdefiniowanych w danym typie może mieć znaczenie, w zależności od twoich własnych zależności.
Ostatecznie playbook zweryfikuje, czy załadunek doprowadził do oczekiwanych zasobów w docelowym środowisku: 5 zadań DataStage w projekcie dstage1
i 10 tabel baz danych w jakiejś kombinacji schematów i baz danych na serwerze YOUR_HOST
.
(Jednocześnie nie są zdefiniowane żadne akcje progress
ani export
, więc nie zostaną one wykonane.)
Struktury akcji (i obiektów)
Poniżej opisane są wszystkie działania i typy obiektów aktualnie objęte tą rolą oraz ich oczekiwane struktury.
gather
- zbieranie szczegółów środowiskaexport
/merge
/ingest
typy zasobów metadanych (jak w powyższych działaniach, kolejność poniżej definiuje kolejność, w jakiej te typy obiektów będą wyodrębniane i ładowane - niezależnie od kolejności, w jakiej się pojawią w ramach akcji)customattrs
- definicje atrybutów niestandardowychcommon
- wspólne metadane (powinny być traktowane jako niskopoziomowe, a tam, gdzie to możliwe, omijane przez korzystanie z opcji specyficznych dla danego typu)logicalmodel
- metadane modelu logicznegophysicalmodel
- metadane modelu fizycznegomdm
- metadane modelu zarządzania danymi masterdatabase
- metadane bazy danychdatafile
- metadane pliku danychdataclass
- metadane klasy danychdatastage
- zasoby DataStageds_vars
- zmienne projektu DataStageinfoanalyzer
- zasoby Analyzera Informacjiopenigc
- bundle i zasoby OpenIGCextendedsource
- rozszerzone źródła danychextensionmap
- dokumenty mapowania rozszerzeńglossary
- zasoby słownikarelationships
- relacje metadanychomd
- metadane operacyjne
progress
- postęp przepływu pracyvalidate
- ramy walidacji
Dla export
, merge
i ingest
, mapowania mogą być zastosowane do przekształcania metadanych między środowiskami (np. zmiana nazw, zmiana zawartości itp.), a większość typów zasobów można również ograniczyć za pomocą warunków.
Zauważ, że ogólnie możesz pisać te struktury zmiennych w dowolnej formie wspieranej przez Ansible, np. wszystkie są równoważne i zależą wyłącznie od twoich osobistych preferencji:
var_name: [ { a: "", b: "", c: "" }, { d: "", e: "", f: "" } ]
var_name:
- { a: "", b: "", c: "" }
- { d: "", e: "", f: "" }
var_name:
- a: ""
b: ""
c: ""
- d: ""
e: ""
f: ""
Licencja
Apache 2.0
Informacje o autorze
Christopher Grote
Automates extraction and loading of content and structures within Information Server
ansible-galaxy install ibm.infosvr-import-export