brgalloway.phpipam_api
与phpipam API交互的剧本
有一个工作正常的phpipam安装后,您可以启用API,并在剧本中使用这些交互。 您需要配置应用ID,并创建一个将访问此API的用户,以便获取令牌。
在Ansible中设置API以供使用
在图形界面中,您需要导航到管理下的API部分。 在这里,您可以为API配置应用ID。 接下来,您需要导航到用户部分,以创建您的API用户。
与API交互
要查找子网并填充特定变量,您需要使用Postman或curl来查询API。
使用curl返回令牌:
curl -k https://ipam.example.com/api/phpipamappid/user/ -X POST -u <用户名>:<密码>
从返回的JSON输出中提取令牌:
curl -k https://ipam.example.com/api/phpipamappid/sections/ --header "token: .J1e9ipFZkPE6EvIRAqEf9hp" -X GET
一旦您拥有节的ID,就可以用它来获取该节内的子网。
curl -k https://ipam.example.com/api/phpipamappid/sections/{ID}/subnets --header "token: .J1e9ipFZkPE6EvIRAqEf9hp" -X GET
这将列出该节中的所有子网,您需要从返回的对象中获取ID:
"id": <数字>,
...
这是填充subnet_id:
变量的位置。
预留IP的示例剧本
main.yml剧本是使用URI模块进行API调用的示例, 注册输出以填充变量, 发起调用以注册IP,并更新phpipam的数据库。
要生成加密值以填充api_pass变量的保管库密码,您需要使用ansible-vault生成此值。 https://docs.ansible.com/ansible/2.4/vault.html
当group_vars/all文件中的所有值设置为匹配您的环境时, 只有这样剧本才能成功。 调用API将获取令牌, 然后将其存储在变量中,并在剧本中使用。