diff options
| author | SamYaple <sam@yaple.net> | 2016-02-01 23:01:59 +0000 |
|---|---|---|
| committer | SamYaple <sam@yaple.net> | 2016-02-02 21:56:54 +0000 |
| commit | e7dfd63bfc5cfba0117c410d418feaff0f7999f3 (patch) | |
| tree | adffe3d2d0f54d0ee1d3d9d92f1355711779f79c | |
| parent | 0e5ca754ace90ac79d5197f0803a3d45f03a0e61 (diff) | |
Create nova-api database
This is a required patch.
Kilo introduced a nova-api database but didn't use it. [1]
Mitaka now uses it and has broken booting instances. [2]
[1] https://wiki.openstack.org/wiki/ReleaseNotes/Kilo#OpenStack_Compute_.28Nova.29
[2] https://github.com/openstack/nova/blob/df0fca62cf5324f5b6eae0fed1f88c6c9ed61c71/releasenotes/notes/request-spec-api-db-b9cc6e0624d563c5.yaml
Change-Id: If0a7f4ba4937fab8d60f5236ca00db06faa768c7
Closes-Bug: #1540579
Notes
Notes (review):
Code-Review+2: Michal Rostecki <mrostecki@mirantis.com>
Code-Review+2: Jeffrey Zhang <jeffrey.zhang@99cloud.net>
Workflow+1: Jeffrey Zhang <jeffrey.zhang@99cloud.net>
Verified+2: Jenkins
Submitted-by: Jenkins
Submitted-at: Wed, 03 Feb 2016 15:30:49 +0000
Reviewed-on: https://review.openstack.org/274928
Project: openstack/kolla
Branch: refs/heads/master
| -rw-r--r-- | ansible/roles/nova/defaults/main.yml | 3 | ||||
| -rw-r--r-- | ansible/roles/nova/tasks/bootstrap.yml | 36 | ||||
| -rw-r--r-- | ansible/roles/nova/templates/nova.conf.j2 | 3 | ||||
| -rw-r--r-- | docker/nova/nova-api/extend_start.sh | 1 | ||||
| -rw-r--r-- | etc/kolla/passwords.yml | 1 |
5 files changed, 44 insertions, 0 deletions
diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml index 9d1f019..e98f061 100644 --- a/ansible/roles/nova/defaults/main.yml +++ b/ansible/roles/nova/defaults/main.yml | |||
| @@ -21,6 +21,9 @@ nova_database_name: "nova" | |||
| 21 | nova_database_user: "nova" | 21 | nova_database_user: "nova" |
| 22 | nova_database_address: "{{ kolla_internal_address }}" | 22 | nova_database_address: "{{ kolla_internal_address }}" |
| 23 | 23 | ||
| 24 | nova_api_database_name: "nova_api" | ||
| 25 | nova_api_database_user: "nova_api" | ||
| 26 | nova_api_database_address: "{{ kolla_internal_address }}" | ||
| 24 | 27 | ||
| 25 | #################### | 28 | #################### |
| 26 | # Docker | 29 | # Docker |
diff --git a/ansible/roles/nova/tasks/bootstrap.yml b/ansible/roles/nova/tasks/bootstrap.yml index 9f874ef..c9ed431 100644 --- a/ansible/roles/nova/tasks/bootstrap.yml +++ b/ansible/roles/nova/tasks/bootstrap.yml | |||
| @@ -17,6 +17,24 @@ | |||
| 17 | set_fact: | 17 | set_fact: |
| 18 | database_created: "{{ (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}" | 18 | database_created: "{{ (database.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}" |
| 19 | 19 | ||
| 20 | - name: Creating Nova-api database | ||
| 21 | command: docker exec -t kolla_ansible /usr/bin/ansible localhost | ||
| 22 | -m mysql_db | ||
| 23 | -a "login_host='{{ database_address }}' | ||
| 24 | login_user='{{ database_user }}' | ||
| 25 | login_password='{{ database_password }}' | ||
| 26 | name='{{ nova_api_database_name }}'" | ||
| 27 | register: database_api | ||
| 28 | changed_when: "{{ database_api.stdout.find('localhost | SUCCESS => ') != -1 and | ||
| 29 | (database_api.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}" | ||
| 30 | failed_when: database_api.stdout.split()[2] != 'SUCCESS' | ||
| 31 | run_once: True | ||
| 32 | delegate_to: "{{ groups['nova-api'][0] }}" | ||
| 33 | |||
| 34 | - name: Reading json from variable | ||
| 35 | set_fact: | ||
| 36 | database_api_created: "{{ (database_api.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}" | ||
| 37 | |||
| 20 | - name: Creating Nova database user and setting permissions | 38 | - name: Creating Nova database user and setting permissions |
| 21 | command: docker exec -t kolla_ansible /usr/bin/ansible localhost | 39 | command: docker exec -t kolla_ansible /usr/bin/ansible localhost |
| 22 | -m mysql_user | 40 | -m mysql_user |
| @@ -35,6 +53,24 @@ | |||
| 35 | run_once: True | 53 | run_once: True |
| 36 | delegate_to: "{{ groups['nova-api'][0] }}" | 54 | delegate_to: "{{ groups['nova-api'][0] }}" |
| 37 | 55 | ||
| 56 | - name: Creating Nova-api database user and setting permissions | ||
| 57 | command: docker exec -t kolla_ansible /usr/bin/ansible localhost | ||
| 58 | -m mysql_user | ||
| 59 | -a "login_host='{{ database_address }}' | ||
| 60 | login_user='{{ database_user }}' | ||
| 61 | login_password='{{ database_password }}' | ||
| 62 | name='{{ nova_api_database_name }}' | ||
| 63 | password='{{ nova_api_database_password }}' | ||
| 64 | host='%' | ||
| 65 | priv='{{ nova_api_database_name }}.*:ALL' | ||
| 66 | append_privs='yes'" | ||
| 67 | register: database_api_user_create | ||
| 68 | changed_when: "{{ database_api_user_create.stdout.find('localhost | SUCCESS => ') != -1 and | ||
| 69 | (database_api_user_create.stdout.split('localhost | SUCCESS => ')[1]|from_json).changed }}" | ||
| 70 | failed_when: database_api_user_create.stdout.split()[2] != 'SUCCESS' | ||
| 71 | run_once: True | ||
| 72 | delegate_to: "{{ groups['nova-api'][0] }}" | ||
| 73 | |||
| 38 | - name: Running Nova bootstrap container | 74 | - name: Running Nova bootstrap container |
| 39 | kolla_docker: | 75 | kolla_docker: |
| 40 | action: "start_container" | 76 | action: "start_container" |
diff --git a/ansible/roles/nova/templates/nova.conf.j2 b/ansible/roles/nova/templates/nova.conf.j2 index 3f6efe1..f5021fd 100644 --- a/ansible/roles/nova/templates/nova.conf.j2 +++ b/ansible/roles/nova/templates/nova.conf.j2 | |||
| @@ -125,6 +125,9 @@ password = {{ neutron_keystone_password }} | |||
| 125 | [database] | 125 | [database] |
| 126 | connection = mysql+pymysql://{{ nova_database_user }}:{{ nova_database_password }}@{{ nova_database_address }}/{{ nova_database_name }} | 126 | connection = mysql+pymysql://{{ nova_database_user }}:{{ nova_database_password }}@{{ nova_database_address }}/{{ nova_database_name }} |
| 127 | 127 | ||
| 128 | [api_database] | ||
| 129 | connection = mysql+pymysql://{{ nova_api_database_user }}:{{ nova_api_database_password }}@{{ nova_api_database_address }}/{{ nova_api_database_name }} | ||
| 130 | |||
| 128 | [keystone_authtoken] | 131 | [keystone_authtoken] |
| 129 | auth_uri = http://{{ kolla_internal_address }}:{{ keystone_public_port }} | 132 | auth_uri = http://{{ kolla_internal_address }}:{{ keystone_public_port }} |
| 130 | auth_url = http://{{ kolla_internal_address }}:{{ keystone_admin_port }} | 133 | auth_url = http://{{ kolla_internal_address }}:{{ keystone_admin_port }} |
diff --git a/docker/nova/nova-api/extend_start.sh b/docker/nova/nova-api/extend_start.sh index 93b63d5..c7bc9c8 100644 --- a/docker/nova/nova-api/extend_start.sh +++ b/docker/nova/nova-api/extend_start.sh | |||
| @@ -4,5 +4,6 @@ | |||
| 4 | # of the KOLLA_BOOTSTRAP variable being set, including empty. | 4 | # of the KOLLA_BOOTSTRAP variable being set, including empty. |
| 5 | if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then | 5 | if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then |
| 6 | nova-manage db sync | 6 | nova-manage db sync |
| 7 | nova-manage api_db sync | ||
| 7 | exit 0 | 8 | exit 0 |
| 8 | fi | 9 | fi |
diff --git a/etc/kolla/passwords.yml b/etc/kolla/passwords.yml index 369053b..050ec20 100644 --- a/etc/kolla/passwords.yml +++ b/etc/kolla/passwords.yml | |||
| @@ -33,6 +33,7 @@ glance_database_password: "password" | |||
| 33 | glance_keystone_password: "password" | 33 | glance_keystone_password: "password" |
| 34 | 34 | ||
| 35 | nova_database_password: "password" | 35 | nova_database_password: "password" |
| 36 | nova_api_database_password: "password" | ||
| 36 | nova_keystone_password: "password" | 37 | nova_keystone_password: "password" |
| 37 | 38 | ||
| 38 | neutron_database_password: "password" | 39 | neutron_database_password: "password" |