Como obter as pastas do vCenter dinamicamente no vRealize Automation 8.x

Como obter as pastas do vCenter dinamicamente no vRealize Automation 8.x

Hoje vamos ver como exibir informações em menus suspensos dinamicamente no vRA. Neste exemplo iremos obter as pastas do vCenter utilizando um script PowerShell / PowerCLI.

Para isso vamos configurar uma action no vRO. Nos serviços do vRA, acesse Orchestrator > Library > Actions > New Action. Configure os inputs e garanta que o return esteja com a opção de array marcada e não esqueça de ajustar o limite de memória (lembrando que é PowerShell). 

Vamos ao código em si. Aqui temos uma particularidade, pois quando existe uma pasta dentro da outra, o vRA espera este formato Pasta1/Pasta11 e não diretamente Pasta11. É possível observar isso na configuração de folder em cloud assembly > configure > cloud zone > summary. !!! Atualmente o código suporta apenas dois níveis de pastas.

function Handler($context, $inputs) {
    Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false # ignore vCenter certificate  
    Connect-VIServer $inputs.vcenterurl -username $inputs.vcenteruser -password $inputs.vcenterpass | Out-Null # connect to vCenter

    $folder = Get-Folder -Type VM | select name,parent
    $output = @() # create output array

    for ($i = 0; $i -ne $folder.count; $i++) {
        if ($folder[$i].name -ne "vm") {
            if ($folder[$i].parent.name -ne "vm") {
                $folderparent = $folder[$i].parent.name + '/' + $folder[$i].name
                #write-host $folderparent # log
                $output += $folderparent
            }
            else {
                #write-host $folder[$i].name # log
                $output += $folder[$i].name
            }
        }
    }
    return $output
}

Lembre-se de utilizar a propriedade folderName no blueprint. Abaixo tem um exemplo simples de blueprint. 

formatVersion: 1
inputs:
  folder:
    type: string
    title: vCenter folder
resources:
  VM:
    type: Cloud.vSphere.Machine
    properties:
      name: CONZA-VM-
      image: Ubuntu 22.04
      flavor: Small
      folderName: ${input.folder}
      constraints:
        - tag: cluster:vsan
      networks:
        - network: ${resource.Network.id}
          assignment: static
  Network:
    type: Cloud.vSphere.Network
    properties:
      networkType: existing
      constraints:
        - tag: network:app

Crie uma nova versão do seu blueprint e configure o custom form. Para isso, acesse Service Broker > Content & Policies > Content > selecione o blueprint desejado > customize form. Garanta que o display type esteja como DropDown, o value source como external source e apontando para a action que você acabou de criar. É só completar as informações de URL e credenciais do vCenter.

Agora vem a parte fácil, só solicitar o item de catálogo e ver a mágica acontecer.

É isso aí, pessoal. Até a próxima!

Apenas para esclarecer: VMware Aria Automation é o novo nome do vRealize Automation. Aqui, para fins didáticos, continuo utilizando o termo vRA.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *