Чтение местных значений штата / контрольно-пропускных пунктов Pulumi

TL; DR. Я хотел бы подготовить вывод из предыдущего стека в более новый с локальным сохранением стека Pulumi. Например, для создания кластера AWS Fargate ECS в ранее созданных VPC / подсетях. Как это сделать в Python?

Я создал dev стек Pulumi, применил код:

$ mkdir pulumi-infra-az
$ pulumi login --local
$ pulumi stack init dev

И получилось такое Outputs:

...
Outputs:
    pulumi-private-subnet-ids: [
        [0]: "subnet-0dcbaabe273db8feb"
        [1]: "subnet-08c63207611c6bae2"
        [2]: "subnet-00fa346a71a323551"
    ]
    pulumi-public-subnet-ids : [
        [0]: "subnet-02c50846690f2cd70"
        [1]: "subnet-06282506863db7ac1"
        [2]: "subnet-0cfae8a4f5e4fc03c"
    ]
    pulumi-vpc-id            : "vpc-0767f0d49e3a59d42"

Resources:
    ~ 3 updated
    22 unchanged

Duration: 10s

Permalink: file:///root/.pulumi/stacks/dev.json
...

Как видите, я использую локальное размещение стека /root/.pulumi/stacks/dev.json. Все идет нормально. Теперь в другом каталоге я хотел бы создать описание фаргейт-кластера:

$ mkdir pulumi-ecs-fargate
$ pulumi stack init dev-ecs # by the way can I use the same `dev` stack name here?

И здесь мне нужно прочитать ранее созданные выходные значения pulumi-private-subnet-ids, pulumi-public-subnet-ids, pulumi-vpc-id? Как это сделать правильно?

Я нашел только примеры https://app.pulumi.com:
https://www.pulumi.com/docs/intro/concepts/organizing-stacks-projects/#inter-stack-dependencies
https://www.pulumi.com/docs/intro/concepts/programming-model/#stack-ссылки
https://www.pulumi.com/docs/tutorials/aws/aws-py-stackreference/

Может ли кто-нибудь предоставить локальный пример или пример AWS s3, как читать вывод в другом стеке / каталоге?


person ipeacocks    schedule 25.04.2020    source источник


Ответы (1)


Хорошо, также возможно чтение выходных данных локального состояния. Войдите и создайте первый стек:

$ pulumi logout
$ pulumi login --local

$ mkdrir pulumi-infra-az
$ cd pulumi-infra-az

$ pulumi stack init pulumi-infra-az-dev

Примените это:

$ pulumi up
...
Outputs:
    pulumi-private-subnet-ids: [
        [0]: "subnet-0e8eb4cd276720a51"
        [1]: "subnet-0447d96727f6fdf62"
        [2]: "subnet-02e0e1d44183f7733"
    ]
    pulumi-public-subnet-ids : [
        [0]: "subnet-00b1c052633b93f73"
        [1]: "subnet-0333dd2abc409acb7"
        [2]: "subnet-006e949371228f8bd"
    ]
    pulumi-vpc-id            : "vpc-0e59fc2d7df06bac0"

Resources:
    + 25 created
...

Теперь создайте новый каталог и стек:

$ mkdir pulumi-ecs-fargate
$ cd pulumi-ecs-fargate

$ pulumi stack init pulumi-ecs-fargate-dev

Имя стека должно отличаться. И чем читать выводы в новом:

...
# Reading local state
infra = pulumi.StackReference(f"pulumi-infra-az-dev")

# Read back the default VPC and public subnets, which we will use.
pulumi_vpc = infra.get_output("pulumi-vpc-id")
pulumi_private_subnets = infra.get_output("pulumi-private-subnet-ids")
pulumi_public_subnets = infra.get_output("pulumi-public-subnet-ids")
...

Очень жаль, что у Pulumi нет хороших руководств / примеров.

person ipeacocks    schedule 25.04.2020
comment
Возможно, он был недавно добавлен в документы pulumi .com / docs / intro / Concept / organization-stacks-projects / - person Can Rau; 08.06.2020
comment
Э-э, и вы можете отметить свои ответы как решенные ????, чтобы другим было легче находить неотвеченные вопросы ???? - person Can Rau; 08.06.2020
comment
К сожалению, есть только пример с собственным сервером app.pulumi.com. Довольно сложно понять, какой путь должен быть для стека local / s3. Например, с бэкэндом Pulumi ваше полное имя стека содержит косые черты, такие как this/is/my/stack, но вы не можете использовать косые черты со стеками s3 / local / etc. - person ipeacocks; 09.06.2020
comment
Я вижу, это правда. Пока это работает неплохо github.com/pulumi/pulumi/issues/2522# issuecomment-593088942 У меня есть 1 инфра и 1 сервисный проект, который получает данные через const infra = new pulumi.StackReference(infra. $ {env} ), следуя примеру из комментария к проблеме с использованием file://../. Я на самом деле планирую снять видео о том, как я управляю api контактной формы с Pulumi, но не уверен, сколько времени это займет ^^ - person Can Rau; 10.06.2020