When working with DevStack, I occasionally run into situations where the IP address of the VM changes due to external factors.  To get back up and running with the new IP address, endpoints for the OpenStack services need to be updated in configuration files and the database.  For example, you'll need to update this value in the nova.conf file:

auth_uri = http://[old IP address]:5000/v2.0

and change the IP to the new address.  Updating the IP addresses can be automated by running the unstack.sh command and then rerunning stack.sh, but this will destroy any custom updates you've made to the database during development and will remove other objects you've created in OpenStack as well.  Updating each one manually is a painful process, so this blog post contains a few simple commands to change IP addresses for all endpoints without having to restack the environment.

Prerequisites

You have a single node DevStack installation using mysql for the database that was working properly before the IP address changed.  If you have important data in your environment that can't be lost, make sure to take a backup of all configuration files, data files, and databases before making further changes to your environment.

Shut Down Services

Stop all the running OpenStack services with the unstack.sh script:

~/devstack$ ./unstack.sh

Modifications

To modify the endpoints in the database, you'll need to update values in the endpoints table of the keystone schema.

Log into mysql:

~/devstack$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 267
Server version: 5.5.40-0ubuntu0.12.04.1-log (Ubuntu)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Switch to the keystone schema:

mysql> use keystone
Database changed

Modify endpoint IPs:

mysql> update endpoint set url = REPLACE(url, '[old IP address]', '[new IP address]');

The number of rows this command updates will vary by how many endpoints your installation uses.  In my case, it was 30.

Validate that the endpoint urls were updated:

mysql> select url from endpoint;

Log out of mysql:

mysql> quit
Bye

Update configuration files in /etc:

$ grep -rl '[old IP address]' /etc | xargs sed -i 's/[old IP address]/[new IP address]/g'

Update configuration files in /opt/stack (necessary if you've got tempest or other components that put configurations in /opt/stack):

grep -rl '[old IP address]' /opt/stack | xargs sed -i 's/[old IP address]/[new IP address]/g'

Check whether .my.cnf in your home directory needs an update.  In my case, the IP address in this file was set to 127.0.0.1, so it didn't need an update.

Restart Services

Run the rejoin-stack.sh command, which starts the services again without making changes to the database or configuration files:

~/devstack$ ./rejoin-stack.sh

The services will now come up using the new IP address definitions.  I hope this saves you some time working with DevStack!






출처 : http://www.symantec.com/connect/blogs/change-endpoint-ip-addresses-after-openstack-installation-devstack