Criando cards no trello quando novo recurso é provisionado no vRealize Automation 8.x

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.

 

Deixe um comentário

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