Configurando a integração do vRealize Automation 8.x com o NetBox
Primeiramente é importante mencionar que esta ingração entre vRA e NetBox não é nativa, mas isso não significa que esta integração não possa acontecer, na verdade, isso significa que será necessário desenvolver esta integração com o uso do Orchestrator e é exatamente isso que vou demonstrar aqui.
O primeiro passo é adicionar o servidor do NetBox no inventário para que seja possível efetuar chamadas REST API (veja aqui como adicionar um REST Host no vRO).
Depois disso, vamos definir um arquivo de configuração com a chave (API token) que você gerou lá no NetBox (não esqueça de dar permissão de escrita e garantir que o usuário de serviço tenha permissão nos itens que você quer usar).
Estou utilizando o configurations do vRO, mas poderia fazer direto no workflow e/ou de outras mil maneiras, esta é apenas uma das formas.
Agora vamos criar um workflow chamado “Add Netbox Virtual Machine” e nas variáveis vamos apontar para o REST Host e chave que acabamos de criar. Nos inputs/outputs é onde você irá adicionar tudo o que precisa que seja enviado para o NetBox. Neste exemplo vamos enviar apenas o nome da VM.
E finalmente o código em JavaScript para criar o objeto máquina virtual dentro do NetBox.
var body = { "name": vmName, "status": "active" }; var operation = "/api/virtualization/virtual-machines/"; var method = "POST"; var request = netboxRestHost.createRequest(method, operation, JSON.stringify(body)); var token = "Token " + netboxKey; request.setHeader("Authorization", token); request.setHeader("Content-Type", "application/json"); request.setHeader("Accept", "application/json", "indent=4"); var response = request.execute(); var content = JSON.parse(response.contentAsString); //System.log("---> STATUS CODE: " + response.statusCode); // log
Este exemplo é bem básico, mas lembre-se que todos os campos do NetBox podem ser preenchidos, além da possibilidade de criar campos customizados. A sua criatividade é o limite 🙂
Aqui um exemplo dos campos customizados e as tags, inclusive gostei bastante da forma que o NetBox agrupa as tags.
É possível criar um workflow para alterar o status da máquina virtual no NetBox, assim você sabe quais máquinas estão realmente ativas e pode ter o histórico delas. Shooooow me the code!
var operation = "/api/virtualization/virtual-machines/?name=" + vmName; var method = "GET"; var request = netboxRestHost.createRequest(method, operation); var token = "Token" + netboxKey; request.setHeader("Authorization", token); request.setHeader("Content-Type", "application/json"); request.setHeader("Accept", "application/json", "indent=4"); var response = request.execute(); var content = JSON.parse(response.contentAsString);
//System.log("---> STATUS CODE: " + response.statusCode); // log var netboxVmId = content.results[0].id; var body = { "name": vmName, "status": "offline" } var operation = "/api/virtualization/virtual-machines/" + netboxVmId + "/"; var method = "PUT"; var request = netboxRestHost.createRequest(method, operation, JSON.stringify(body)); var token = "Token " + netboxKey; request.setHeader("Authorization", token); request.setHeader("Content-Type", "application/json"); request.setHeader("Accept", "application/json", "indent=4"); var response = request.execute(); var content = JSON.parse(response.contentAsString); //System.log("---> STATUS CODE: " + response.statusCode); // log
E se quiser apenas remover a entrada do NetBox, este é o código:
var operation = "/api/virtualization/virtual-machines/?name=" + vmName; var method = "GET"; var request = netboxRestHost.createRequest(method, operation); var token = "Token " + netboxKey; request.setHeader("Authorization", token); request.setHeader("Content-Type", "application/json"); request.setHeader("Accept", "application/json", "indent=4"); var response = request.execute(); var content = JSON.parse(response.contentAsString); var netboxVmId = content.results[0].id;
//System.log("---> STATUS CODE: " + response.statusCode); // log body = {"id": netboxVmId}; var operation = "/api/virtualization/virtual-machines/" + netboxVmId + "/"; var method = "DELETE"; var request = netboxRestHost.createRequest(method, operation, JSON.stringify(body)); var token = "Token " + netboxKey; request.setHeader("Authorization", token); request.setHeader("Content-Type", "application/json"); request.setHeader("Accept", "application/json", "indent=4"); var response = request.execute(); var content = JSON.parse(response.contentAsString);
//System.log("---> STATUS CODE: " + response.statusCode); // log
E é isso. Rápido e certeiro. Até a próxima!
2 thoughts on “Configurando a integração do vRealize Automation 8.x com o NetBox”
can you please tell me which authentication method have you used to add the netbox as a rest host?
I have replaced the certificates on the Netbox with Microsoft CA signed certificate.
Hi, Nilesh! I didn’t use any authentication method when adding the netbox rest host. After that I use the username and password to get the token. That’s it!