Тропосфера, передавая вывод стека в качестве ввода другому

Предположим, я определил два стека, A и B.

В стеке A я определяю VPC и подсеть и выводю идентификатор этой подсети.

t = Template()
Subnet = t.add_resource(Subnet .....)
SubnetId = t.add_output(Output('SubnetId', Value=Ref(Subnet))

В стеке B у меня есть эти экземпляры, которые я хочу жить в подсети, определенной в стеке A. Как этого достичь?

2 ответа

Ты можешь использовать troposphere.GetAtt, Вот пример, где я прохожу VpcId а также PublicSubnetId из моего стека VPC в мой стек Apache Airflow:

# t is a Template, keyname_param is a Parameter
vpc_stack = t.add_resource(
    Stack(
        'VpcStack',
        TemplateURL=vpc_template_url
    )
)
airflow_stack = t.add_resource(
    Stack(
        'AirflowStack',
        TemplateURL=airflow_stack_url,
        Parameters={
            'KeyName': Ref(keyname_param),
            'VpcId': GetAtt(vpc_stack.title, 'Outputs.VpcId'),
            'PublicSubnetId': GetAtt(vpc_stack.title, 'Outputs.PublicSubnetId')
        }
    )
)

Вам нужно будет передать их в стек B в качестве параметров. Достойным примером этого является стакер, проект с открытым исходным кодом, который я поддерживаю (я также помогаю с тропосферой).

Проект bastion.py принимает много параметров, которые взяты из проекта vpc.py (оба найдены здесь - извините, я пытался опубликовать ссылки на каждый из чертежей, но Stackru не позволит мне опубликовать более 2 ссылок.). Stacker обрабатывает передачу параметров из одного стека в другой для вас, что является основной причиной, по которой я написал это.

Дайте знать, если у вас появятся вопросы.

Другие вопросы по тегам