ibm.infosvr-openigc

ansible-role-infosvr-openigc

用于自动化在IBM信息服务器中部署信息治理目录的OpenIGC对象的Ansible角色。

对Ansible不熟悉?这个简单介绍可能对你有所帮助。

要求

  • Ansible v2.6.x
  • 在控制机器上预安装以下工具:
    • zip
    • curl

该角色不使用任何特权提升,主要在控制机器上执行(仅直接向环境中的相关API推送生成的文件)。

由于该角色使用了高级的Jinja模板进行基于YAML的输入,要求使用最近版本的Ansible(v2.4版本不足,因此提高到v2.6.x)。虽然v2.7现在允许uri模块提交文件,但它不提供覆盖证书颁发机构的能力,因此为了验证自签名证书,而不必修改控制机器的CA,我们目前仍然依赖curl

角色变量

有关内联文档,请参见defaults/main.yml,以下是主要所需变量的示例。

该角色将尝试自动重用来自IBM.infosvr角色的变量,例如通过使用tasks_from=setup_vars.yml导入IBM.infosvr的剧本。

默认情况下,如果您使用IBM.infosvrget_certificate.yml任务检索了自签名证书,则该角色将进行SSL验证(请参见下面的示例剧本)。这由角色的ibm_infosvr_openigc_verify_selfsigned_ssl变量控制:如果您只想验证正确签名和受信任的SSL证书,可以将此变量设置为False,那么任何自签名的域级证书将不再被信任。

示例剧本

该角色主要用于根据需要导入其他剧本,以便部署OpenIGC对象——包括包和资产实例。(因此需要Ansible v2.4.x和import_role模块。)

---
- 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: 加载OpenIGC包和资产
  hosts: ibm_information_server_engine
  roles:
    - IBM.infosvr-openigc
  vars:
    bundles:
      - /some/directory/<BundleId>
    assets_as_xml:
      - /some/directory/asset_instances-<BundleId>.xml
    assets_as_yaml:
      - /some/directory/assets.yml
    flows_as_xml:
      - /some/directory/lineage_flows-<BundleId>.xml
    flows_as_yaml:
      - /some/directory/lineage.yml

动作(和对象)结构

以下描述了该角色当前涵盖的所有动作和对象类型及其预期结构。无论变量在剧本中列出的顺序如何,它们将按照以下列出顺序加载。

bundles

通过此变量提供的目录列表应为包形式,具体应包含以下结构:

  • <BundleId>:您指向的根目录应与包本身具有相同的大小写名称
    • asset_type_descriptor.xml:描述该包的XML(即所有类、它们的关系/包含等)
    • i18n:一个包含标签的目录
      • labels.properties:可翻译的类和属性标签集
    • icons:一个目录,包含每个由包定义的类的两个.gif文件:
      • <ClassId>-icon.gif:应为类的16x16像素表示,也可以是.png文件,但无论如何应命名为.gif
      • <ClassId>-bigIcon.gif:应为类的32x32像素表示,也可以是.png文件,但无论如何应命名为.gif

assets_as_xml

通过此变量提供的XML文件列表应为完全可用的资产实例XML文件,可以是已生成的(例如,通过下面的变量)或手动创建的。

assets_as_yaml

该变量提供了一种比学习上述assets_as_xml所需的XML格式更便捷/可读的方式来指定资产实例。

通过此变量提供的YAML文件列表用于生成有效的资产实例XML,随后将自动加载。每个YAML文件的结构应如下所示:

---

bundleId: $<BundleId>
contains:
  - class: <ClassName>
    name: <name>
    contains:
      - class: <NestedClassName>
        name: <name>
        contains:
          ...

contains子结构可以按需嵌套任意次数,以创建所需的资产包含层次结构。每个子结构至少必须定义classname

此外,还可以根据包定义和所有对象的默认属性集指定任意数量的附加属性(例如short_descriptionlong_description)。任何包定义的属性只需以$为前缀。例如:

---

bundleId: $TestBundle
contains:
  - class: Folder
    name: level1
    short_description: 顶级目录
    $filesystem: UNIX
    contains:
      - class: Folder
        name: level2
        short_description: 目录结构中的下一级
        contains:
          - class: File
            name: MyFile.txt
            short_description: 位于/level1/level2/MyFile.txt的文件
            $encoding: UTF-8

