Skip to main content

Pulumi

通过我们与Pulumi 的集成,您可以将基础设施的状态与 Port 中代表它们的实体结合起来。

通过使用 Port 的 Providers,您可以轻松地将 Port 与现有的 IaC 定义集成,Pulumi 提供的每个资源也可以使用相同的定义文件报告给软件目录。

💡 Pulumi Providers 常见用例

例如,我们的 Providers 可以轻松地将 IaC 定义中的数据直接填入软件目录:

  • 报告云账户
  • 报告数据库
  • 报告lambdas托管 Kubernetes 服务(EKS、AKS、GKE 等);
  • 等等。

安装

Prerequisites

To install and use Port's Pulumi provider, you will need to install the Pulumi CLI

To install the Pulumi provider, use your preferred method of installing Pulumi providers.

pip install port_pulumi

Configuration

Please make sure to configure the clientId and secret to Port using the commands

Get your Port credentials

To get your Port API credentials go to your Port application, click on the ... button in the top right corner, and select Credentials. Here you can view and copy your CLIENT_ID and CLIENT_SECRET:

pulumi config set port:clientId <clientId>
pulumi config set port:secret <clientSecret> --secret

Pulumi 定义结构

Port 的 Pulumi Providers 支持以下资源将数据摄取到目录中:

`实体

实体 "资源定义了一个基本实体:

"""A Python Pulumi program"""

import pulumi
from port_pulumi import Entity,BlueprintPropertiesArgs

entity = Entity(
"myEntity",
title="My Entity",
blueprint="myBlueprint",
properties=BlueprintPropertiesArgs(),
relations={}
)

以下参数是必需的:

  • blueprint` - 据以创建此实体的蓝图的标识符;
  • title: 实体的标题;
  • 一个或多个properties 模式定义。

还可以指定以下参数作为 port_entity 资源的一部分:

  • identifier - 实体的标识符;
    • 如果没有 Provider,则会自动生成一个标识符。
  • team - 拥有该实体的团队;
  • teams - 拥有该实体的团队的数组;
  • run_id - 创建实体的操作的运行 ID。

属性模式

属性 "模式为实体的一个属性指定一个值。

定义

"""A Python Pulumi program"""
from port_pulumi import Entity,EntityPropertiesArgs

entity = Entity(
"myEntity",
identifier="myEntity",
title="My Entity",
blueprint="myBlueprint",
properties=EntityPropertiesArgs(
string_props={
"myStringProp": "My string"
}
),
relations={}
)

以下参数是必需的:

  • name -blueprint definition 中的属性名称;
  • values - 属性的值(用于非数组属性);
  • items - 属性值数组(用于数组属性)。

relations 模式

关系 "模式将目标实体映射到源实体定义:

"""A Python Pulumi program"""

import json
import pulumi
from port_pulumi import Entity,EntityRelationsArgs

entity = Entity(
"myEntity",
identifier="myEntity",
title="My Entity",
blueprint="myBlueprint",
properties={},
relations=EntityRelationsArgs(
many_relations={
"myManyRelation": ["myTargetEntityIdentifier", "myTargetEntityIdentifier2"]
},
single_relations={
"mySingleRelation": "myTargetEntityIdentifier"
},
),
)

以下参数是必需的:

  • name -relation 在蓝图定义中的名称;
  • identifier - 目标实体的标识符。
目前,只有使用 Port 的 Providers 才能创建具有 "many: false "关系的实体。

使用 Providers 被用于数据

要使用 Provider 将数据引用到软件目录,您需要用首选语言创建一个 port.Entity 资源实例:

要使用 Pulumi 创建实体,请用您喜欢的语言创建一个文件,并插入以下内容:

"""A Python Pulumi program"""

import pulumi
from port_pulumi import Entity

entity = Entity(
"myEntity",
title="My Entity",
blueprint="myBlueprint",
properties={},
relations={}
)

然后运行以下命令应用更改并更新目录:

pulumi up -y

运行这些命令后,您将看到目录已更新为新实体。