diff options
author | liyuenan <liyuenan@huawei.com> | 2016-10-11 16:44:59 +0800 |
---|---|---|
committer | liyuenan <liyuenan@huawei.com> | 2016-10-13 13:48:20 +0800 |
commit | a8c4ed17ef020cf89085550541cd7d52b832e5f9 (patch) | |
tree | ea99531e3ba5bee9523f2d264d29ba65c561e6e9 /deploy/adapters/ansible/openstack_newton_xenial/roles/database | |
parent | 63d8f65494ed9e57d29ed1ecbce1caba81677499 (diff) |
Add the roles for OpenStack Newton
JIRA: COMPASS-491
Change-Id: Id3ae5b254d06766a74140ec0b13608eb67339e29
Signed-off-by: liyuenan <liyuenan@huawei.com>
Diffstat (limited to 'deploy/adapters/ansible/openstack_newton_xenial/roles/database')
5 files changed, 284 insertions, 0 deletions
diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/database/tasks/mariadb_cluster_debian.yml b/deploy/adapters/ansible/openstack_newton_xenial/roles/database/tasks/mariadb_cluster_debian.yml new file mode 100644 index 00000000..442cd18b --- /dev/null +++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/database/tasks/mariadb_cluster_debian.yml @@ -0,0 +1,69 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +- name: get cluster status + shell: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_evs_state"'|awk '{print $2}' + register: cluster_status + when: + - inventory_hostname == haproxy_hosts.keys()[0] + +- name: start first node to create new cluster + shell: > + service mysql bootstrap; + service mysql start; + when: | + inventory_hostname == haproxy_hosts.keys()[0] + and not cluster_status.stdout | search("OPERATIONAL") + +- name: wait for cluster ready + shell: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_evs_state"'|awk '{print $2}' + register: cluster_status + until: cluster_status|success + failed_when: not cluster_status.stdout | search("OPERATIONAL") + retries: 10 + delay: 3 + when: | + inventory_hostname == haproxy_hosts.keys()[0] + and not cluster_status.stdout | search("OPERATIONAL") + +- name: if I in the cluster nodes + shell: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_incoming_addresses"'|awk '{print $2}' + register: cluster_nodes + changed_when: false + +- name: restart other nodes and join cluster1 + shell: service mysql restart; + when: | + inventory_hostname != haproxy_hosts.keys()[0] + and not cluster_nodes.stdout | search( "{{ internal_ip }}" ) + ignore_errors: True + +- name: delay 60 seconds + shell: sleep 60 + +- name: restart other nodes and join cluster2 + shell: service mysql restart; + when: | + inventory_hostname != haproxy_hosts.keys()[0] + and not cluster_nodes.stdout | search( "{{ internal_ip }}" ) + +- name: chmod directory + shell: > + chmod 755 -R /var/lib/mysql/ ; + chmod 755 -R /var/log/mysql/ ; + chmod 755 -R /etc/mysql/conf.d/; + +- name: restart first nodes + shell: service mysql restart + when: | + (inventory_hostname == haproxy_hosts.keys()[0] + and haproxy_hosts|length > 1 + and not cluster_nodes.stdout | search( '{{ internal_ip }}' )) + + diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/database/tasks/mariadb_install.yml b/deploy/adapters/ansible/openstack_newton_xenial/roles/database/tasks/mariadb_install.yml new file mode 100644 index 00000000..1b08172d --- /dev/null +++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/database/tasks/mariadb_install.yml @@ -0,0 +1,70 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +- name: disable auto start + copy: + content: "#!/bin/sh\nexit 101" + dest: "/usr/sbin/policy-rc.d" + mode: 0755 + when: ansible_os_family == "Debian" + +- name: change open file limit + copy: + content: "* - nofile 65536 }}" + dest: "/etc/security/limits.conf" + mode: 0755 + +- name: install python-mysqldb + action: "{{ ansible_pkg_mgr }} name={{ item }} state=present" + with_items: maridb_packages | union(packages_noarch) + +- name: create conf dir for wsrep + file: path=/etc/my.cnf.d state=directory mode=0755 + when: ansible_os_family == "RedHat" + +- name: update mariadb config file + template: + src: '{{ item.src }}' + dest: '{{ item.dest }}' + backup: yes + mode: 0644 + with_items: mysql_config + +- name: bugfix for rsync version 3.1 + lineinfile: + dest: /usr/bin/wsrep_sst_rsync + state: absent + regexp: '{{ item }}' + with_items: + - "\\s*uid = \\$MYUID$" + - "\\s*gid = \\$MYGID$" + +- name: enable auto start + file: + path=/usr/sbin/policy-rc.d + state=absent + when: ansible_os_family == "Debian" + +- name: set owner + file: path=/var/lib/mysql owner=mysql group=mysql recurse=yes state=directory mode=0755 + +- name: get logfile stat + stat: path='{{ mysql_data_dir }}/ib_logfile0' + register: logfile_stat + +- debug: msg='{{ logfile_stat.stat.exists}}' +- debug: msg='{{ logfile_stat.stat.size }}' + when: logfile_stat.stat.exists + +- name: rm logfile if exist and size mismatch + shell: 'rm -rf {{ mysql_data_dir }}/ib_logfile*' + when: | + logfile_stat.stat.exists + and logfile_stat.stat.size != 1073741824 + diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/database/templates/data.j2 b/deploy/adapters/ansible/openstack_newton_xenial/roles/database/templates/data.j2 new file mode 100644 index 00000000..66c2fead --- /dev/null +++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/database/templates/data.j2 @@ -0,0 +1,51 @@ +#!/bin/sh +mysql -uroot -Dmysql <<EOF +drop database if exists keystone; +drop database if exists glance; +drop database if exists neutron; +drop database if exists nova; +drop database if exists cinder; +drop database if exists heat; +drop database if exists aodh; + +CREATE DATABASE keystone; +{% for host in ['%', 'localhost', inventory_hostname] %} +GRANT ALL ON keystone.* TO 'keystone'@'{{ host }}' IDENTIFIED BY '{{ KEYSTONE_DBPASS }}'; +{% endfor %} + +CREATE DATABASE glance; +{% for host in ['%', 'localhost', inventory_hostname] %} +GRANT ALL ON glance.* TO 'glance'@'{{ host }}' IDENTIFIED BY '{{ GLANCE_DBPASS }}'; +{% endfor %} + +CREATE DATABASE neutron; +{% for host in ['%', 'localhost', inventory_hostname] %} +GRANT ALL ON neutron.* TO 'neutron'@'{{ host }}' IDENTIFIED BY '{{ NEUTRON_DBPASS }}'; +{% endfor %} + +CREATE DATABASE nova; +{% for host in ['%', 'localhost', inventory_hostname] %} +GRANT ALL ON nova.* TO 'nova'@'{{ host }}' IDENTIFIED BY '{{ NOVA_DBPASS }}'; +{% endfor %} + +CREATE DATABASE cinder; +{% for host in ['%', 'localhost', inventory_hostname] %} +GRANT ALL ON cinder.* TO 'cinder'@'{{ host }}' IDENTIFIED BY '{{ CINDER_DBPASS }}'; +{% endfor %} + +CREATE DATABASE heat; +{% for host in ['%', 'localhost', inventory_hostname] %} +GRANT ALL ON heat.* TO 'heat'@'{{ host }}' IDENTIFIED BY '{{ HEAT_DBPASS }}'; +{% endfor %} + +CREATE DATABASE aodh; +{% for host in ['%', 'localhost', inventory_hostname] %} +GRANT ALL ON aodh.* TO 'aodh'@'{{ host }}' IDENTIFIED BY '{{ AODH_DBPASS }}'; +{% endfor %} + +{% if WSREP_SST_USER is defined %} +{% for host in ['%', 'localhost', inventory_hostname] %} +GRANT ALL ON *.* TO '{{ WSREP_SST_USER }}'@'{{ host }}' IDENTIFIED BY '{{ WSREP_SST_PASS }}'; +{% endfor %} +{% endif %} +EOF diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/database/vars/Debian.yml b/deploy/adapters/ansible/openstack_newton_xenial/roles/database/vars/Debian.yml new file mode 100644 index 00000000..1021524d --- /dev/null +++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/database/vars/Debian.yml @@ -0,0 +1,55 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +mongodb_packages: + - mongodb-server + - mongodb-clients + - python-pymongo + +mysql_packages: + - python-mysqldb + - mysql-server + +maridb_packages: + - apt-transport-https + - debconf-utils + - libaio1 + - libc6 + - libdbd-mysql-perl + - libgcc1 + - libgcrypt20 + - libstdc++6 + - python-software-properties + - mariadb-client + - galera-3 + - rsync + - socat + - mariadb-galera-server-10.0 + - python-mysqldb + +pip_packages: [] + +services: [] + +mongodb_service: mongodb +mysql_config: + - dest: /etc/mysql/my.cnf + src: my.cnf + - dest: /etc/mysql/conf.d/wsrep.cnf + src: wsrep.cnf + +mysql_config_dir: /etc/mysql/conf.d +mysql_data_dir: /var/lib/mysql + +mongodb_config: + dest: /etc/mongodb.conf + src: mongodb.conf + journal: /var/lib/mongodb/journal/* + +wsrep_provider_file: "/usr/lib/galera/libgalera_smm.so" diff --git a/deploy/adapters/ansible/openstack_newton_xenial/roles/database/vars/main.yml b/deploy/adapters/ansible/openstack_newton_xenial/roles/database/vars/main.yml new file mode 100644 index 00000000..a32897f0 --- /dev/null +++ b/deploy/adapters/ansible/openstack_newton_xenial/roles/database/vars/main.yml @@ -0,0 +1,39 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## +--- +packages_noarch: [] + +services_noarch: + - mysql + +credentials: + - user: keystone + db: keystone + password: "{{ KEYSTONE_DBPASS }}" + - user: neutron + db: neutron + password: "{{ NEUTRON_DBPASS }}" + - user: glance + db: glance + password: "{{ GLANCE_DBPASS }}" + - user: nova + db: nova_api + password: "{{ NOVA_DBPASS }}" + - user: nova + db: nova + password: "{{ NOVA_DBPASS }}" + - user: cinder + db: cinder + password: "{{ CINDER_DBPASS }}" + - user: heat + db: heat + password: "{{ HEAT_DBPASS }}" + - user: aodh + db: aodh + password: "{{ AODH_DBPASS }}" |