phpipam_api
Плейбуки для взаимодействия с API phpipam
С работающей установкой phpipam вы можете включить API и использовать эти взаимодействия внутри плейбуков. Вам нужно будет настроить идентификатор приложения и создать пользователя, который будет получать доступ к этому API, чтобы собрать токен.
Настройка API для использования в Ansible
В интерфейсе вам нужно будет перейти в раздел API в разделе администрирования. Здесь вы можете настроить идентификатор приложения для API. Далее вам нужно будет перейти в раздел Пользователи, чтобы создать пользователя API.
Взаимодействие с API
Чтобы найти подсети и заполнить конкретные переменные, вам нужно будет поработать с API с помощью Postman или curl.
Использование curl для получения токена:
curl -k https://ipam.example.com/api/phpipamappid/user/ -X POST -u <username>:<password>
Получение токена из возвращаемого 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": <number>,
...
Здесь заполняется переменная 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 получит токен, который затем сохраняется в переменной и используется по всему плейбуку.
Документация phpipam https://phpipam.net/api/api_documentation/
ansible-galaxy install brgalloway/phpipam-api