我使用packer.io将单个VM部署到Azure . 我的项目的下一步是将一组VM部署到Azure . 在我看来,单独打包器是不够的(如果我错了,请纠正我)来协调集群的部署 . 所以,我需要其他东西来协调部署 . 由于它是一个集群,其中的每台机器都需要知道每台其他机器的IP地址(我的应用程序是一个分布式数据库 . )我在看terraform.io,但是它的文档在Azure方面没有任何例子 . . 有没有资源可以入手?我需要的是Terraform吗?你会推荐其他任何工具吗?另一个复杂因素是我正在尝试为我的客户自动部署演示VM . 我目前的工作流程是,使用打包程序,创建VM,安装我的数据库,创建必要的用户帐户,将某些登台目录上传到VM . 然后我拍了一张快照来拍摄我的照片 . 稍后,我的客户端(到他们的Azure帐户)从VMDepot部署此映像 . 再次,目前,这只是一个单机群集 . 稍后,这将需要一组至少四台机器 . 有没有更好的工作流程来实现这一目标?
感谢您的时间 .
1 回答
Terraform有an Azure provider,虽然我认为在您提出原始问题时尚未开发出来 .
Terraform允许创建多个相同资源的"copies",这对于创建集群很有用 . 但是,将所有主机的IP地址一起传入这些实例可能会非常棘手,因为配置步骤必须等到所有实例都完成 . 此类排序的常见解决方法是使用未记录的
null_resource
在主机上运行独立的配置步骤 . 例如:null资源的三个副本都依赖于所有三个
azure_instance
资源,因此在所有实例都准备就绪之前不会创建和配置它 . 实例准备就绪后,每个空资源都配置为连接到其对应的实例(通过索引),然后在其实例上运行虚构的configure-cluster
命令,并将完整的集群IP地址集作为参数传递 .请注意,配置程序仅在初始创建资源时运行 . 对资源的更新不会重新运行配置程序 . 由于null资源实际上并不代表真正的基础架构资源,因此可以通过"tainting"轻松地重新运行供应步骤,以便Terraform将在下一个
apply
重新创建它: