Commit f118a981 by Feanil Patel

Move standard DB and user creation to mysql role.

There are still databases and users that have params that are non standard in the edxlocal role.

This subset now all use one task so moving them first.
parent 9315cd95
......@@ -2,74 +2,3 @@
edxlocal_debian_pkgs:
- postfix
- libjpeg-dev
edxlocal_databases:
- "{{ ECOMMERCE_DEFAULT_DB_NAME | default(None) }}"
- "{{ INSIGHTS_DATABASE_NAME | default(None) }}"
- "{{ ORA_MYSQL_DB_NAME | default(None) }}"
- "{{ XQUEUE_MYSQL_DB_NAME | default(None) }}"
- "{{ EDXAPP_MYSQL_DB_NAME | default(None) }}"
- "{{ EDXAPP_MYSQL_CSMH_DB_NAME | default(None) }}"
- "{{ EDX_NOTES_API_MYSQL_DB_NAME | default(None) }}"
- "{{ PROGRAMS_DEFAULT_DB_NAME | default(None) }}"
- "{{ ANALYTICS_API_DEFAULT_DB_NAME | default(None) }}"
- "{{ ANALYTICS_API_REPORTS_DB_NAME | default(None) }}"
- "{{ CREDENTIALS_DEFAULT_DB_NAME | default(None) }}"
- "{{ DISCOVERY_DEFAULT_DB_NAME | default(None) }}"
edxlocal_database_users:
- {
db: "{{ ECOMMERCE_DEFAULT_DB_NAME | default(None) }}",
user: "{{ ECOMMERCE_DATABASES.default.USER | default(None) }}",
pass: "{{ ECOMMERCE_DATABASES.default.PASSWORD | default(None) }}"
}
- {
db: "{{ INSIGHTS_DATABASE_NAME | default(None) }}",
user: "{{ INSIGHTS_DATABASES.default.USER | default(None) }}",
pass: "{{ INSIGHTS_DATABASES.default.PASSWORD | default(None) }}"
}
- {
db: "{{ ORA_MYSQL_DB_NAME | default(None) }}",
user: "{{ ORA_MYSQL_USER | default(None) }}",
pass: "{{ ORA_MYSQL_PASSWORD | default(None) }}"
}
- {
db: "{{ XQUEUE_MYSQL_DB_NAME | default(None) }}",
user: "{{ XQUEUE_MYSQL_USER | default(None) }}",
pass: "{{ XQUEUE_MYSQL_PASSWORD | default(None) }}"
}
- {
db: "{{ EDXAPP_MYSQL_DB_NAME | default(None) }}",
user: "{{ EDXAPP_MYSQL_USER | default(None) }}",
pass: "{{ EDXAPP_MYSQL_PASSWORD | default(None) }}"
}
- {
db: "{{ EDXAPP_MYSQL_CSMH_DB_NAME | default(None) }}",
user: "{{ EDXAPP_MYSQL_CSMH_USER | default(None) }}",
pass: "{{ EDXAPP_MYSQL_CSMH_PASSWORD | default(None) }}"
}
- {
db: "{{ PROGRAMS_DEFAULT_DB_NAME | default(None) }}",
user: "{{ PROGRAMS_DATABASES.default.USER | default(None) }}",
pass: "{{ PROGRAMS_DATABASES.default.PASSWORD | default(None) }}"
}
- {
db: "{{ ANALYTICS_PIPELINE_OUTPUT_DATABASE_NAME | default(None) }}",
user: "{{ ANALYTICS_PIPELINE_OUTPUT_DATABASE.username }}",
pass: "{{ ANALYTICS_PIPELINE_OUTPUT_DATABASE.password }}"
}
- {
db: "{{ HIVE_METASTORE_DATABASE_NAME | default(None) }}",
user: "{{ HIVE_METASTORE_DATABASE.user | default(None) }}",
pass: "{{ HIVE_METASTORE_DATABASE.password | default(None) }}"
}
- {
db: "{{ CREDENTIALS_DEFAULT_DB_NAME | default(None) }}",
user: "{{ CREDENTIALS_MYSQL_USER | default(None) }}",
pass: "{{ CREDENTIALS_MYSQL_PASSWORD | default(None) }}"
}
- {
db: "{{ DISCOVERY_DEFAULT_DB_NAME | default(None) }}",
user: "{{ DISCOVERY_MYSQL_USER | default(None) }}",
pass: "{{ DISCOVERY_MYSQL_PASSWORD | default(None) }}"
}
......@@ -6,48 +6,6 @@
apt: pkg={{ item }} install_recommends=yes state=present
with_items: edxlocal_debian_pkgs
# TODO: Add a test to make sure mysql is running.
- name: create databases
mysql_db:
db: "{{ item }}"
state: present
encoding: utf8
when: item != None and item != ''
with_items: "{{ edxlocal_databases }}"
- name: create database users
mysql_user:
name: "{{ item.user }}"
password: "{{ item.pass }}"
priv: "{{ item.db }}.*:ALL"
append_privs: yes
when: item.db != None and item.db != ''
with_items: "{{ edxlocal_database_users }}"
- name: setup the migration db user
mysql_user:
name: "{{ COMMON_MYSQL_MIGRATE_USER }}"
password: "{{ COMMON_MYSQL_MIGRATE_PASS }}"
priv: "{{ item }}.*:ALL"
append_privs: yes
when: item != None and item != ''
with_items: "{{ edxlocal_databases }}"
- name: create api user for the analytics api
mysql_user: >
name=api001
password="{{ ANALYTICS_API_DATABASES.default.PASSWORD }}"
priv='{{ ANALYTICS_API_DATABASES.default.NAME }}.*:ALL/reports.*:SELECT'
when: ANALYTICS_API_SERVICE_CONFIG is defined
- name: create read-only reports user for the analytics-api
mysql_user: >
name=reports001
password="{{ ANALYTICS_API_DATABASES.reports.PASSWORD }}"
priv='{{ ANALYTICS_API_DATABASES.reports.NAME }}.*:SELECT'
when: ANALYTICS_API_SERVICE_CONFIG is defined
- name: create a database for the hive metastore
mysql_db: >
db={{ HIVE_METASTORE_DATABASE.name }}
......
......@@ -5,3 +5,73 @@ mysql_debian_pkgs:
- "mysql-server-5.6"
- python-mysqldb
mysql_databases:
- db: "{{ ECOMMERCE_DEFAULT_DB_NAME | default(None) }}"
- db: "{{ INSIGHTS_DATABASE_NAME | default(None) }}"
- db: "{{ ORA_MYSQL_DB_NAME | default(None) }}"
- db: "{{ XQUEUE_MYSQL_DB_NAME | default(None) }}"
- db: "{{ EDXAPP_MYSQL_DB_NAME | default(None) }}"
- db: "{{ EDX_NOTES_API_MYSQL_DB_NAME | default(None) }}"
- db: "{{ PROGRAMS_DEFAULT_DB_NAME | default(None) }}"
- db: "{{ ANALYTICS_API_DEFAULT_DB_NAME | default(None) }}"
- db: "{{ ANALYTICS_API_REPORTS_DB_NAME | default(None) }}"
# - db: "{{ HIVE_METASTORE_DATABASE.name | default(None) }}"
# encoding: "latin1"
mysql_database_users:
- {
db: "{{ ECOMMERCE_DEFAULT_DB_NAME | default(None) }}",
user: "{{ ECOMMERCE_DATABASES.default.USER | default(None) }}",
pass: "{{ ECOMMERCE_DATABASES.default.PASSWORD | default(None) }}"
priv: "{{ ECOMMERCE_DEFAULT_DB_NAME | default(None) }}.*:ALL"
}
- {
db: "{{ INSIGHTS_DATABASE_NAME | default(None) }}",
user: "{{ INSIGHTS_DATABASES.default.USER | default(None) }}",
pass: "{{ INSIGHTS_DATABASES.default.PASSWORD | default(None) }}"
priv: "{{ INSIGHTS_DATABASE_NAME | default(None) }}.*:ALL"
}
- {
db: "{{ XQUEUE_MYSQL_DB_NAME | default(None) }}",
user: "{{ XQUEUE_MYSQL_USER | default(None) }}",
pass: "{{ XQUEUE_MYSQL_PASSWORD | default(None) }}"
priv: "{{ XQUEUE_MYSQL_DB_NAME | default(None) }}.*:ALL"
}
- {
db: "{{ EDXAPP_MYSQL_DB_NAME | default(None) }}",
user: "{{ EDXAPP_MYSQL_USER | default(None) }}",
pass: "{{ EDXAPP_MYSQL_PASSWORD | default(None) }}"
priv: "{{ EDXAPP_MYSQL_DB_NAME | default(None) }}.*:ALL"
}
- {
db: "{{ PROGRAMS_DEFAULT_DB_NAME | default(None) }}",
user: "{{ PROGRAMS_DATABASES.default.USER | default(None) }}",
pass: "{{ PROGRAMS_DATABASES.default.PASSWORD | default(None) }}"
priv: "{{ PROGRAMS_DEFAULT_DB_NAME | default(None) }}.*:ALL"
}
- {
db: "{{ ANALYTICS_PIPELINE_OUTPUT_DATABASE_NAME | default(None) }}",
user: "{{ ANALYTICS_PIPELINE_OUTPUT_DATABASE.username }}",
pass: "{{ ANALYTICS_PIPELINE_OUTPUT_DATABASE.password }}"
priv: "{{ ANALYTICS_PIPELINE_OUTPUT_DATABASE_NAME | default(None) }}.*:ALL"
}
- {
db: "{{ HIVE_METASTORE_DATABASE_NAME | default(None) }}",
user: "{{ HIVE_METASTORE_DATABASE.user | default(None) }}",
pass: "{{ HIVE_METASTORE_DATABASE.password | default(None) }}"
priv: "{{ HIVE_METASTORE_DATABASE_NAME | default(None) }}.*:ALL"
}
- {
db: "{{ ANALYTICS_API_DEFAULT_DB_NAME | deafult(None) }}"
user: "api001"
pass: "{{ ANALYTICS_API_DATABASES.default.PASSWORD }}"
priv: "{{ ANALYTICS_API_DATABASES.default.NAME }}.*:ALL/reports.*:SELECT"
}
- {
db: "{{ ANALYTICS_API_REPORTS_DB_NAME | deafult(None) }}"
user: "api001"
pass: "{{ ANALYTICS_API_DATABASES.reports.PASSWORD }}"
priv: "{{ ANALYTICS_API_DATABASES.reports.NAME }}.*:SELECT"
}
......@@ -5,20 +5,98 @@
register: mysql_56_installed
changed_when: no
- name: Important message
debug:
msg: |
"MySQL experimental is already installed, make 'remove_experimental_mysql: true' in defaults/main.yml,
if you want to remove it and install the stable version of MySQL"
when: "'5.6.14' in mysql_56_installed.stdout and not remove_experimental_mysql"
- pause:
seconds: 10
when: "'5.6.14' in mysql_56_installed.stdout and not remove_experimental_mysql"
# remove this, once the new devstack is out
- include: remove_mysql_experimental.yml
when: remove_experimental_mysql
- include: mysql.yml
when: (mysql_56_installed.rc == 1) or (remove_experimental_mysql)
\ No newline at end of file
# Install PPA for installing MySQL 5.6 on Ubuntu 12.04LTS
- name: install ppa key
apt_key:
id=E5267A6C
url='{{ COMMON_UBUNTU_APT_KEYSERVER }}0x14AA40EC0831756756D7F66C4F4EA0AAE5267A6C'
state=present
tags:
- install:system-requirements
- name: install apt repository
apt_repository:
repo='deb http://ppa.launchpad.net/ondrej/mysql-5.6/ubuntu precise main'
update_cache=yes
tags:
- install:system-requirements
- name: look for mysql 5.5
shell: dpkg -L mysql-server-5.5
ignore_errors: true
register: mysql_55_installed
tags:
- install:system-requirements
- include: remove_mysql_55.yml
when: mysql_55_installed.rc != 1
tags:
- install:system-requirements
- name: install mysql 56 and dependencies
apt: pkg={{ item }} install_recommends=yes force=yes state=present
with_items:
- software-properties-common
- mysql-server
tags:
- install:system-requirements
- name: install mysql debian packages
apt: pkg={{ item }} install_recommends=yes state=present
with_items: mysql_debian_pkgs
- name: start mysql
service: name=mysql state=started
tags:
- manage:start
- name: install packages needed for single server
apt: pkg={{','.join(mysql_debian_pkgs)}} install_recommends=yes state=present
tags:
- install:app-requirements
##### Create the DBs
# TODO: Add a test to make sure mysql is running.
- name: create databases
mysql_db:
db: '{{ item.db }}'
state: present
encoding: '{{ item.encoding | default("utf8") }}'
login_user: '{{ MYSQL_LOGIN_USER }}'
login_password: '{{ MYSQL_LOGIN_PASSWORD }}'
login_host: '{{ MYSQL_LOGIN_HOST }}'
login_port: '{{ MYSQL_LOGIN_PORT }}'
when: item.db != None and item.db != ''
with_items: "{{ mysql_databases }}"
##### Create the users
- name: setup the migration db user
mysql_user:
name: "{{ COMMON_MYSQL_MIGRATE_USER }}"
password: "{{ COMMON_MYSQL_MIGRATE_PASS }}"
priv: "{{ item }}.*:SELECT"
# ANY REASON TO KEEP append_privs?
append_privs: yes
login_user: '{{ MYSQL_LOGIN_USER }}'
login_password: '{{ MYSQL_LOGIN_PASSWORD }}'
login_host: '{{ MYSQL_LOGIN_HOST }}'
login_port: '{{ MYSQL_LOGIN_PORT }}'
when: item != None and item != ''
with_items: "{{ mysql_databases }}"
#TODO: Tag me
#
- name: create database users
mysql_user:
name: "{{ item.user }}"
password: "{{ item.pass }}"
# Should we be giving these users ALL?
priv: "{{ item.priv }}"
login_user: '{{ MYSQL_LOGIN_USER }}'
login_password: '{{ MYSQL_LOGIN_PASSWORD }}'
login_host: '{{ MYSQL_LOGIN_HOST }}'
login_port: '{{ MYSQL_LOGIN_PORT }}'
when: item.db != None and item.db != ''
with_items: "{{ mysql_database_users }}"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment