Примеры практических решений с использованием интерфейса REST API и консольной утилиты cURL.¶
Изменение IP адреса, назначенного на порт инстанса¶
Примечание
Привязка IP адреса в Openstack осуществляется не к инстансу напрямую, а к порту который инстансу назначен. Поэтому, для изменения IP адреса по которому должен быть доступен инстанс, нужно произвести смену IP адреса для порта.
Используемые команды
Получить информацию о портах проекта:
Описание синтаксиса - https://developer.openstack.org/api-ref/network/v2/#list-ports
curl -s -H "X-Auth-Token: $OS_TOKEN" -H "Content-Type: application/json" https://api.sim-cloud.net:9696/v2.0/ports
- где
https://api.sim-cloud.net:9696 - точка доступа сервиса Networking (Neutron)
«/v2.0/ports» - необходимые параметры из документации по Networking API OpenStack
Изменить параметры порта:
Описание синтаксиса - https://developer.openstack.org/api-ref/network/v2/#update-port
curl -s -X PUT -H "X-Auth-Token: $OS_TOKEN" -H "Content-Type: application/json" https://api.sim-cloud.net:9696/v2.0/ports/{port_id} -d '{ key:value}' | python -mjson.tool
- где
https://api.sim-cloud.net:9696 - точка доступа сервиса Networking (Neutron)
«/v2.0/{port_id}» - необходимые параметры из документации Networking API OpenStack
«-d „{ key:value}“» - структура с описанием нового IP адреса для порта, согласно документации Networking API OpenStack
Исходные данные:
- «demo» - имя проекта
- 30.30.30.4 - текущий IP адрес
- 30.30.30.124 - новый IP адрес, на который мы хотим изменить текущий
Порядок действий:
1. Получить tokenID для нашего проекта как было описано выше2. Получить список портов для проекта и их параметры$ curl -s -H "X-Auth-Token: $OS_TOKEN" -H "Content-Type: application/json" https://api.sim-cloud.net:9696/v2.0/ports | python -mjson.tool { "ports": [ ... { "admin_state_up": true, "allowed_address_pairs": [], ... "fixed_ips": [ { "ip_address": "30.30.30.4", "subnet_id": "f7e4b2c2-6340-46ac-b10e-c94de49746b1" } ], "id": "f0910640-08b6-4595-88cf-0ecc4ce66dbf", "mac_address": "fa:76:3e:30:63:2b", ... }, ... ] }
Выбираем необходимые нам данные:
Значение «ip_address» (10.100.100.4) - это наш <IPaddress> Значение «ID» (c95d4d1d-233b-4322-8b3a-d77df89b3bf1) — это наш {port_id}3. Теперь, зная всё необходимое, назначаем на порт нужный нам IP:curl -s -X PUT -H "X-Auth-Token: $OS_TOKEN" -H "Content-Type: application/json" https://api.sim-cloud.net:9696/v2.0/ports/f0910640-08b6-4595-88cf-0ecc4ce66dbf -d '{ "port": { "fixed_ips": [{"ip_address": "30.30.30.124"}]}}' | python -mjson.tool { "port": { "admin_state_up": true, ... "fixed_ips": [ { "ip_address": "30.30.30.124", "subnet_id": "c949746de4b1-6340-46ac-b10e-f7b2ce42" } ], "id": "f0910640-08b6-4595-88cf-0ecc4ce66dbf", ... } }Новое значение видно в ответе на наш запрос. Также его можно увидеть повторив команду из п.2