Commit 3121bdee authored by Alain Takoudjou's avatar Alain Takoudjou

repman: generate slave database password if not set

parent 33d3246a
...@@ -18,7 +18,7 @@ md5sum = 9aeb37bd4590aa7fa746ef70d78cc0d0 ...@@ -18,7 +18,7 @@ md5sum = 9aeb37bd4590aa7fa746ef70d78cc0d0
[instance-repman.cfg] [instance-repman.cfg]
_update_hash_filename_ = instance-repman.cfg.jinja2.in _update_hash_filename_ = instance-repman.cfg.jinja2.in
md5sum = 8e4fcaf0e76a1b8a799c671dd3ad2de9 md5sum = 4338ea29fcdae38393eb52d8d2bf66d1
[config-toml.in] [config-toml.in]
_update_hash_filename_ = templates/config.toml.in _update_hash_filename_ = templates/config.toml.in
...@@ -34,7 +34,7 @@ md5sum = 0eeb24c6aa0760f0d33c4cc2828ddf30 ...@@ -34,7 +34,7 @@ md5sum = 0eeb24c6aa0760f0d33c4cc2828ddf30
[template-mariadb.cfg] [template-mariadb.cfg]
_update_hash_filename_ = instance-mariadb.cfg.jinja2.in _update_hash_filename_ = instance-mariadb.cfg.jinja2.in
md5sum = b1344ec1c0ccd4670a87cea18b0aed53 md5sum = 6af0fb36ebdc5f1730ed3a9319eafdad
[template-my-cnf] [template-my-cnf]
_update_hash_filename_ = templates/my.cnf.in _update_hash_filename_ = templates/my.cnf.in
...@@ -46,7 +46,7 @@ md5sum = 96c151c376600a90fe2a44825f2de550 ...@@ -46,7 +46,7 @@ md5sum = 96c151c376600a90fe2a44825f2de550
[template-publish-slave-information] [template-publish-slave-information]
_update_hash_filename_ = publish-database-slave-parameters.cfg.in _update_hash_filename_ = publish-database-slave-parameters.cfg.in
md5sum = ea35caa846702c71cd353e81c766befb md5sum = 9616477ff993c55c2b43bf8797db6994
[mariadb-init-root-sql] [mariadb-init-root-sql]
_update_hash_filename_ = templates/mariadb_init_root.sql.in _update_hash_filename_ = templates/mariadb_init_root.sql.in
......
...@@ -17,18 +17,11 @@ ...@@ -17,18 +17,11 @@
[{{ section('publish') }}] [{{ section('publish') }}]
recipe = slapos.cookbook:publish.serialised recipe = slapos.cookbook:publish.serialised
-extends = publish-early
database-host = {{ host }}:{{ port }} database-host = {{ host }}:{{ port }}
monitor-base-url = ${monitor-publish-parameters:monitor-base-url} monitor-base-url = ${monitor-publish-parameters:monitor-base-url}
partition-path = ${buildout:directory} partition-path = ${buildout:directory}
receiver-port = ${dbjob-parameter:socat-port} receiver-port = ${dbjob-parameter:socat-port}
[publish-early]
recipe = slapos.cookbook:publish-early
-init =
database-list = {{ dumps(database_list) }}
[jinja2-template-base] [jinja2-template-base]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
mode = 644 mode = 644
......
{ {
"$schema": "http://json-schema.org/draft-04/schema", "$schema": "http://json-schema.org/draft-04/schema",
"properties": { "properties": {
"db_name": {
"description": "Database Name. If empty, name is autogenerated from slave reference.",
"title": "Database Name",
"type": "string",
"default": ""
},
"db_user": { "db_user": {
"description": "Database User", "description": "Database User, default is 'user'. This parameter is set only if database is not created yet.",
"title": "Database User", "title": "Database User",
"type": "string", "type": "string",
"default": "user" "default": "user"
}, },
"db_password": { "db_password": {
"description": "Database Password. If no password set, a password will be generated", "description": "Database password. If no password set, a password will be generated. This parameter is set only if database is not created yet.",
"title": "Database Password", "title": "Initial database password",
"type": "string", "type": "string",
"default": "" "default": ""
}, },
"db_charset": { "db_charset": {
"description": "Database Character set information.", "description": "Database Character set information. This parameter is set only if database is not created yet.",
"title": "Database Character set information", "title": "Database Character set information",
"type": "string", "type": "string",
"enum": [ "enum": [
......
...@@ -10,9 +10,16 @@ ...@@ -10,9 +10,16 @@
{% set cluster_list = [] -%} {% set cluster_list = [] -%}
{% set tag_list = ["gtidstrict", "bind", "pkg", "innodb", "noquerycache", "slow", "pfs", "linux", "readonly", "diskmonitor", "sqlerror", "compressbinlog", "bm4ci", "mroonga", "utctime", "readcommitted", "nohandshake"] -%} {% set tag_list = ["gtidstrict", "bind", "pkg", "innodb", "noquerycache", "slow", "pfs", "linux", "readonly", "diskmonitor", "sqlerror", "compressbinlog", "bm4ci", "mroonga", "utctime", "readcommitted", "nohandshake"] -%}
{% set frontend_parameter_dict = slapparameter_dict.get('slave-frontend', {}) -%} {% set frontend_parameter_dict = slapparameter_dict.get('slave-frontend', {}) -%}
{% set dabase_slave_list = [] -%} {% set database_slave_list = [] -%}
{% set db_name_list = [] -%} {% set db_name_list = [] -%}
{% macro password(name) -%}
[{{ name }}-password]
recipe = slapos.cookbook:generate.password
bytes = 12
{% endmacro -%}
[directory] [directory]
recipe = slapos.cookbook:mkdirectory recipe = slapos.cookbook:mkdirectory
home = ${buildout:directory} home = ${buildout:directory}
...@@ -60,18 +67,21 @@ template = inline:#!{{ bash_bin }} ...@@ -60,18 +67,21 @@ template = inline:#!{{ bash_bin }}
rendered = ${directory:bin}/update-proxysql-config rendered = ${directory:bin}/update-proxysql-config
mode = 755 mode = 755
[database-slave-information]
{% for instance_dict in slave_instance_list -%} {% for instance_dict in slave_instance_list -%}
{% set slave_dict = { {% set slave_dict = {
'name': 'db_%s' % instance_dict['slave_reference'].replace('-', '_').lower(), 'name': 'db_%s' % instance_dict['slave_reference'].replace('-', '_').lower(),
'user': instance_dict.get('db_user', 'user'), 'user': instance_dict.get('db_user', 'user'),
'password': instance_dict.get('db_password'), 'password': instance_dict.get('db_password', '${' ~ instance_dict['slave_reference'] ~ '-password:passwd}'),
'slave_reference': instance_dict['slave_reference'], 'slave_reference': instance_dict['slave_reference'],
'charset': instance_dict.get('db_charset', '') 'charset': instance_dict.get('db_charset', '')
} -%} } -%}
{{ slave_dict['name'] }} = {{ dumps(slave_dict) }} {% do database_slave_list.append(slave_dict) -%}
{% do dabase_slave_list.append(slave_dict) -%}
{% do db_name_list.append(slave_dict['name']) -%} {% do db_name_list.append(slave_dict['name']) -%}
{{ password(instance_dict['slave_reference']) }}
{% endfor %}
[database-slave-information]
{% for slave_dict in database_slave_list -%}
{{ slave_dict['name'] }} = !py!{{ slave_dict }}
{% endfor %} {% endfor %}
{% set db_list = db_name_list | join(' ') -%} {% set db_list = db_name_list | join(' ') -%}
...@@ -93,7 +103,7 @@ mode = 755 ...@@ -93,7 +103,7 @@ mode = 755
{% for i in range(0, db_amount) -%} {% for i in range(0, db_amount) -%}
{% do mariadb_dict.__setitem__('tcp-port', 2099 + (i * 100)) -%} {% do mariadb_dict.__setitem__('tcp-port', 2099 + (i * 100)) -%}
{% set section = 'request-mariadb-' ~ i -%} {% set section = 'request-mariadb-' ~ i -%}
{% set dbname = 'Mariadb-' ~ i -%} {% set dbname = 'Mariadb-' ~ i %}
[{{ section }}] [{{ section }}]
...@@ -113,7 +123,7 @@ config-repman-url = ${nginx-parameter:backend-url} ...@@ -113,7 +123,7 @@ config-repman-url = ${nginx-parameter:backend-url}
config-repman-secure-url = ${nginx-parameter:backend-ssl-url} config-repman-secure-url = ${nginx-parameter:backend-ssl-url}
config-cluster = {{ name }} config-cluster = {{ name }}
config-name = {{ dbname }} config-name = {{ dbname }}
config-database-list = {{ dumps(dabase_slave_list) }} config-database-list = !py!{{ database_slave_list }}
config-database-name = {{ dumps(db_list) }} config-database-name = {{ dumps(db_list) }}
return = return =
database-host database-host
......
...@@ -32,6 +32,6 @@ develop-eggs-directory = {{ develop_eggs_directory }} ...@@ -32,6 +32,6 @@ develop-eggs-directory = {{ develop_eggs_directory }}
offline = true offline = true
parts = parts =
{% for part in part_list %} {% for part in part_list -%}
{{ ' %s' % part }} {{ ' %s' % part }}
{% endfor %} {% endfor -%}
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