Envio de webhook no Discord quando novo recurso é criado no vRealize Automation 8.x
Estes dias escrevi aqui como enviar mensagem de e-mail quando um novo recurso é criado. Basedo naquele artigo, quero demonstrar aqui como seria enviar um webhook para o Discord. A lógica é identica, muda apenas o código da ABX.
Sem mais delongas começaremos pelo código. Eu peguei o modelo de envio de webhook do Eduardo Pereira. Vamos criar uma nova action no vRA (Cloud Assembly > Extensibility > Library > Actions > New Action).
from urllib.request import urlopen
import json
from discord_webhook import DiscordWebhook, DiscordEmbed
def handler(context, inputs):
user = inputs['__metadata']['userName']
project = inputs['customProperties']['infoProject']
deployment = inputs['customProperties']['infoDeployment']
hostname = inputs['resourceNames'][0]
ip = inputs['addresses'][0][0]
size = inputs['customProperties']['flavor']
webhook = DiscordWebhook(url='https://discord.com/api/webhooks/xxxxxxxxxxxxxxxxxxx')
embed = DiscordEmbed(title='Created: ' + deployment, description='%s | %s' %(user, project), color='00ff00')
embed.set_author(name='Caverna Cloud', icon_url='https://br.seaicons.com/wp-content/uploads/2017/03/Homer-Simpson-04-Happy-icon.png')
embed.add_embed_field(name='Hostname',value='%s' %(hostname))
embed.add_embed_field(name='IP',value='%s' %(ip))
embed.add_embed_field(name='Size',value='%s' %(size))
webhook.add_embed(embed)
response = webhook.execute(embed)
Nas dependências adicione DiscordWebhook discord discord-webhook, FaaS provider On Prem e só.
Agora vamos criar uma subscription apontando para a action que acabamos de criar. O event topic será compute post provision, ou seja, queremos que o webhook seja enviado após o provisionamento do recurso. Lembre-se de habilitar o Blocking.
Pronto, vamos criar um blueprint beeeem simples só pra ver essa action em execução.
formatVersion: 1
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
Vou solicitar um recurso para ver a mágica acontecer. Neste caso, quando recurso chegar no ponto de post provision (após o provisionamento), a subscription irá acionar a action e o webhook será criado no Discord.
Webhook recebido com sucesso.
Se quiser é possível criar uma action para enviar um webhook quando um recurso for removido. Criei uma nova action com o mesmo código, apenas alterei a cor lateral e troquei created por removed (criativo haha). Criei uma nova subscription e em event topic defini como compute removal, ou seja, acione aquele gatilho quando o computador for removido.
E é isso aí, webhook recebido com sucesso!
A ideia aqui foi apenas demonstrar como enviar um webhook para o Discord com Python no vRA. Fique a vontade para usar este modelo e adaptar para a sua realidade.
PS: nem mencionei nada de como configurar o Discord porque além de ser rídiculo de simples, tem um monte de tutoriais por aí.
Até mais!
Apenas para esclarecer: VMware Aria Automation é o novo nome do vRealize Automation. Aqui, para fins didáticos, continuo utilizando o termo vRA.




