You can support us by downloading this article as PDF from the Link below. Download the guide as PDF

You want to assign an OpenStack Instance a floating IP address from your public network?. When an virtual instance is created in OpenStack, it is automatically assigned a fixed IP in the network to which it is assigned . This IP address is permanently associated with the instance until the instance is terminated.

OpenStack also gives you an option to use floating IP address created from external network’s subnet. A “floating IP” is an IP address that can be dynamically added to a running virtual instance. The floating IP association can be modified at any time regardless of the state of the instance in question.

Here is the process you’ll use to create a floating IP Address in OpenStack and assign it to an instance.

Step 1: Create an Instance on private network

First create a Virtual instance from OpenStack horizon dashboard or CLI in a private network.

I have two networks – public and private. The instance will be created on the private subnet.

$ openstack network list
+--------------------------------------+---------+--------------------------------------+
| ID                                   | Name    | Subnets                              |
+--------------------------------------+---------+--------------------------------------+
| b94431cb-08cf-42ea-be61-55f5cf459276 | private | 57601b99-ea64-41a8-a927-fbd591ae3f2b |
| f7ccac3b-73eb-49bf-a4ec-af750216b819 | public  | 7536e4a8-6aa8-45dc-aed6-1a98afcf416d |
+--------------------------------------+---------+--------------------------------------+

$ openstack subnet list
+--------------------------------------+----------------+--------------------------------------+----------------+
| ID                                   | Name           | Network                              | Subnet         |
+--------------------------------------+----------------+--------------------------------------+----------------+
| 57601b99-ea64-41a8-a927-fbd591ae3f2b | private_subnet | b94431cb-08cf-42ea-be61-55f5cf459276 | 10.10.1.0/24   |
| 7536e4a8-6aa8-45dc-aed6-1a98afcf416d | public_subnet  | f7ccac3b-73eb-49bf-a4ec-af750216b819 | 96.220.99.8/29 |
+--------------------------------------+----------------+--------------------------------------+----------------+

I’ll create an Instance called testfloating from Ubuntu 18.04 template.

openstack server create \
 --image Ubuntu-18 \
 --key-name jmutai \
 --flavor m1.small \
 --security-group  7fffea2a-b756-473a-a13a-219dd0f1913a  \
 --network private  \
 testfloating

VM creation can be done from your OpenStack Dashboard.

openstack use floating ip 01

After creation, confirm the server is running.

$ openstack server show testfloating
+-------------------------------------+----------------------------------------------------------+
| Field                               | Value                                                    |
+-------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                   |
| OS-EXT-AZ:availability_zone         | nova                                                     |
| OS-EXT-SRV-ATTR:host                | server1.computingforgeeks.com                            |
| OS-EXT-SRV-ATTR:hypervisor_hostname | server1.computingforgeeks.com                            |
| OS-EXT-SRV-ATTR:instance_name       | instance-0000002e                                        |
| OS-EXT-STS:power_state              | Running                                                  |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | active                                                   |
| OS-SRV-USG:launched_at              | 2019-09-22T07:13:40.000000                               |
| OS-SRV-USG:terminated_at            | None                                                     |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| addresses                           | private=10.10.1.185                                      |
| config_drive                        |                                                          |
| created                             | 2019-09-22T07:13:35Z                                     |
| flavor                              | m1.small (1)                                             |
| hostId                              | da0a05ef20a03e97f301563551bab9b669ef04adbce232d941519946 |
| id                                  | a731e48d-d3b5-4fcf-8fc7-f8f280b51b44                     |
| image                               | Ubuntu-18 (7bd462ad-cc11-4d89-8b85-9aab0cfe114b)         |
| key_name                            | jmutai                                                   |
| name                                | testfloating                                             |
| progress                            | 0                                                        |
| project_id                          | 06bcc3c56ab1489282b65681e782d7f6                         |
| properties                          |                                                          |
| security_groups                     | name='default'                                           |
| status                              | ACTIVE                                                   |
| updated                             | 2019-09-22T07:13:40Z                                     |
| user_id                             | 336acbb7421f47f8be4891eabf0c9cc8                         |
| volumes_attached                    |                                                          |
+-------------------------------------+----------------------------------------------------------+

Step 2: Reserve a floating IP address from external network pool.

You need to reserve a floating IP address from external network subnet pool. This can be done from the web dashboard or CLI.

From CLI:

openstack floating ip create --project admin --subnet public_subnet public

Where:

  • admin is the Owner’s project. Created floating IP will be available for association in this project.
  • public_subnet is the name of the subnet on which you want to create the floating IP.
  • public is the name of the network to allocate floating IP from.

See all options by typing:

$ openstack floating ip create --help

From Dashboard:

Log in to the dashboard as a user that has the Member role. The navigate to:

Project > Network > Floating IPs

openstack use floating ip 02

Click on the “ALLOCATE IP TO PROJECT” button. On the new window, select a Pool, provide description and click on “ALLOCATE IP“.

openstack use floating ip 03

Step 3: Associate the reserved floating IP address with the instance.

Once the floating IP address is reserved, we can associate it with an instance.

From CLI:

$ openstack floating ip list
$ openstack server list
$ openstack server add floating ip <server> <ip-address>

# Example:
$ openstack server add floating ip testfloating 96.220.99.11

From dashboard:

Option 1: Project > Network > Floating IPs > Select IP > Associate

openstack use floating ip 04

Pick a floating IP, an instance and a port to associate.

openstack use floating ip 05

Option 2: Project > Compute > Instances

openstack use floating ip 06

Under actions, select “ASSOCIATE FLOATING IP”

openstack use floating ip 07

Select an IP address and click “ASSOCIATE”.

openstack use floating ip 08

Disassociate a floating IP Address

To disassociate IP address, use either of below methods:

CLI:

$ openstack server remove floating ip <server> <ip-address>

Dashboard:

  • Project > Network > Floating IPs > DISASSOCIATE
  • Project > Compute > Instances > Actions > DISASSOCIATE FLOATING IP

That’s all on how to associate a floating IP address to an instance running on OpenStack.

Other OpenStack guides:

How To Create OpenStack Instance With a Fixed / Static IP Address

How To Create OpenStack projects, users and roles

How To Migrate OpenStack Instance from one Compute Host to Another

How To Resize OpenStack Instance / Virtual Machine

How To Configure OpenStack Instances / VMs to Autostart after Nova compute reboot

How To Create OpenStack Cinder Volumes and Attach to a VM Instance

As an appreciation for the content we put out,
we would be thrilled if you support us!


As we continue to grow, we would wish to reach and impact more people who visit and take advantage of the guides we have on our blog. This is a big task for us and we are so far extremely grateful for the kind people who have shown amazing support for our work over the time we have been online.

Thank You for your support as we work to give you the best of guides and articles. Click below to buy us a coffee.

LEAVE A REPLY

Please enter your comment!
Please enter your name here