gpt4 book ai didi

azure - 用于在 Azure 上部署集群的工具集

转载 作者:行者123 更新时间:2023-12-03 04:34:12 25 4
gpt4 key购买 nike

我正在使用 packer.io 将单个 VM 部署到 Azure。我的项目的下一步是将 VM 集群部署到 Azure。在我看来(如果我错了,请纠正我)仅靠 Packer 不足以编排集群的部署。因此,我需要其他东西来协调部署。由于它是一个集群,其中的每台机器都需要知道其他机器的 IP 地址(我的应用程序是分布式数据库)。我正在查看 terraform.io,但其文档没有任何涉及 Azure 的示例。有任何资源可以开始吗? terraform 是我需要的吗?您还有其他推荐的工具吗?另一个复杂之处是我正在尝试为我的客户自动部署演示虚拟机。我当前的工作流程是,使用打包器创建虚拟机,安装数据库,创建必要的用户帐户,将某些暂存目录上传到虚拟机。然后我拍一张快照来获取我的图像。后来,我的客户从 VMDepot 将该镜像部署到他们的 Azure 帐户。同样,目前这只是一个单机集群。稍后,这将需要是一组至少四台机器。是否有更好的工作流程来完成此任务?

感谢您的宝贵时间。

最佳答案

Terraform 有 an Azure provider ,尽管我认为在您提出最初问题时它尚未开发出来。

Terraform 允许创建同一资源的多个“副本”,这对于创建集群非常有用。但是,将所有主机的 IP 地址一起传递到这些实例可能会很棘手,因为配置步骤必须等到所有实例完成为止。此类排序的常见解决方法是使用未记录的 null_resource 在主机上运行独立的配置步骤。例如:

resource "azure_instance" "web" {
name = "terraform-test"
hosted_service_name = "${azure_hosted_service.example.name}"
image = "Ubuntu Server 14.04 LTS"
size = "Basic_A1"
storage_service_name = "yourstorage"
location = "West US"
username = "terraform"
password = "Pass!admin123"

# Tell Terraform to create 3 identical instances.
count = 3

endpoint {
name = "SSH"
protocol = "tcp"
public_port = 22
private_port = 22
}
}

resource "null_resource" "provision" {
count = 3

connection {
host = "${lookup(azura_instance.web.*.ip_address, count.index)}"
user = "terraform"
password = "Pass!admin123"
}

provisioner "remote-exec" {
inline = [
"/usr/local/bin/configure-cluster ${join(" ", azura_instance.web.*.ip_address)}",
]
}
}

空资源的三个副本都依赖于所有三个 azure_instance 资源,因此在所有实例准备就绪之前不会创建和预配它。实例全部准备就绪后,每个空资源都会配置为连接到其相应的实例(按索引),然后在其实例上运行虚构的 configure-cluster 命令,并传入完整的集群 IP 集地址作为参数。

请注意,配置程序仅在资源初始创建时运行。对资源的更新不会重新运行配置程序。由于空资源实际上并不代表真正的基础设施资源,因此可以通过“污染”它轻松地重新运行配置步骤,以便 Terraform 在下一次应用时重新创建它:

terraform taint null_resource.provision

关于azure - 用于在 Azure 上部署集群的工具集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30115810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com