首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用shell脚本中的while循环与AKS CLI并行创建多个AKS集群

使用shell脚本中的while循环与AKS CLI并行创建多个AKS集群
EN

Stack Overflow用户
提问于 2021-10-09 00:19:29
回答 2查看 106关注 0票数 0

我创建了运行不同az aks create命令的shell脚本。

我有很多变量,但是现在我只修改了while循环的集群名称。

shell脚本的结构是:

代码语言:javascript
复制
cnt=1

while [ $cnt -lt 3 ]
do 
  aksName=AKS0$cnt
  # more AKS VARs

  # and then CLI command:
  az aks create --name $aksName #--<MORE AKS CREATE SWITCHES>

  cnt=`expr $cnt + 1`
done

它确实创建了2个AKS集群,但1由1串联,有没有办法创建多个集群并行,可能是使用ansible,如果是这样,请让我知道如何?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2021-10-09 12:12:24

我建议使用像Pulumi或Terraform这样的IaC工具来创建AKS集群,而不是Ansible。这是创建2个AKS集群的Terraform代码。如果你想要更多,只需更新计数值,Terraform也会并行创建这些集群:

代码语言:javascript
复制
terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "=2.80.0"
    }
  }

  required_version = "=1.0.5"
}

provider "azurerm" {
  features {}
}

data "azurerm_client_config" "current" {
}

locals {
  rg_name  = "demo"
  location = "westeurope"
  name     = "demo"
  common_tags = {
    env       = "demo"
    managedBy = data.azurerm_client_config.current.client_id
  }
}

resource "azurerm_resource_group" "demo" {
  name     = local.rg_name
  location = local.location
}

resource "azurerm_kubernetes_cluster" "aks" {
  count               = 2
  name                = "${local.name}-${count.index}"
  location            = azurerm_resource_group.demo.location
  resource_group_name = azurerm_resource_group.demo.name
  dns_prefix          = "${local.name}-${count.index}"
  tags                = local.common_tags

  identity {
    type = "SystemAssigned"
  }

  default_node_pool {
    name       = "default"
    node_count = 3
    vm_size    = "Standard_D2_v2"
  }
}
票数 1
EN

Stack Overflow用户

发布于 2021-10-09 16:17:47

我同意@philip-welz。可以解决依赖关系并实现基础设施的并行配置的IaaC工具将是最佳选择。

以防万一,你想坚持使用Azure CLI:对于使用Azure CLI的异步操作,许多命令都提供了一个--no-wait参数,它允许在从Azure资源管理器返回响应之前运行其他命令。[Reference]

az aks create命令允许使用--no-wait选项。因此,您可以修改shell脚本,如下所示:

代码语言:javascript
复制
cnt=1

while [ $cnt -lt 3 ]
do 
  aksName=AKS0$cnt
  # more AKS VARs

  # and then CLI command:
  az aks create --no-wait --name $aksName #--<MORE AKS CREATE SWITCHES>
  echo Creation of cluster $aksName initiated
  cnt=`expr $cnt + 1`
done

这将启动特定序列中的AKS集群的创建,但每次迭代都不会在移动到下一次迭代之前等待该迭代中的集群被创建。从而实现了仅使用Azure CLI和shell脚本创建多个AKS集群的伪并行工作流。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69502828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档