Reservar endereço IP no phpIPAM via Postman

Olá pessoal, tudo bem?

Estou seguindo um objetivo de aprender melhor como interagir com ferramentas e aplicações por meio de API. Afinal de contas, eu já ouvi diversas vezes que se uma ferramenta possui uma API você pode automatizá-la e facilitar a vida certo? Mas você só pode fazer isso se souber utilizar a API. Então nos meus primeiros passos tentei aprender a usar a API da ferramenta phpIPAM e conseguir, por meio de um cliente RestAPI, fazer a reserva automática de um endereço IP.

A idéia é fazer essa chamada rest ser feita depois pelo vRealize Orchestrator e assim ter um workflow para reservar um endereço IP para mim! Abaixo segue os passos que eu segui, espero que eles ajudem alguém que esteja fazendo algo similar.

Versões:

A versão do phpIPAM instalado é 1.5. A versão é importante porque eu estava tentando chamar uma função da API na versão 1.2 que não existia. Então para poupar dor de cabeça para vocês: sempre chequem a versão e quais funções da API estão presentes nela!!

O cliente Rest que eu vou utilizar é o Postman. Eu o adoro porque ele guarda todos os seus testes. Então se você logar no postman em outro computador ele irá trazer todas as suas requisições e os históricos delas!

Vamos lá!

O primeiro passo é acessar o meu IPAM. Clique em phpIPAM settings e desça até a parte de Feature Settings. Nela, habilite a opção de API e não se esqueça de salvar!

Depois disso, clique em API e crie um APP Id na interface gráfica do phpIPAM conforme Figura abaixo. Esse APP ID será utilizado em todas as requisições que iremos montar no PostMan. Como segurança eu estou usando a opção de User Token e dei permissão total.

Depois disso, abra o seu Postman para montarmos a nossa requisição. Temos duas requisições para montar. A primeira será para realizar o login e conseguir um token e a segunda é a nossa reserva de endereço IP.

De acordo com a documentação da API do phpIpam, para fazer login temos que fazer um POST na seguinte URL: http://[ipam_hostname]/api/APP_ID/user/

No meu laboratório a URL ficará http://ansible.nuvem.local/api/pri/user/ (ignorem o nome ansible, no meu lab eu costumo aproveitar a mesma VM pra tudo haha). Na Figura abaixo destaco o meu Postman mostrando que eu escolhi o método POST, a URL que eu irei enviar o POST e outro detalhe importante é a aba Authorization aonde eu escolho Basic Auth e vou inserir o meu usuário de login do IPAM. Ao clicar em SEND eu irei receber o Status 200 OK e um JSON de resposta com o meu token!

Agora para qualquer outra requisição que eu irei fazer, é necessário colocar o token no header da requisição! Vamos montar agora a nossa URL do POST para reservar o primeiro IP livre em uma subnet criada no phpIPAM. A URL padrão é a seguinte: http://[ipam_hostname]/api/pri/addresses/first_free/[subnet_ID]

Para descobrir a subnetID eu simplesmente vou pela interface gráfica, clico na minha subnet de destino e vejo pela URL qual o ID dela. O ID da minha rede 10.0.0./24 é 10.

Com essa informação e o meu token, vamos montar a requisição POST! A URL vai ficar: http://ansible.nuvem.local/api/pri/addresses/first_free/10

Além da URL, temos que inserir duas informações em headers: o token e o Content-Type. O Content-Type é necessário porque nesse POST eu irei enviar um JSON contendo as informações de hostname, descrição e dono que deverá aparecer na reserva no IPAM. Segue abaixo como fica a parte de Headers.

Depois de ajeitarmos os headers, vamos clicar em Body para colocar o nosso JSON com nossas informações! Eu escolhi o formato raw JSON.

Finalizada a montagem da nossa requisição POST, clicamos em SEND! O resultado esperado é 201 Content Created e um JSON com o nosso endereço IP reservado!

Vamos verificar no phpIPAM como ficou?

É isso! Espero que esse mini tutorial ajude quem esteja se aventurando em RestAPI! O próximo passo é fazer essa chamada usando o vRealize Orchestrator ao invés do Postman. Nos vemos lá!

Copy link
Powered by Social Snap