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.