Skip to content
Snippets Groups Projects
Commit ce3abeb0 authored by Jenkins's avatar Jenkins Committed by Gerrit Code Review
Browse files

Merge "Allow use of database for Horizon sessions"

parents a2c6eefd d3f65a81
No related branches found
No related tags found
No related merge requests found
...@@ -353,13 +353,18 @@ ceilometer_database_type: "mongodb" ...@@ -353,13 +353,18 @@ ceilometer_database_type: "mongodb"
################################# #################################
cinder_backend_ceph: "{{ enable_ceph }}" cinder_backend_ceph: "{{ enable_ceph }}"
####################### #######################
# Nova options # Nova options
####################### #######################
nova_backend_ceph: "{{ enable_ceph }}" nova_backend_ceph: "{{ enable_ceph }}"
nova_backend: "{{ 'rbd' if nova_backend_ceph | bool else 'default' }}" nova_backend: "{{ 'rbd' if nova_backend_ceph | bool else 'default' }}"
#######################
# Horizon options
#######################
horizon_backend_database: "no"
################### ###################
# Ceph options # Ceph options
################### ###################
......
--- ---
project_name: "horizon" project_name: "horizon"
####################
# Database
####################
horizon_database_name: "horizon"
horizon_database_user: "horizon"
horizon_database_address: "{{ kolla_internal_fqdn }}:{{ database_port }}"
#################### ####################
# Docker # Docker
#################### ####################
......
---
- name: Creating Horizon database
command: docker exec -t kolla_toolbox /usr/bin/ansible localhost
-m mysql_db
-a "login_host='{{ database_address }}'
login_port='{{ database_port }}'
login_user='{{ database_user }}'
login_password='{{ database_password }}'
name='{{ horizon_database_name }}'"
register: database
changed_when: "{{ database.stdout.find('localhost | SUCCESS => ') != -1 and
(database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
failed_when: database.stdout.split()[2] != 'SUCCESS'
run_once: True
delegate_to: "{{ groups['horizon'][0] }}"
- name: Reading json from variable
set_fact:
database_created: "{{ (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
- name: Creating Horizon database user and setting permissions
command: docker exec -t kolla_toolbox /usr/bin/ansible localhost
-m mysql_user
-a "login_host='{{ database_address }}'
login_port='{{ database_port }}'
login_user='{{ database_user }}'
login_password='{{ database_password }}'
name='{{ horizon_database_name }}'
password='{{ horizon_database_password }}'
host='%'
priv='{{ horizon_database_name }}.*:ALL'
append_privs='yes'"
register: database_user_create
changed_when: "{{ database_user_create.stdout.find('localhost | SUCCESS => ') != -1 and
(database_user_create.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}"
failed_when: database_user_create.stdout.split()[2] != 'SUCCESS'
run_once: True
delegate_to: "{{ groups['horizon'][0] }}"
- include: bootstrap_service.yml
when: database_created
---
- name: Running Horizon bootstrap container
kolla_docker:
action: "start_container"
common_options: "{{ docker_common_options }}"
detach: False
environment:
KOLLA_BOOTSTRAP:
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
image: "{{ horizon_image_full }}"
labels:
BOOTSTRAP:
name: "bootstrap_horizon"
restart_policy: "never"
volumes:
- "{{ node_config_directory }}/horizon/:{{ container_config_directory }}/:ro"
- "kolla_logs:/var/log/kolla/"
run_once: True
delegate_to: "{{ groups['horizon'][0] }}"
...@@ -3,4 +3,7 @@ ...@@ -3,4 +3,7 @@
- include: register.yml - include: register.yml
- include: bootstrap.yml
when: horizon_backend_database | bool
- include: start.yml - include: start.yml
...@@ -29,6 +29,20 @@ WEBROOT = '/' ...@@ -29,6 +29,20 @@ WEBROOT = '/'
# https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts # https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
ALLOWED_HOSTS = ['*'] ALLOWED_HOSTS = ['*']
{% if horizon_backend_database | bool %}
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '{{ horizon_database_name }}',
'USER': '{{ horizon_database_user }}',
'PASSWORD': '{{ horizon_database_password }}',
'HOST': '{{ database_address }}',
'PORT': '{{ database_port }}'
}
}
{% endif %}
# Set SSL proxy settings: # Set SSL proxy settings:
# Pass this header from the proxy after terminating the SSL, # Pass this header from the proxy after terminating the SSL,
# and don't forget to strip it from the client's request. # and don't forget to strip it from the client's request.
......
#!/bin/bash #!/bin/bash
# Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases
# of the KOLLA_BOOTSTRAP variable being set, including empty.
if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then
MANAGE_PY="/usr/bin/python /usr/bin/manage.py"
if [[ -f "/var/lib/kolla/venv/bin/python" ]]; then
MANAGE_PY="/var/lib/kolla/venv/bin/python /var/lib/kolla/venv/bin/manage.py"
fi
$MANAGE_PY syncdb --noinput
exit 0
fi
# NOTE(pbourke): httpd will not clean up after itself in some cases which # NOTE(pbourke): httpd will not clean up after itself in some cases which
# results in the container not being able to restart. (bug #1489676, 1557036) # results in the container not being able to restart. (bug #1489676, 1557036)
if [[ "${KOLLA_BASE_DISTRO}" =~ debian|ubuntu ]]; then if [[ "${KOLLA_BASE_DISTRO}" =~ debian|ubuntu ]]; then
......
...@@ -199,6 +199,7 @@ ENV DEBIAN_FRONTEND noninteractive ...@@ -199,6 +199,7 @@ ENV DEBIAN_FRONTEND noninteractive
'libxslt-devel', 'libxslt-devel',
'libyaml-devel', 'libyaml-devel',
'MariaDB-devel', 'MariaDB-devel',
'MySQL-python',
'openldap-devel', 'openldap-devel',
'openssl-devel', 'openssl-devel',
'postgresql', 'postgresql',
......
...@@ -207,6 +207,12 @@ kolla_internal_vip_address: "10.10.10.254" ...@@ -207,6 +207,12 @@ kolla_internal_vip_address: "10.10.10.254"
#nova_backend_ceph: "{{ enable_ceph }}" #nova_backend_ceph: "{{ enable_ceph }}"
#######################
# Horizon options
#######################
#horizon_backend_database: "no"
####################################### #######################################
# Manila - Shared File Systems Options # Manila - Shared File Systems Options
####################################### #######################################
......
...@@ -93,6 +93,7 @@ senlin_database_password: ...@@ -93,6 +93,7 @@ senlin_database_password:
senlin_keystone_password: senlin_keystone_password:
horizon_secret_key: horizon_secret_key:
horizon_database_password:
telemetry_secret_key: telemetry_secret_key:
......
---
features:
- Allow the use of a database backend for Horizon
sessions.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment