ibm.infosvr-metadata-asset-manager
ansible-role-infosvr-metadata-asset-manager
用于通过 IBM Metadata Asset Manager 代理和桥接自动部署元数据的 Ansible 角色。
对 Ansible 不熟悉?这个 简单介绍 可能会对你有帮助。
需求
- Ansible v2.4.x
- 具有 'dsadm' 权限的网络访问 IBM 信息服务器环境
- 库存组名称设置与
IBM.infosvr
角色相同
角色变量
请查看 defaults/main.yml
以获取内联文档,并参考下面的示例获取所需的主要变量。
每个代理和桥接都有自己独特的参数集。这些在 vars/
下的每个 YAML 文件中有更详细的文档,而所有代理和桥接的基本要求在 vars/simple_examples.yml
中有记录。随着时间的推移,目标是让所有代理和桥接都能正常工作,但列表会逐步增加——期待在给定版本的角色中,只有 vars/
中包含的代理和桥接是可工作的。
示例剧本
该角色主要用于根据需要导入到其他剧本中,以便通过信息服务器环境中任何受支持的代理和桥接来部署元数据。(因此需要 Ansible v2.4.x 和 import_role
模块。)
以下示例将执行:
- 将与信息服务器一起提供的 DB2 驱动程序添加到 JDBC 配置。
- 创建一个名为
AutoJDBC
的数据连接(如果尚不存在)以连接到名为MYDB
的 DB2 数据库,地址为myhost.somewhere.com
。(需要信息服务器 v11.7 及以上版本) - 创建一个导入区域,并运行导入,导入位于信息服务器引擎层文件系统中
/data/loadable
路径下的任何文件的元数据(并记录发现它们的主机名为 'IS-SERVER.IBM.COM')。 - 针对
MYDB
的DB2INST1
模式,在AutoJDBC
连接上自动导入任何元数据(例如,表、列),然后对这些数据运行列分析、自动检测术语分配、进行数据质量分析,并完成后将任何结果发布到信息治理目录。(需要信息服务器 v11.7 及以上版本)
请注意,变量的定义顺序并不重要——该角色会自动处理它们的适当运行顺序,以确保依赖对象先运行(例如,在尝试通过数据连接或导入区域进行任何数据连接之前,先完成 JDBC 配置)。
- import_role: name=IBM.infosvr-metadata-asset-manager
vars:
import_areas:
- name: Simple_LocalFileConnector_ImportArea
type: LocalFileConnector
description: "一个简单的示例(仅设置所需字段)的 LocalFileConnector 导入区域"
metadata_interchange_server: myhost.domain.com
dcn:
name: LOCALFS
assets_to_import:
- "folder[/data/loadable]"
hostname: "IS-SERVER.IBM.COM"
jdbc_entries:
classpaths:
- /opt/IBM/InformationServer/ASBNode/lib/java/db2jcc.jar
classnames:
- com.ibm.db2.jcc.DB2Driver
data_connections:
- name: AutoJDBC
type: JDBCConnector
description: 自动发现 JDBC 源的数据连接
url: jdbc:db2://myhost.somewhere.com:50000/MYDB
username: db2inst1
password: "{{ a_password_from_eg_vault }}"
discover_sources:
- dcn: AutoJDBC
project: UGDefaultWorkspace
target_host: myhost.somewhere.com
steps:
- import
- columnAnalysis
- termAssignment
- dataQualityAnalysis
- publish
parameters:
rootAssets: schema[MYDB|DB2INST1]
Asset_description_already_exists: Replace_existing_description
可用变量
import_areas
使用这个变量提供一个复杂结构的列表(数组),每个结构定义一个用于元数据资产管理器的导入区域。如果导入区域尚不存在,它将被创建并加载;如果同名的导入区域已存在,将重新导入其元数据(导入区域不会被替换)。
完整文档的示例结构可以在 vars/documented_*.yml
中找到。简单结构可以在 vars/simple_examples.yml
中找到。
data_connections
仅适用于 v11.7 及以上版本,使用此变量定义数据连接而不是完整的导入区域。例如,当你想使用 v11.7 及以上版本提供的自动发现功能时(即利用开放发现框架的能力来收集元数据,然后进行自动列分析等)。
odbc_entries
使用此变量定义应添加到 {DSHOME}/.odbc.ini
文件中的任何 ODBC 条目。这样可以确保通过 ODBC 进行适当的连接,例如通过数据集市和 IMAM 中的 ODBC 连接。
通常,每个对象中需要的键包括:
name
:ODBC 条目的(唯一)名称description
:ODBC 条目的描述(不得在任何地方使用字符=
)type
:ODBC 条目的类型,可以选择 db2、dbase、informix、oracle、oraclewire、sqlserver、sqlservernative、sybase、sybaseiq、salesforce、text、teradata、openedge、mysql、postgres、greenplum、hive、impala 之一database
:数据库名称(对于 RDBMS 条目)host
:托管数据源的系统的主机名或 IP 地址port
:端口号(对于 RDBMS 条目)— 通常这也将默认为特定数据库类型的默认端口。
由于不同平台的每个 ODBC 驱动程序支持各种特定平台的选项,可以选择性地指定这些选项。查看 templates/odbc/*.j2
中的模板以获取可以提供的选项;任何不强制的(上面列出的)将在 ODBC 配置中自动设置为其默认值,如果你不为它们指定其他值。
最后,如果您知道要添加到特定条目的其他属性,并且这些属性没有默认值(即未在上述模板中列出),请将它们作为键值对添加到 extras
条目中。
示例:
odbc_entries:
- name: IADB on DB2
description: 连接到 DB2 上的 IADB
type: db2
database: IADB
host: infosvr.vagrant.ibm.com
- name: 测试数据库在 Oracle 上
description: 连接到 Oracle 上某个测试数据集
type: oracle
database: TESTDB
host: infosvr.vagrant.ibm.com
SID: TESTDB
extras:
- QueryTimeout: -1
- ColumnSizeAsCharacter: 1
- ColumnsAsChar: 1
jdbc_entries
使用此变量定义应包含在 {DSHOME}/isjdbc.config
文件中的任何 JDBC 类。这是在数据集市和 IMAM 中确保通过 JDBC 进行适当连接所必需的。
需要两个子键:
classpaths
:定义应添加到 CLASSPATH 中的 Java 类的路径,即提供 JDBC 驱动程序的路径classnames
:定义提供上述类路径中 JDBC 驱动程序的 Java 类名
该角色将确保任何未包含在配置文件中的类路径或类名被添加,并将保留任何已存在的。
示例:
jdbc_entries:
classpaths:
- "{{ ibm_infosvr_metadata_asset_mgr_install_location }}/ASBNode/lib/java/db2jcc.jar"
classnames:
- com.ibm.db2.jcc.DB2Driver
osh_schemas
使用此变量定义应使用的任何 DDL 文件(包含 CREATE TABLE 语句),以生成捕获与数据库表相同内容的数据文件的 OSH 模式文件。
所有参数都是必需的,除了 tables
参数——如果未指定,将为指定 ddl
中找到的每个 CREATE TABLE 语句生成一个 OSH 模式。
这将创建以下内容:
- 每个在指定的
ddl
中的 CREATE TABLE 语句将生成一个(空)数据文件,位于指定的dest
目录中(受可选的tables
参数所定义的表的限制),使用指定的fileext
作为文件扩展名。 - 对于每个创建的空数据文件,在同一指定的
dest
目录中生成一个 OSH 模式文件,并添加.osh
作为额外的文件扩展名。
示例:
osh_schemas:
- ddl: /some/location/MYDB.sql
structure: "file_format: 'delimited', header: 'false'"
recordfmt: "delim='|', final_delim=end, null_field='', charset=UTF-8"
dest: /some/target/directory
fileext: csv
tables:
- TABLE1
- TABLE2
上面的示例将创建:
/some/target/directory/TABLE1.csv
/some/target/directory/TABLE1.csv.osh
/some/target/directory/TABLE2.csv
/some/target/directory/TABLE2.csv.osh
discover_sources
使用该变量定义应使用开放发现框架在 v11.7 及以上版本中进行的任何数据源自动发现。
每个条目所需的子键如下:
dcn
:指定用于发现的数据连接的名称project
:指定用于进行发现的信息分析器项目的名称target_host
:指定应用于要发现的源的主机名
其余的子键是可选的:
parameters
:提供一组子键,定义要应用于发现的附加行为或限制,例如:rootAssets
:定义要进行发现的资产子集(如果不指定,将发现目标上的所有资产——例如,所有目录中的所有文件,所有模式中的所有表)Asset_description_already_exists
:定义如何处理技术资产具有相同身份的情况- 具体源类型的其他参数也是可能的——请参阅信息服务器知识中心以获取更多详细信息
steps
:指示应应用的发现过程中的步骤,包括:import
:发现并将源的技术元数据导入到信息治理目录columnAnalysis
:对源运行列分析,确定格式、值的频率分布,并检测数据类别(依赖于执行import
)termAssignment
:尝试根据检测到的数据类别、列名和系统已学习的先前关系自动检测并分配业务术语(如果配置了)(依赖于执行columnAnalysis
),包括应用任何自动分配的数据规则dataQualityAnalysis
:执行一组标准质量检查,例如查找异常值,以及任何已自动分配的数据规则publish
:将所有其他步骤的结果发布到信息治理目录
请注意,在最后的 publish
步骤之前,所有工作均保留在信息分析器项目/工作区中的未发布状态。发布后,所有各种分析都可以被信息治理目录中的任何人看到。因此,你可能希望省略最后的 publish
步骤,以强制在信息分析器中进行审核(并手动决定是否发布)。(默认情况下,如果未指定步骤,发现将包括所有步骤_除了_ publish
步骤。)
请注意,rootAssets
格式为 schema[DBNAME|SCHEMA]
时,在 JDBC 连接上应用,DBNAME
部分可能需要特殊值(例如,对于 DB2,由于数据库在数据连接提供的 URL 中是固有的,始终要在这里提供 db2
作为 DBNAME
,而不是实际的数据库名称)。
示例:
discover_sources:
- dcn: AutoJDBC
project: UGDefaultWorkspace
target_host: myhost.somewhere.com
steps:
- import
- columnAnalysis
- termAssignment
- dataQualityAnalysis
- publish
parameters:
rootAssets: schema[MYDB|DB2INST1]
Asset_description_already_exists: Replace_existing_description
许可证
Apache 2.0
作者信息
克里斯托弗·格罗特
Automates data connectivity configuration through IBM Metadata Asset Manager
ansible-galaxy install ibm.infosvr-metadata-asset-manager