This patch allows to run Nova metadata service using Apache
on port 80 under /metadata URL.
Change-Id: I18f3399738c31166eac884a9b0d5c4045d3f445c
1 | 1 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,25 @@ |
0 |
+Listen %PUBLICPORT% |
|
1 |
+ |
|
2 |
+<VirtualHost *:%PUBLICPORT%> |
|
3 |
+ WSGIDaemonProcess nova-metadata processes=%APIWORKERS% threads=1 user=%USER% display-name=%{GROUP} %VIRTUALENV% |
|
4 |
+ WSGIProcessGroup nova-metadata |
|
5 |
+ WSGIScriptAlias / %PUBLICWSGI% |
|
6 |
+ WSGIApplicationGroup %{GLOBAL} |
|
7 |
+ WSGIPassAuthorization On |
|
8 |
+ <IfVersion >= 2.4> |
|
9 |
+ ErrorLogFormat "%M" |
|
10 |
+ </IfVersion> |
|
11 |
+ ErrorLog /var/log/%APACHE_NAME%/nova-metadata.log |
|
12 |
+ %SSLENGINE% |
|
13 |
+ %SSLCERTFILE% |
|
14 |
+ %SSLKEYFILE% |
|
15 |
+</VirtualHost> |
|
16 |
+ |
|
17 |
+Alias /metadata %PUBLICWSGI% |
|
18 |
+<Location /metadata> |
|
19 |
+ SetHandler wsgi-script |
|
20 |
+ Options +ExecCGI |
|
21 |
+ WSGIProcessGroup nova-metadata |
|
22 |
+ WSGIApplicationGroup %{GLOBAL} |
|
23 |
+ WSGIPassAuthorization On |
|
24 |
+</Location> |
... | ... |
@@ -7,6 +7,7 @@ |
7 | 7 |
# |
8 | 8 |
# - ``functions`` file |
9 | 9 |
# - ``DEST``, ``DATA_DIR``, ``STACK_USER`` must be defined |
10 |
+# - ``FILES`` |
|
10 | 11 |
# - ``SERVICE_{TENANT_NAME|PASSWORD}`` must be defined |
11 | 12 |
# - ``LIBVIRT_TYPE`` must be defined |
12 | 13 |
# - ``INSTANCE_NAME_PREFIX``, ``VOLUME_NAME_PREFIX`` must be defined |
... | ... |
@@ -87,6 +88,7 @@ NOVA_SERVICE_LOCAL_HOST=${NOVA_SERVICE_LOCAL_HOST:-$SERVICE_LOCAL_HOST} |
87 | 87 |
NOVA_SERVICE_LISTEN_ADDRESS=${NOVA_SERVICE_LISTEN_ADDRESS:-$SERVICE_LISTEN_ADDRESS} |
88 | 88 |
EC2_SERVICE_PORT=${EC2_SERVICE_PORT:-8773} |
89 | 89 |
EC2_SERVICE_PORT_INT=${EC2_SERVICE_PORT_INT:-18773} |
90 |
+METADATA_SERVICE_PORT=${METADATA_SERVICE_PORT:-8775} |
|
90 | 91 |
|
91 | 92 |
# Option to enable/disable config drive |
92 | 93 |
# NOTE: Set ``FORCE_CONFIG_DRIVE="False"`` to turn OFF config drive |
... | ... |
@@ -241,6 +243,7 @@ function _cleanup_nova_apache_wsgi { |
241 | 241 |
sudo rm -f $NOVA_WSGI_DIR/* |
242 | 242 |
sudo rm -f $(apache_site_config_for nova-api) |
243 | 243 |
sudo rm -f $(apache_site_config_for nova-ec2-api) |
244 |
+ sudo rm -f $(apache_site_config_for nova-metadata) |
|
244 | 245 |
} |
245 | 246 |
|
246 | 247 |
# _config_nova_apache_wsgi() - Set WSGI config files of Keystone |
... | ... |
@@ -251,11 +254,14 @@ function _config_nova_apache_wsgi { |
251 | 251 |
nova_apache_conf=$(apache_site_config_for nova-api) |
252 | 252 |
local nova_ec2_apache_conf |
253 | 253 |
nova_ec2_apache_conf=$(apache_site_config_for nova-ec2-api) |
254 |
+ local nova_metadata_apache_conf |
|
255 |
+ nova_metadata_apache_conf=$(apache_site_config_for nova-metadata) |
|
254 | 256 |
local nova_ssl="" |
255 | 257 |
local nova_certfile="" |
256 | 258 |
local nova_keyfile="" |
257 | 259 |
local nova_api_port=$NOVA_SERVICE_PORT |
258 | 260 |
local nova_ec2_api_port=$EC2_SERVICE_PORT |
261 |
+ local nova_metadata_port=$METADATA_SERVICE_PORT |
|
259 | 262 |
local venv_path="" |
260 | 263 |
|
261 | 264 |
if is_ssl_enabled_service nova-api; then |
... | ... |
@@ -270,6 +276,7 @@ function _config_nova_apache_wsgi { |
270 | 270 |
# copy proxy vhost and wsgi helper files |
271 | 271 |
sudo cp $NOVA_DIR/nova/wsgi/nova-api.py $NOVA_WSGI_DIR/nova-api |
272 | 272 |
sudo cp $NOVA_DIR/nova/wsgi/nova-ec2-api.py $NOVA_WSGI_DIR/nova-ec2-api |
273 |
+ sudo cp $NOVA_DIR/nova/wsgi/nova-metadata.py $NOVA_WSGI_DIR/nova-metadata |
|
273 | 274 |
|
274 | 275 |
sudo cp $FILES/apache-nova-api.template $nova_apache_conf |
275 | 276 |
sudo sed -e " |
... | ... |
@@ -296,6 +303,19 @@ function _config_nova_apache_wsgi { |
296 | 296 |
s|%VIRTUALENV%|$venv_path|g |
297 | 297 |
s|%APIWORKERS%|$API_WORKERS|g |
298 | 298 |
" -i $nova_ec2_apache_conf |
299 |
+ |
|
300 |
+ sudo cp $FILES/apache-nova-metadata.template $nova_metadata_apache_conf |
|
301 |
+ sudo sed -e " |
|
302 |
+ s|%PUBLICPORT%|$nova_metadata_port|g; |
|
303 |
+ s|%APACHE_NAME%|$APACHE_NAME|g; |
|
304 |
+ s|%PUBLICWSGI%|$NOVA_WSGI_DIR/nova-metadata|g; |
|
305 |
+ s|%SSLENGINE%|$nova_ssl|g; |
|
306 |
+ s|%SSLCERTFILE%|$nova_certfile|g; |
|
307 |
+ s|%SSLKEYFILE%|$nova_keyfile|g; |
|
308 |
+ s|%USER%|$STACK_USER|g; |
|
309 |
+ s|%VIRTUALENV%|$venv_path|g |
|
310 |
+ s|%APIWORKERS%|$API_WORKERS|g |
|
311 |
+ " -i $nova_metadata_apache_conf |
|
299 | 312 |
} |
300 | 313 |
|
301 | 314 |
# configure_nova() - Set config files, create data dirs, etc |
... | ... |
@@ -798,9 +818,11 @@ function start_nova_api { |
798 | 798 |
if [ -f ${enabled_site_file} ] && [ "$NOVA_USE_MOD_WSGI" == "True" ]; then |
799 | 799 |
enable_apache_site nova-api |
800 | 800 |
enable_apache_site nova-ec2-api |
801 |
+ enable_apache_site nova-metadata |
|
801 | 802 |
restart_apache_server |
802 | 803 |
tail_log nova-api /var/log/$APACHE_NAME/nova-api.log |
803 | 804 |
tail_log nova-ec2-api /var/log/$APACHE_NAME/nova-ec2-api.log |
805 |
+ tail_log nova-metadata /var/log/$APACHE_NAME/nova-metadata.log |
|
804 | 806 |
else |
805 | 807 |
run_process n-api "$NOVA_BIN_DIR/nova-api" |
806 | 808 |
fi |
... | ... |
@@ -916,6 +938,7 @@ function stop_nova_rest { |
916 | 916 |
if [ "$NOVA_USE_MOD_WSGI" == "True" ]; then |
917 | 917 |
disable_apache_site nova-api |
918 | 918 |
disable_apache_site nova-ec2-api |
919 |
+ disable_apache_site nova-metadata |
|
919 | 920 |
restart_apache_server |
920 | 921 |
else |
921 | 922 |
stop_process n-api |