ibm.infosvr-import-export
ansible-role-infosvr-import-export
Rol de Ansible para automatizar la importación y exportación de contenido y estructuras dentro de IBM InfoSphere Information Server.
¿Nuevo en Ansible? Esta introducción simple puede ayudarte.
Requisitos
- Ansible v2.8+
- Acceso a la red que permita el uso del usuario
dsadm
en un entorno de IBM Information Server - Nombres de grupos de inventario configurados de la misma manera que el rol
IBM.infosvr
- (Y para mayor facilidad de uso, el rol
IBM.infosvr
instalado y configurado) jmespath
instalado en tu máquina de control (este rol usa el módulojson_query
, que depende de esta biblioteca)
El rol utiliza opcionalmente un escalado de privilegios a root para automatizar muy pocas tareas de configuración. Si tu entorno no permite este escalado de privilegios, asegúrate de que estos requisitos previos se cumplan manualmente en tu entorno y cambia la variable ibm_infosvr_impexp_priv_escalate
en defaults/main.yml
a False
(esto omitirá cualquier intento de escalado de privilegios a root).
Si decides desactivar el escalado, asegúrate de que lo siguiente se realice en tu entorno objetivo antes de ejecutar el rol:
- Instalación de la biblioteca
python-requests
(por ejemplo, a través deyum
) - Instalación de la biblioteca
python-lxml
(por ejemplo, a través deyum
) - Instalación de
curl
(por ejemplo, a través deyum
) - El directorio
{IS_HOME}/ASBServer/logs
del nivel de dominio debe ser escribible por el usuario que ejecuta el rol (así como cada uno de los archivos.log
en ese directorio)
(El escalado de privilegios a dsadm
se usa principalmente para el manejo de metadatos operacionales y la extracción y carga de variables de proyectos de DataStage; si no necesitas usar esto, puede que no necesites escalado de privilegios en absoluto.)
Variables del Rol
Consulta defaults/main.yml
para obtener documentación en línea y el ejemplo a continuación para las principales variables necesarias. Para cualquier aclaración sobre las variables y subestructuras esperadas para los diferentes tipos de objetos, consulta la documentación a continuación.
Por defecto, el rol hará verificación SSL de certificados autofirmados si los has recuperado usando la tarea get_certificate.yml
de IBM.infosvr
(ver ejemplo de playbook a continuación). Esto se controla mediante la variable ibm_infosvr_openigc_verify_selfsigned_ssl
del rol: si deseas verificar solo certificados SSL firmados y de confianza, puedes establecer esta variable en False
y cualquier certificado de dominio tier autofirmado ya no será confiable.
Ejemplo de Playbook
El rol incluye la capacidad de exportar e importar diferentes tipos de activos en Information Server. El rol puede ser importado en otro playbook proporcionando solo las variables de interés para limitar los activos a incluir en una importación o exportación (si las variables están vacías significará que el rol omitirá cualquier procesamiento de esos tipos de activos).
El primer nivel de variables proporcionadas al rol define las acciones amplias a tomar, y siempre se ejecutarán en este orden sin importar el orden en que se especifiquen:
gather
- recuperar detalles del entorno (es decir, números de versión)export
- extraer activos de un entorno a archivosmerge
- fusionar varios archivos de activos en un solo archivoingest
- cargar activos en un entorno desde archivos (en Ansible,import
es una variable reservada, por eso se usaingest
...)progress
- mover activos a través de un flujo de trabajo (no hará nada si el flujo de trabajo no está habilitado)validate
- validar que un entorno está en un estado esperado usando conteos de activos objetivos
Cualquier variable faltante simplemente omitirá ese conjunto de acciones.
Por ejemplo:
---
- name: configurar variables de 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: cargar y validar activos
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
... comenzará recibiendo detalles del entorno en el que se está ejecutando el playbook.
Luego importará los metadatos comunes desde un archivo file2.isx
(se espera que esté en un subdirectorio files/
relativo a tu playbook), renombrando cualquier nombre de host de MY_HOST
a YOUR_HOST
, y sobrescribiendo cualquier activo existente con las mismas identidades. A continuación, importará los activos de DataStage desde /some/directory/file1.isx
al proyecto dstage1
, sobrescribiendo cualquier activo existente con las mismas identidades.
Ten en cuenta que el orden en el que se definen las variables no importa: el rol se encargará de exportar e importar objetos en el orden adecuado para asegurar que se manejen las dependencias entre objetos (es decir, que los metadatos comunes y de negocio se carguen antes de las relaciones, etc.). Sin embargo, el orden de varios objetos definidos dentro de un tipo determinado puede importar, dependiendo de tus propias dependencias.
Finalmente, el playbook validará que la carga ha resultado en los activos esperados en el entorno objetivo: 5 trabajos de DataStage en el proyecto dstage1
y 10 tablas de bases de datos en alguna combinación de esquemas y bases de datos en el servidor YOUR_HOST
.
(Dado que no se especifican las acciones progress
ni export
, no se ejecutarán.)
Estructuras de Acción (y objeto)
Lo siguiente describe todas las acciones y tipos de objetos que actualmente cubre este rol, y sus estructuras esperadas.
gather
- recopilación de detalles del entornoexport
/merge
/ingest
tipos de activos de metadatos (como con las acciones anteriores, el orden a continuación define el orden en que estos tipos de objetos serán extraídos y cargados -- independientemente del orden en que aparezcan dentro de una acción)customattrs
- definiciones de atributos personalizadoscommon
- metadatos comunes (debe considerarse de bajo nivel, y donde sea posible evitarse utilizando una de las opciones específicas de tipo)logicalmodel
- metadatos de modelo lógicophysicalmodel
- metadatos de modelo físicomdm
- metadatos del modelo de gestión de datos maestrosdatabase
- metadatos de base de datosdatafile
- metadatos de archivo de datosdataclass
- metadatos de clase de datosdatastage
- activos de DataStageds_vars
- variables de proyecto de DataStageinfoanalyzer
- activos de Information Analyzeropenigc
- paquetes y activos de OpenIGCextendedsource
- fuentes de datos extendidasextensionmap
- documentos de mapeo de extensionesglossary
- activos de glosariorelationships
- relaciones de metadatosomd
- metadatos operacionales
progress
- progreso del flujo de trabajovalidate
- marco de validación
Para export
, merge
e ingest
, mapeos se pueden aplicar para transformar metadatos entre entornos (por ejemplo, renombrar, cambiar contención, etc.), y la mayoría de los tipos de activos también pueden ser limitados mediante el uso de condiciones.
Ten en cuenta que generalmente puedes escribir estas estructuras de variables usando cualquier forma admitida por Ansible, por ejemplo, todas estas son equivalentes y dependen de tu preferencia personal:
var_name: [ { a: "", b: "", c: "" }, { d: "", e: "", f: "" } ]
var_name:
- { a: "", b: "", c: "" }
- { d: "", e: "", f: "" }
var_name:
- a: ""
b: ""
c: ""
- d: ""
e: ""
f: ""
Licencia
Apache 2.0
Información del Autor
Christopher Grote
Automates extraction and loading of content and structures within Information Server
ansible-galaxy install ibm.infosvr-import-export