Как создать плавающий IP-адрес и затем назначить его серверу с помощью Openstack API
В настоящее время я создаю виртуальные машины OpenStack программно, используя OpenStack API. Мне нужно связать плавающие IP-адреса с созданными серверами. Документация API по этому поводу мне непонятна. Вычислительный API говорит, что он устарел, хотя я пытался его использовать, но не уверен, как правильно его использовать. Не существует API для первого создания плавающего IP-адреса с использованием вычислительного API для плавающего IP-адреса. Я также пробовал использовать сетевой API Neutron для плавающего IP-адреса, также он не показывает, как связать плавающий IP-адрес с новым сервером. Он запрашивает идентификатор порта, и ответ API создания сервера не возвращает идентификатор порта и не возвращает IP-адрес.
Может кто-нибудь направить меня на это?
1 ответ
Вы должны использовать нейтрон-API для плавающего IP. Нова-версия действительно лишена смысла и является пережитком того времени, когда новая и нейтронная составляли один компонент, пока они не перевели большую часть сетевого материала в нейтрон.
Создание сервера - это асинхронный процесс, и его IP-адрес получается через несколько секунд. Таким образом, вы должны создать цикл, который запускает запросы на получение для нового идентификатора сервера и проверяет состояние сервера, пока он не станет активным и не получит IP ( https://docs.openstack.org/api-ref/compute/?expanded=show-server-details-detail и проверьтеOS-EXT-STS:vm_state
для активного состояния). После этого вы можете запросить все порты и проверить результат, какой идентификатор порта принадлежит IP- адресу нового созданного сервера (https://docs.openstack.org/api-ref/network/v2/?expanded=list-ports-detail и проверьтеfixed_ips
для ip вашего сервера). С этим идентификатором порта вы сможете создать свой плавающий IP-адрес.
Может быть, есть способ попроще, но это первый вариант, который я попробую, когда мне придется решать эту задачу.