首页 文章

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

提问于
浏览
1

我使用packer.io将单个VM部署到Azure . 我的项目的下一步是将一组VM部署到Azure . 在我看来,单独打包器是不够的(如果我错了,请纠正我)来协调集群的部署 . 所以,我需要其他东西来协调部署 . 由于它是一个集群,其中的每台机器都需要知道每台其他机器的IP地址(我的应用程序是一个分布式数据库 . )我在看terraform.io,但是它的文档在Azure方面没有任何例子 . . 有没有资源可以入手?我需要的是Terraform吗?你会推荐其他任何工具吗?另一个复杂因素是我正在尝试为我的客户自动部署演示VM . 我目前的工作流程是,使用打包程序,创建VM,安装我的数据库,创建必要的用户帐户,将某些登台目录上传到VM . 然后我拍了一张快照来拍摄我的照片 . 稍后,我的客户端(到他们的Azure帐户)从VMDepot部署此映像 . 再次,目前,这只是一个单机群集 . 稍后,这将需要一组至少四台机器 . 有没有更好的工作流程来实现这一目标?

感谢您的时间 .

1 回答

  • 0

    Terraform有an Azure provider,虽然我认为在您提出原始问题时尚未开发出来 .

    Terraform允许创建多个相同资源的"copies",这对于创建集群很有用 . 但是,将所有主机的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)}",
            ]
        }
    }
    

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

    请注意,配置程序仅在初始创建资源时运行 . 对资源的更新不会重新运行配置程序 . 由于null资源实际上并不代表真正的基础架构资源,因此可以通过"tainting"轻松地重新运行供应步骤,以便Terraform将在下一个 apply 重新创建它:

    terraform taint null_resource.provision
    

相关问题