Criando cards no trello quando novo recurso é provisionado no vRealize Automation 8.x
Este artigo é mais uma demonstração do que podemos fazer com o vRA + ABX + Python + API. Basicamente vamos criar um card em uma lista especifica dentro de um quadro do trello quando um deployment for realizado no vRA. Pode não fazer sentido utilizar o trello para este fim, mas aqui quero apenas demonstrar o funcionamento, no seu caso podeira ser o seu software de inventário ao invés do trello. O produto pode mudar, mas a lógica é exatamente igual.
Vamos criar uma nova action no vRA (Cloud Assembly > Extensibility > Library > Actions > New Action). Defina o nome, adicione requests nas dependências e em FaaS provider selecione On Prem.
import requests import json def handler(context, inputs): trello = "https://api.trello.com/1" # url da api key = "xxxxxxxxx" # chave do trello (gerar na sua conta) token = "xxxxxxxxx" # token do trello (gerar na sua conta) vmname = inputs['resourceNames'][0] vrauser = inputs['__metadata']['userName'] project = inputs['customProperties']['infoProject'] # add on blueprint --> infoProject: ${env.projectName} blueprint = inputs['customProperties']['infoBlueprint'] # add on blueprint --> infoBlueprint: ${env.blueprintName} deployment = inputs['customProperties']['infoDeployment'] # add on blueprint --> infoDeployment: ${env.deploymentName} ip = inputs['addresses'][0][0] flavor = inputs['customProperties']['flavor'] desc = '**Username:** ' + vrauser + '\n**Project:** ' + project + '\n**Blueprint:** ' + blueprint + '\n**Deployment:** ' + deployment + '\n**Hostname:** ' + vmname + '\n**IP:** ' + ip + '\n**Size:** ' + flavor res = requests.post(trello + '/cards?idList=6386961a6e98780194c297ac&key=' + key + '&token=' + token + '&name=' + vmname + '&desc=' + desc, verify=False) card = json.loads(res.content)
Agora vamos criar uma subscription apontando para a action que acabamos de criar. O event topic será compute post provision, ou seja, queremos que a action seja acionada após o provisionamento do recurso. Lembre-se de habilitar o Blocking.
Agora vamos criar um blueprint simples só para validar a action.
inputs: {} resources: VM: type: Cloud.vSphere.Machine properties: image: Ubuntu 22.04 flavor: Small infoProject: ${env.projectName} infoBlueprint: ${env.blueprintName} infoDeployment: ${env.deploymentName} constraints: - tag: cluster-name:vsan networks: - network: ${resource.Network.id} assignment: static Network: type: Cloud.vSphere.Network properties: networkType: existing constraints: - tag: network-name:vmnet_100
E por fim só mandar criar para ver a magia acontecendo.
No trello tenho um quadro chamado Caverna Cloud, dentro dele possuo uma lista chamada VMs e a cada deployment do vRA um novo cartão é adicionado contendo o nome da VM e na descrição alguns detalhes sobre o deployment.
É 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.