ibm.infosvr-import-export
ansible-role-infosvr-import-export
用于自动化IBM InfoSphere Information Server内容和结构的导入和导出过程的Ansible角色。
对Ansible不熟悉?这个简单的介绍可能会对你有帮助。
需求
- Ansible v2.8及以上
- 对IBM Information Server环境具备
dsadm
权限的网络访问 - 库存组名称设置与
IBM.infosvr
角色相同 - (为了便于使用,需安装并配置
IBM.infosvr
角色) - 在控制机上安装
jmespath
(此角色使用json_query
模块,依赖于此库)
该角色可选择性地使用特权提升到root以自动化极少的设置任务。如果您的环境不允许这种特权提升,请确保在运行角色之前手动完成这些先决条件,并将defaults/main.yml
中的变量ibm_infosvr_impexp_priv_escalate
设置为False
(这将跳过任何特权提升的尝试)。
如果您将特权提升设置为false,请确保在运行角色之前在目标环境中完成以下操作:
- 安装
python-requests
库(例如,通过yum
) - 安装
python-lxml
库(例如,通过yum
) - 安装
curl
(例如,通过yum
) - 域层的
{IS_HOME}/ASBServer/logs
目录必须可由运行该角色的用户写入(以及该目录下的每个.log
文件)
(特权提升到dsadm
主要用于操作元数据处理以及提取和加载DataStage项目变量;如果您不需要使用这些,则可能不需要任何特权提升。)
角色变量
请查看defaults/main.yml
中的内联文档,以及下方示例中的主要所需变量。如需对各种对象类型的预期操作变量和子结构进行说明,请参考以下文档。
默认情况下,如果您使用IBM.infosvr
的get_certificate.yml
任务获取了自签名证书,则该角色将进行SSL验证。这由角色的变量ibm_infosvr_openigc_verify_selfsigned_ssl
控制:如果您只想验证正确签名和受信任的SSL证书,可以将此变量设置为False
,然后任何自签名的域层证书将不再被信任。
示例剧本
该角色能够导出和导入IBM Information Server中的多种不同资产类型。该角色可以导入到另一个剧本中,只提供感兴趣的变量,以限制要包含在导入或导出中的资产(空变量将意味着该角色将跳过对这些资产类型的处理)。
提供给角色的第一层变量定义了要采取的广泛操作,并始终按此顺序运行,无论它们指定的顺序如何:
gather
- 获取关于环境的详细信息(例如,版本号)export
- 从环境中提取资产到文件merge
- 将多个资产文件合并为一个文件ingest
- 从文件加载资产到环境(import
是Ansible中的保留变量,因此使用ingest
...)progress
- 在工作流中移动资产(如果未启用工作流,则不会执行任何操作)validate
- 使用客观资产计数验证环境处于预期状态
任何缺失的变量将简单地跳过那组操作。
例如:
---
- name: 设置信息服务器变量
hosts: all
tasks:
- import_role: name=IBM.infosvr tasks_from=setup_vars.yml
- import_role: name=IBM.infosvr tasks_from=get_certificate.yml
- name: 加载和验证资产
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
...将首先从正在运行的环境中收集环境详细信息。
然后,它将从文件file2.isx
导入通用元数据(预期为您的剧本的files/
子目录),将主机名从MY_HOST
重命名为YOUR_HOST
,并覆盖任何具有相同身份的现有资产。然后,它将从/some/directory/file1.isx
导入DataStage资产到dstage1
项目,覆盖任何具有相同身份的现有资产。
请注意,变量的定义顺序没有关系:该角色将负责以适当的顺序导出和导入对象,以确保对象之间的依赖关系得到处理(即,通用元数据和业务元数据在关系之前加载等)。但是,在给定类型内定义的多个对象的顺序可能会影响,具体取决于您自己的依赖关系。
最后,剧本将验证加载是否导致目标环境中预期资产的存在:在dstage1
项目中有5个DataStage作业,以及在YOUR_HOST
服务器的某些架构和数据库组合中有10个数据库表。
(由于未指定progress
或export
操作,因此将不会运行它们。)
操作(和对象)结构
以下描述了该角色所涵盖的所有操作和对象类型及其预期结构。
gather
- 环境详细信息收集export
/merge
/ingest
元数据资产类型(与上述操作一样,下面的顺序定义了这些对象类型将被提取和加载的顺序 - 无论它们在操作中出现的顺序如何)customattrs
- 自定义属性定义common
- 通用元数据(应视为低级,并在可能的情况下通过使用类型特定的选项而避免)logicalmodel
- 逻辑模型元数据physicalmodel
- 物理模型元数据mdm
- 主数据管理模型元数据database
- 数据库元数据datafile
- 数据文件元数据dataclass
- 数据类元数据datastage
- DataStage资产ds_vars
- DataStage项目变量infoanalyzer
- 信息分析器资产openigc
- OpenIGC包和资产extendedsource
- 扩展数据源extensionmap
- 扩展映射文档glossary
- 词汇资产relationships
- 元数据关系omd
- 操作元数据
progress
- 推进工作流validate
- 验证框架
对于export
、merge
和ingest
,可以应用映射来在环境之间转换元数据(例如,重命名、改变包含关系等),并且大多数资产类型也可以通过使用条件来限制。
请注意,您通常可以使用Ansible支持的任何形式编写这些变量结构,例如,这些形式都是等效的,完全取决于您的个人偏好:
var_name: [ { a: "", b: "", c: "" }, { d: "", e: "", f: "" } ]
var_name:
- { a: "", b: "", c: "" }
- { d: "", e: "", f: "" }
var_name:
- a: ""
b: ""
c: ""
- d: ""
e: ""
f: ""
许可证
Apache 2.0
作者信息
Christopher Grote
Automates extraction and loading of content and structures within Information Server
ansible-galaxy install ibm.infosvr-import-export