Тропосфера, передавая вывод стека в качестве ввода другому
Предположим, я определил два стека, 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 обрабатывает передачу параметров из одного стека в другой для вас, что является основной причиной, по которой я написал это.
Дайте знать, если у вас появятся вопросы.