我正在尝试启动并运行一个Stacker项目(在幕后使用Troposphere),我已经能够创建多个资源,但未能找到子网部分。我尝试了几种不同的方法将它们传递到blueprint类中,但我认为这一种方法最接近,而且与其他不会完全爆炸的实现类似。这个想法是接受这样子网的一些配置。在
在我的my_cluster.yaml
中,我有:
stacks:
...
- name: cluster-networks
description: "Networks for an ECS cluster"
class_path: blueprints.networks.Networks
variables:
Networks:
InternalComms:
AssignPublicIp: False
SecurityGroups:
- sg-id
Subnets:
- subnet-id1
- subnet-id2
为了阅读这个配置,我有一个名为blueprints/networks.py
的蓝图,其中包含以下内容:
如果您想知道我为什么要创建一个AwsvpcConfiguration
对象,然后用这个对象创建一个NetworkConfiguration
对象,原因是我在采用AwsvpcConfiguration
对象之前试图通过使用NetworkConfiguration
对象来传递这些信息,但它也没有起作用。我用这个file来指导我,因为这是定义这些对象的地方。下一步是build
资源,因此当我通过运行以下命令执行此操作时:
stacker build path/to/my.env path/to/my_cluster.yaml
我得到一个错误,上面写着:
stacker.exceptions.ValidatorError: Validator 'AwsvpcConfiguration.create'
failed for variable 'Networks' with value
'{'InternalComms': {'AssignPublicIp': False, 'SecurityGroups': ['sg-id'], 'Subnets': ['subnet-id1', 'subnet-id2']}}':
TypeError: _from_dict() argument after ** must be a mapping, not str
这可能是我在stacker、yaml和python方面的技能不足,但我被难住了,而且已经呆了一天左右了。在
我不知道如何将配置从yaml作为字典传递到blueprint中,就像我用同样的方式处理在AWS土地上成功创建的其他资源一样。如果你能给我指出错误,我将非常感激,并肯定会告诉圣诞老人你有多好。在
对流层维护者/堆积者作者。所以有几件事:
TroposphereType(ecs.NetworkConfiguration, many=True)
,因为这是您要创建的对象类型。在所以我认为你想要的是你的配置
variables: Networks: - AwsvpcConfiguration: AssignPublicIp: False SecurityGroups: - sg-id Subnets: - subnet-id1 - subnet-id2
这是因为
TroposphereType
要求您传入类型所需的确切参数。NetworkConfiguration
需要一个键,AwsvpcConfiguration
,而您传递的值是AwsvcpConfiguration
对象所期望的值。在现在更大的问题是如何使用这些对象。在云形成/对流层中,属性类型不是单独创建的——它们用作实际资源的属性——在本例中是
ecs.Service
类型。您不打算在同一个蓝图中包含该服务吗?如果没有,您计划如何与这些服务所在的其他蓝图共享这些属性?在一个更好的方法可能是有一个蓝图来构建服务以及它的
NetworkConfiguration
。然后,如果您希望使用该蓝图在多个堆栈之间轻松共享相同的网络配置,您可以使用YAML锚点执行以下操作:common_network_configuration: &common_network_configuration - AwsvpcConfiguration: AssignPublicIp: False SecurityGroups: - sg-id Subnets: - subnet-id1 - subnet-id2
然后在变量中使用它,比如:
variables: << : *common_network_configuration
我希望这是有意义的-如果你有任何问题,你也可以随时联系我们的堆垛机松弛:https://empire-slack.herokuapp.com/
祝你玩得开心!在
相关问题 更多 >
编程相关推荐