diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-09-22 04:00:28 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-09-22 04:00:28 +0000 |
| commit | ce3abeb0ebd3ef682315cc4d76db32cffb083248 (patch) | |
| tree | 434fa5b67efef7963961072f85cbaa06dcb7fea2 /ansible | |
| parent | a2c6eefdde5f334ea43e36fba2acad4cd23a6046 (diff) | |
| parent | d3f65a812f807cda9f27af0cf808de8be8acacf6 (diff) | |
| download | kolla-ce3abeb0ebd3ef682315cc4d76db32cffb083248.tar.gz kolla-ce3abeb0ebd3ef682315cc4d76db32cffb083248.zip | |
Merge "Allow use of database for Horizon sessions"
Diffstat (limited to 'ansible')
| -rw-r--r-- | ansible/group_vars/all.yml | 7 | ||||
| -rw-r--r-- | ansible/roles/horizon/defaults/main.yml | 7 | ||||
| -rw-r--r-- | ansible/roles/horizon/tasks/bootstrap.yml | 41 | ||||
| -rw-r--r-- | ansible/roles/horizon/tasks/bootstrap_service.yml | 19 | ||||
| -rw-r--r-- | ansible/roles/horizon/tasks/deploy.yml | 3 | ||||
| -rw-r--r-- | ansible/roles/horizon/templates/local_settings.j2 | 14 |
6 files changed, 90 insertions, 1 deletions
diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 641fa7467..52e7db6df 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -353,13 +353,18 @@ ceilometer_database_type: "mongodb" ################################# cinder_backend_ceph: "{{ enable_ceph }}" - ####################### # Nova options ####################### nova_backend_ceph: "{{ enable_ceph }}" nova_backend: "{{ 'rbd' if nova_backend_ceph | bool else 'default' }}" + +####################### +# Horizon options +####################### +horizon_backend_database: "no" + ################### # Ceph options ################### diff --git a/ansible/roles/horizon/defaults/main.yml b/ansible/roles/horizon/defaults/main.yml index e07b9ba0a..169bfd68b 100644 --- a/ansible/roles/horizon/defaults/main.yml +++ b/ansible/roles/horizon/defaults/main.yml @@ -2,6 +2,13 @@ project_name: "horizon" #################### +# Database +#################### +horizon_database_name: "horizon" +horizon_database_user: "horizon" +horizon_database_address: "{{ kolla_internal_fqdn }}:{{ database_port }}" + +#################### # Docker #################### horizon_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-horizon" diff --git a/ansible/roles/horizon/tasks/bootstrap.yml b/ansible/roles/horizon/tasks/bootstrap.yml new file mode 100644 index 000000000..6e6127495 --- /dev/null +++ b/ansible/roles/horizon/tasks/bootstrap.yml @@ -0,0 +1,41 @@ +--- +- 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 diff --git a/ansible/roles/horizon/tasks/bootstrap_service.yml b/ansible/roles/horizon/tasks/bootstrap_service.yml new file mode 100644 index 000000000..c20280f6b --- /dev/null +++ b/ansible/roles/horizon/tasks/bootstrap_service.yml @@ -0,0 +1,19 @@ +--- +- 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] }}" diff --git a/ansible/roles/horizon/tasks/deploy.yml b/ansible/roles/horizon/tasks/deploy.yml index 16fae2dad..3c04e136d 100644 --- a/ansible/roles/horizon/tasks/deploy.yml +++ b/ansible/roles/horizon/tasks/deploy.yml @@ -3,4 +3,7 @@ - include: register.yml +- include: bootstrap.yml + when: horizon_backend_database | bool + - include: start.yml diff --git a/ansible/roles/horizon/templates/local_settings.j2 b/ansible/roles/horizon/templates/local_settings.j2 index 05386f1d0..cabaf99af 100644 --- a/ansible/roles/horizon/templates/local_settings.j2 +++ b/ansible/roles/horizon/templates/local_settings.j2 @@ -29,6 +29,20 @@ WEBROOT = '/' # https://docs.djangoproject.com/en/dev/ref/settings/#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: # Pass this header from the proxy after terminating the SSL, # and don't forget to strip it from the client's request. |
