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.


