Packer和Terraform之间对非默认VPC的循环依赖

时间:2018-03-31 06:56:46

标签: terraform packer

我的部署工作流程首先使用Packer创建ami,然后使用Terraform进行部署。

我有一个EC2级,它是在2013年之前创建的,因此没有配置默认的VPC。

当我运行packer build packer.json时,该工具会抱怨

    amazon-ebs: Adding tag: "Name": "Packer Builder"
==> amazon-ebs: Error launching source instance: VPCResourceNotSpecified: The specified instance type can only be used in a VPC. A subnet ID or network interface ID is required to carry out the request.
==> amazon-ebs:     status code: 400, request id: 35ca5736-f808-4bb9-9a34-3dca24b59259

我打算用Terraform创建VPC。所以问题是,执行的顺序是什么?首先运行Terraform,然后运行Packer。或者以相反的顺序运行?或者,我们拆分了网络配置(VPC),使用Terraform进行一次部署,然后使用Packer,然后对其余服务器进行terraform?

更新: 如果我使用该策略: 运行Network模块(主要是静态的东西),然后是Packer,然后运行“频繁更改东西”模块,我如何在Terraform和Packer之间共享状态?这意味着,一旦我创建了一个新的VPC,我怎么让Packer知道这个新的vpc_id?我是否需要修改每个Packer文件?

1 个答案:

答案 0 :(得分:2)

一般建议是将terraform配置拆分为合理大小的部分。

对于小型设置,将其拆分为主要是静态的东西(VPC,子网,路由等)是合理的。 经常更改内容(EC2,SG等)。这也可以解决你的依赖周期。