在这个示例中,TestBundle包定义了FolderFile,其中Folder可以定义filesystem属性,而File可以定义encoding。两者都可以具有short_description,因为IGC中的所有对象都有此属性。

对于允许多个值的属性,只需将值指定为YAML列表。在这个示例中,特定于包的users_with_access属性允许多个值,因此我们将每个值作为该属性的YAML列表的一部分进行指定:

---

bundleId: $TestBundle
contains:
  - class: Folder
    name: root
    $users_with_access:
      - user123
      - user456
      - user789

最后,names快捷方式存在于包含层次结构的叶节点中,其中您只需指定每个节点的name——这避免了需要为每个叶节点重复指定相同的class:

---

bundleId: $TestBundle
contains:
  - class: Folder
    name: root
    contains:
      - class: File
        names:
          - MyFile.txt
          - YourFile.txt
          - OtherFile.txt

flows_as_xml

通过此变量提供的XML文件列表应为完全可用的谱系流XML文件,可以是已生成的(例如,通过下面的变量)或手动创建的。

flows_as_yaml

该变量提供了一种比学习上述flows_as_xml所需的XML格式更便捷/可读的方式来指定资产实例。

通过此变量提供的YAML文件列表用于生成有效的谱系流XML,随后将自动加载。每个YAML文件的结构应如下所示:

---

assets:
  - class: <FullClassName>
    name: <name>
    contains:
      - class: <NestedFullClassName>
        name: <name>
        id: <unique identifier>
        contains:
          ...

flows:
  - name: <有意义的注释>
    within: <id>
    contains:
      - name: <有意义的注释>
        from:
          - <id>
          - ...
        to:
          - <id>
          - ...
      - ...

assetscontains子结构可以按需嵌套任意次数,以创建所需的资产包含层次结构。每个子结构至少必须定义classname(实际上,任何其他属性都被忽略,因为这些在谱系流XML中未使用)。在这种情况下,您应指定完全限定的类名,包括bundleId,例如$BundleId-ClassName。这确保您可以在谱系流中结合OpenIGC和本地资产(并创建跨多个OpenIGC包的谱系流)。

对于您计划在流中使用的任何资产,还请包含一个显式的id属性来指定您将在flows变量中引用它们的方式。此标识符在YAML文件中应唯一,并且不得包含空格或其他特殊字符(仅限._)。这是必要的,因为id提供了文件中的一个扁平唯一引用;name实际上是一个嵌套标识符,其取决于它所在的包含结构,因此本身并不唯一(仅在考虑其整个包含结构时才唯一)。

flows变量中的每个name用作生成的XML中的注释,但实际上并不在IGC中出现。

考虑以下示例:

---

assets:
  - class: $TestBundle-Folder
    name: root
    contains:
      - class: $TestBundle-File
        name: MyFile.txt
        id: MyFile.txt
      - class: $TestBundle-File
        name: YourFile.txt
        id: YourFile.txt
      - class: $TestBundle-File
        name: OtherFile.txt
        id: OtherFile.txt
  - class: $TestBundle-Command
    name: copy
    id: copy

flows:
  - name: 复制命令以复制文件
    within: copy
    contains:
      - name: 从My到Your和Other的复制
        from:
          - MyFile.txt
        to:
          - YourFile.txt
          - OtherFile.txt

在此示例中,我们有一个定义了FolderFileCommand的新对象的TestBundleassets部分只定义了我们希望在谱系中描述的对象及其包含层次结构。对于我们将在谱系中使用的每个资产,我们定义了一个唯一的id属性。

flows部分中,我们创建了谱系:外部的within定义了负责谱系中所描绘的任何操作的过程,而其中的contains则指定了该操作的特定输入和输出。

许可证

Apache 2.0

作者信息

Christopher Grote

关于项目

Automates deployment and management of custom asset types for IBM Information Governance Catalog

安装
ansible-galaxy install ibm.infosvr-openigc
许可证
apache-2.0
下载
105