Я следил за документацией «Ссылки на стек, входы и выходы», а также несколькими ответами, которые в основном одинаковы.
Это упрощенная настройка двух проектов, каждый со стеком разработки, серверная часть — это ведро Cloud Storage. В первом проекте класс VpcComponent создает сеть VPC на Google Cloud Platform (классический поставщик). Я хочу получить vpc и простое строковое значение my_string в качестве входных данных для других ресурсов Pulumi во втором проекте. Например, используйте vpc.name в качестве входных данных в подсети, созданной во втором проекте, или my_string в качестве идентификатора родительской папки проекта GCP.
Код: Выделить всё
Versions:
pulumi CLI version v3.62.0
Python v3.9.2
pulumi v3.64.0
pulumi-gcp v6.54.0
Код: Выделить всё
__main__.py
Код: Выделить всё
import pulumi
from pulumi import ComponentResource, Output
from pulumi_gcp import compute
class VpcComponent(ComponentResource):
def __init__(self, name, args=None, opts=None):
super().__init__("my:vpc:VpcComponent", name, None, opts)
self.vpc_network = compute.Network(f"{name}-vpc-network")
self.subnet = compute.Subnetwork(
f"{name}-subnet",
ip_cidr_range="10.0.0.0/24",
region="us-central1",
network=self.vpc_network.id,
)
# Pass the output of network and subnet names
self.vpc = self.vpc_network
# self.register_outputs({"vpc": self.vpc})
# Create the VPC network and subnet using VpcComponent class
vpc_component = VpcComponent("my-vpc-component")
# Register VPC and String output
pulumi.export("vpc_out", vpc_component.vpc)
pulumi.export("string_out", "hello_world")
Код: Выделить всё
Outputs:
string_out: "hello_world"
vpc_out : {
auto_create_subnetworks : true
delete_default_routes_on_create : false
description : ""
enable_ula_internal_ipv6 : false
gateway_ipv4 : ""
id : "projects/my-gcp-project/global/networks/my-vpc-component-vpc-network-cfaeac6"
internal_ipv6_range : ""
mtu : 0
name : "my-vpc-component-vpc-network-cfaeac6"
network_firewall_policy_enforcement_order: "AFTER_CLASSIC_FIREWALL"
project : "my-gcp-project"
routing_mode : "REGIONAL"
self_link : "https://www.googleapis.com/compute/v1/projects/my-gcp-project/global/networks/my-vpc-component-vpc-network-cfaeac6"
urn : "urn:pulumi:dev::vpc::gcp:compute/network:Network::my-vpc-component-vpc-network"
}
Теперь использую Справочник по стеку Я хочу использовать vpc_out и >string_out во втором проекте пулуми.
Код: Выделить всё
__main__.py
Код: Выделить всё
import pulumi
from pulumi import StackReference
from pulumi_gcp import compute
# Note:-
# vpc is pulumi project name where we stored outputs and try to access those outputs in product project
# dev is stack name
stack_ref = pulumi.StackReference("organization/vpc/dev")
vpc_in=stack_ref.get_output("vpc_out")
string_in=stack_ref.get_output("string_out")
pulumi.export("Showing VPC output", vpc_in)
pulumi.export("Showing String Output", string_in)
print("Printing VPC name ", vpc_in.id.apply(lambda id: id))
print("Printing VPC name ", vpc_in.name.apply(lambda name: name))
print("Printing string_in", string_in.apply(lambda string: string))
Код: Выделить всё
print("Printing VPC name ", vpc_in.name.apply(lambda name: name))
Код: Выделить всё
print("Printing string_in", string_in.apply(lambda string: string))
Код: Выделить всё
Calling __str__ on an Output[T] is not supported.
To get the value of an Output[T] as an Output[str] consider:
1. o.apply(lambda v: f"prefix{v}suffix")
See https://pulumi.io/help/outputs for more details.
This function may throw in a future version of Pulumi.
Printing string_in Calling __str__ on an Output[T] is not supported.
Как преобразовать вывод в str, чтобы их можно использовать в качестве входных данных для ресурсов Пулуми второго проекта?
Подробнее здесь: https://stackoverflow.com/questions/760 ... urces-of-t