diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-09-12 18:18:07 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-09-12 18:18:08 +0000 |
| commit | 7ad4249ead56fdcce8671f0afc40ddee881f7f8f (patch) | |
| tree | 5b005c412db40c166303d52fbe1dc02daff3f79b | |
| parent | ce9bfca079e95c935b4a1be37a8fbb73eb025dc7 (diff) | |
| parent | 82f6d3f44b78f3ab5ea4a7ecb89e765724b5ea16 (diff) | |
| download | kolla-7ad4249ead56fdcce8671f0afc40ddee881f7f8f.tar.gz kolla-7ad4249ead56fdcce8671f0afc40ddee881f7f8f.zip | |
Merge "Allow mysql to be used as a database for Ceilometer"
| -rw-r--r-- | ansible/group_vars/all.yml | 8 | ||||
| -rw-r--r-- | ansible/roles/ceilometer/tasks/bootstrap.yml | 47 | ||||
| -rw-r--r-- | ansible/roles/ceilometer/templates/ceilometer.conf.j2 | 4 | ||||
| -rw-r--r-- | ansible/roles/prechecks/tasks/service_checks.yml | 9 | ||||
| -rw-r--r-- | etc/kolla/globals.yml | 5 | ||||
| -rw-r--r-- | releasenotes/notes/add-mysql-ceilometer-backend-9ffdc4c0495fb801.yaml | 3 |
6 files changed, 66 insertions, 10 deletions
diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index af121ce61..15ccc94b4 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -320,13 +320,19 @@ glance_backend_file: "{{ not enable_ceph | bool }}" glance_backend_ceph: "{{ enable_ceph }}" +####################### +# Ceilometer options +####################### +# Valid options are [ mongodb, mysql ] +ceilometer_database_type: "mongodb" + + ################################# # Cinder options ################################# cinder_backend_ceph: "{{ enable_ceph }}" - ####################### # Nova options ####################### diff --git a/ansible/roles/ceilometer/tasks/bootstrap.yml b/ansible/roles/ceilometer/tasks/bootstrap.yml index 13fd87f9b..0e6f77fc2 100644 --- a/ansible/roles/ceilometer/tasks/bootstrap.yml +++ b/ansible/roles/ceilometer/tasks/bootstrap.yml @@ -1,10 +1,5 @@ --- -- name: Checking backend for ceilometer - local_action: fail msg="No backend enabled for ceilometer. Mongodb is the only supported one for now" - changed_when: false - when: enable_ceilometer | bool and not enable_mongodb | bool - -- name: Creating Ceilometer database +- name: Creating Ceilometer MongoDB database command: docker exec -t mongodb mongo --host {{ ceilometer_database_address }} --eval 'db = db.getSiblingDB("{{ ceilometer_database_name }}"); db.addUser({user':' "{{ ceilometer_database_user }}", pwd':' "{{ ceilometer_database_password}}", roles':' [ "readWrite", "dbAdmin" ]})' register: database run_once: true @@ -12,5 +7,45 @@ - "'already' not in database.stdout" - database.stdout.split()[4] != 'connecting' delegate_to: "{{ groups['mongodb'][0] }}" + when: + - ceilometer_database_type == "mongodb" + +- name: Creating Ceilometer mysql 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='{{ ceilometer_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['ceilometer-api'][0] }}" + when: + - ceilometer_database_type == "mysql" + +- name: Creating Ceilometer 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='{{ ceilometer_database_name }}' + password='{{ ceilometer_database_password }}' + host='%' + priv='{{ ceilometer_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['ceilometer-api'][0] }}" + when: + - ceilometer_database_type == "mysql" - include: bootstrap_service.yml diff --git a/ansible/roles/ceilometer/templates/ceilometer.conf.j2 b/ansible/roles/ceilometer/templates/ceilometer.conf.j2 index 3979f2c18..6ffe3b476 100644 --- a/ansible/roles/ceilometer/templates/ceilometer.conf.j2 +++ b/ansible/roles/ceilometer/templates/ceilometer.conf.j2 @@ -12,7 +12,11 @@ host = {{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['addr [collector] [database] +{% if ceilometer_database_type == "mongodb" %} connection = mongodb://{{ ceilometer_database_user }}:{{ ceilometer_database_password }}@{{ ceilometer_database_address }}:{{ mongodb_port }}/{{ ceilometer_database_name }} +{% elif ceilometer_database_type == "mysql" %} +connection = mysql+pymysql://{{ ceilometer_database_user }}:{{ ceilometer_database_password }}@{{ ceilometer_database_address }}/{{ ceilometer_database_name }} +{% endif %} [keystone_authtoken] memcached_servers = {{ kolla_internal_fqdn }}:{{ memcached_port }} diff --git a/ansible/roles/prechecks/tasks/service_checks.yml b/ansible/roles/prechecks/tasks/service_checks.yml index 700f3a276..b4e7ca99c 100644 --- a/ansible/roles/prechecks/tasks/service_checks.yml +++ b/ansible/roles/prechecks/tasks/service_checks.yml @@ -57,7 +57,10 @@ - groups['neutron-dhcp-agent'] | length < 2 or groups['neutron-l3-agent'] | length < 2 -- name: Checking backend for ceilometer - local_action: fail msg="No backend enabled for ceilometer. Mongodb is the only supported one for now" +- name: Checking mongodb backend for ceilometer + local_action: fail msg="ceilometer_database_type set to 'mongodb' but mongodb is not enabled" changed_when: false - when: enable_ceilometer | bool and not enable_mongodb | bool + when: + - enable_ceilometer | bool + - not enable_mongodb | bool + - ceilometer_database_type == "mongodb" diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 7bad57bc2..2ab095832 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -174,6 +174,11 @@ kolla_internal_vip_address: "10.10.10.254" #glance_backend_file: "yes" #glance_backend_ceph: "no" +####################### +# Ceilometer options +####################### +# Valid options are [ mongodb, mysql ] +#ceilometer_database_type: "mongodb" ####################### # Cinder options diff --git a/releasenotes/notes/add-mysql-ceilometer-backend-9ffdc4c0495fb801.yaml b/releasenotes/notes/add-mysql-ceilometer-backend-9ffdc4c0495fb801.yaml new file mode 100644 index 000000000..3625c49e1 --- /dev/null +++ b/releasenotes/notes/add-mysql-ceilometer-backend-9ffdc4c0495fb801.yaml @@ -0,0 +1,3 @@ +--- +features: + - Allow mysql to be used as a database for Ceilometer. |
