)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"84514745720bac078c8712a9eaa34e694cfbed21","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change adds minimal support for deploying multiple"},{"line_number":10,"context_line":"instances of MariaDB which may or may not be on the same node."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This change is useful for deploying a database per service, and"},{"line_number":13,"context_line":"for the Cells v2 work."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The container name, docker volume, configuration and log files"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_333336f9","line":12,"range":{"start_line":12,"start_character":38,"end_line":12,"end_character":46},"updated":"2019-08-08 16:28:28.000000000","message":"one database engine instance per service?","commit_id":"587aa5f89027778a1d087a503da37b3e20344d8e"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"57b7b6e5d8e8eb89196033e07a773b1b053807c2","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change adds minimal support for deploying multiple"},{"line_number":10,"context_line":"instances of MariaDB which may or may not be on the same node."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This change is useful for deploying a database per service, and"},{"line_number":13,"context_line":"for the Cells v2 work."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The container name, docker volume, configuration and log files"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7faddb67_f3283eef","line":12,"range":{"start_line":12,"start_character":38,"end_line":12,"end_character":46},"in_reply_to":"7faddb67_333336f9","updated":"2019-08-08 16:50:23.000000000","message":"Agreed, thanks.","commit_id":"587aa5f89027778a1d087a503da37b3e20344d8e"}],"ansible/group_vars/all.yml":[{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"5671417278c8e59234600179190cc3bcb94694d1","unresolved":false,"context_lines":[{"line_number":297,"context_line":"manila_api_port: \"8786\""},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"mariadb_port: \"{{ database_port }}\""},{"line_number":300,"context_line":"mariadb_group: \u0027mariadb\u0027"},{"line_number":301,"context_line":"mariadb_wsrep_port: \"4567\""},{"line_number":302,"context_line":"mariadb_ist_port: \"4568\""},{"line_number":303,"context_line":"mariadb_sst_port: \"4444\""}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_6d5217e1","line":300,"range":{"start_line":300,"start_character":15,"end_line":300,"end_character":16},"updated":"2019-08-09 14:49:19.000000000","message":"nit: should probably be \"","commit_id":"da5b95b0dfb5d559a21393a1030b0661974cf8fc"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"ab2a4a660624d46ed22818da37d8f64730e214ab","unresolved":false,"context_lines":[{"line_number":307,"context_line":"manila_api_port: \"8786\""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"mariadb_port: \"{{ database_port }}\""},{"line_number":310,"context_line":"mariadb_group: \"mariadb\""},{"line_number":311,"context_line":"mariadb_wsrep_port: \"4567\""},{"line_number":312,"context_line":"mariadb_ist_port: \"4568\""},{"line_number":313,"context_line":"mariadb_sst_port: \"4444\""}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_6a8eb32f","line":310,"range":{"start_line":310,"start_character":0,"end_line":310,"end_character":13},"updated":"2019-09-16 16:19:09.000000000","message":"maybe name it \"host_group\" - \"group\" has so many meanings in our contexts","commit_id":"559da100ddb2fbd5221775b7aac73d2f9c67063b"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"56da8495ac07b9e6335234650cdaa318fa19a51b","unresolved":false,"context_lines":[{"line_number":307,"context_line":"manila_api_port: \"8786\""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"mariadb_port: \"{{ database_port }}\""},{"line_number":310,"context_line":"mariadb_group: \"mariadb\""},{"line_number":311,"context_line":"mariadb_wsrep_port: \"4567\""},{"line_number":312,"context_line":"mariadb_ist_port: \"4568\""},{"line_number":313,"context_line":"mariadb_sst_port: \"4444\""}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_7f04217c","line":310,"range":{"start_line":310,"start_character":0,"end_line":310,"end_character":13},"in_reply_to":"3fa7e38b_6a8eb32f","updated":"2019-09-17 13:22:30.000000000","message":"I\u0027ve added a comment to try and explain what the purpose of this is. I\u0027d prefer to leave it like this because it\u0027s more consistent with similar variables like `cinder_volume_group` and `role_rabbitmq_groups`.","commit_id":"559da100ddb2fbd5221775b7aac73d2f9c67063b"}],"ansible/roles/mariadb/defaults/main.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"mariadb_services:"},{"line_number":5,"context_line":"  mariadb:"},{"line_number":6,"context_line":"    container_name: \"{{ project_name }}\""},{"line_number":7,"context_line":"    group: \"{{ role_mariadb_group }}\""},{"line_number":8,"context_line":"    enabled: true"},{"line_number":9,"context_line":"    image: \"{{ mariadb_image_full }}\""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_41a51cb4","line":6,"range":{"start_line":6,"start_character":24,"end_line":6,"end_character":36},"updated":"2019-08-19 16:58:17.000000000","message":"I know this is done in rabbitmq, but using project_name here didn\u0027t feel quite right, and I eventually found a reason to back it up. The pattern doesn\u0027t extend to multiple services in one role. I\u0027d rather see a more explicit role_mariadb_container_name or role_mariadb_service_name, or possibly both (former being /etc/kolla directory, latter being container name). Possibly we just set the container name to the service name with replace(\u0027-\u0027, \u0027_\u0027)","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"e42fab5342cf1874b5eee37830933c4087de4141","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"mariadb_services:"},{"line_number":5,"context_line":"  mariadb:"},{"line_number":6,"context_line":"    container_name: \"{{ project_name }}\""},{"line_number":7,"context_line":"    group: \"{{ role_mariadb_group }}\""},{"line_number":8,"context_line":"    enabled: true"},{"line_number":9,"context_line":"    image: \"{{ mariadb_image_full }}\""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_12a526b5","line":6,"range":{"start_line":6,"start_character":24,"end_line":6,"end_character":36},"in_reply_to":"7faddb67_41a51cb4","updated":"2019-08-20 15:03:18.000000000","message":"Fair point - it would be nice for this to work in the same way in other roles like Nova.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"mariadb_services:"},{"line_number":5,"context_line":"  mariadb:"},{"line_number":6,"context_line":"    container_name: \"{{ project_name }}\""},{"line_number":7,"context_line":"    group: \"{{ role_mariadb_group }}\""},{"line_number":8,"context_line":"    enabled: true"},{"line_number":9,"context_line":"    image: \"{{ mariadb_image_full }}\""},{"line_number":10,"context_line":"    environment:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_c137cce2","line":7,"range":{"start_line":7,"start_character":15,"end_line":7,"end_character":33},"updated":"2019-08-19 16:58:17.000000000","message":"I think it would help if we had a list of these new variables in this file with an explanation of their usage. Either with default values or commented out, I don\u0027t mind.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"bc2fce42508b6955f932b7ef4697250af3b9bd86","unresolved":false,"context_lines":[{"line_number":65,"context_line":"####################"},{"line_number":66,"context_line":"role_mariadb_namespace: \"\""},{"line_number":67,"context_line":"mariadb_namespace: \"{{ role_mariadb_namespace + \u0027-\u0027 if role_mariadb_namespace else \u0027\u0027 }}\""},{"line_number":68,"context_line":"mariadb_container_namespace: \"{{ mariadb_namespace|replace(\u0027-\u0027, \u0027_\u0027) }}\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"####################"},{"line_number":71,"context_line":"# Database"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7faddb67_21748a35","line":68,"updated":"2019-08-20 15:42:01.000000000","message":"Let\u0027s add some helper variables for mariadb_container_name and mariadb_service_name - they\u0027re used all over the place. You could embed the service_name in the service definition if that helps keep it generalised for multiple services.","commit_id":"7c426fc2f18369a122b1048713245d0f1d3041a8"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3bb25616328ab6ac653339a366837554f11760f3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    enabled: true"},{"line_number":10,"context_line":"    image: \"{{ mariadb_image_full }}\""},{"line_number":11,"context_line":"    environment:"},{"line_number":12,"context_line":"      MARIADB_LOG_DIR: \"/var/log/kolla/{{ mariadb_container_name }}\""},{"line_number":13,"context_line":"    volumes: \"{{ mariadb_default_volumes + mariadb_extra_volumes }}\""},{"line_number":14,"context_line":"    dimensions: \"{{ mariadb_dimensions }}\""},{"line_number":15,"context_line":"    haproxy:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_dc277811","line":12,"range":{"start_line":12,"start_character":42,"end_line":12,"end_character":64},"updated":"2019-08-22 09:07:16.000000000","message":"nit: log directories usually have hyphens - use instance_name?","commit_id":"621d6030f2f3687e8a40263ece59aebebb8c237f"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"18a2ebc4d4718994b71fa179e1643127bc952c5d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    enabled: true"},{"line_number":10,"context_line":"    image: \"{{ mariadb_image_full }}\""},{"line_number":11,"context_line":"    environment:"},{"line_number":12,"context_line":"      MARIADB_LOG_DIR: \"/var/log/kolla/{{ mariadb_container_name }}\""},{"line_number":13,"context_line":"    volumes: \"{{ mariadb_default_volumes + mariadb_extra_volumes }}\""},{"line_number":14,"context_line":"    dimensions: \"{{ mariadb_dimensions }}\""},{"line_number":15,"context_line":"    haproxy:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_462df2ac","line":12,"range":{"start_line":12,"start_character":42,"end_line":12,"end_character":64},"in_reply_to":"7faddb67_66f10e6b","updated":"2019-08-22 09:49:59.000000000","message":"s/not/not sure","commit_id":"621d6030f2f3687e8a40263ece59aebebb8c237f"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"cf8becec94f52358b3d3235673298f48b2b83f7e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    enabled: true"},{"line_number":10,"context_line":"    image: \"{{ mariadb_image_full }}\""},{"line_number":11,"context_line":"    environment:"},{"line_number":12,"context_line":"      MARIADB_LOG_DIR: \"/var/log/kolla/{{ mariadb_container_name }}\""},{"line_number":13,"context_line":"    volumes: \"{{ mariadb_default_volumes + mariadb_extra_volumes }}\""},{"line_number":14,"context_line":"    dimensions: \"{{ mariadb_dimensions }}\""},{"line_number":15,"context_line":"    haproxy:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_66f10e6b","line":12,"range":{"start_line":12,"start_character":42,"end_line":12,"end_character":64},"in_reply_to":"7faddb67_dc277811","updated":"2019-08-22 09:47:42.000000000","message":"I\u0027m not about this, as far as I can see there is only `outward_rabbitmq` and `ironic-inspector`.","commit_id":"621d6030f2f3687e8a40263ece59aebebb8c237f"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3bb25616328ab6ac653339a366837554f11760f3","unresolved":false,"context_lines":[{"line_number":54,"context_line":"# | role_mariadb_namespace                | A prefix for container names, volumes, logs      |"},{"line_number":55,"context_line":"# |                                       | and config file directories.                     |"},{"line_number":56,"context_line":"# | role_mariadb_database_address         | The address to which the service is bound. This  |"},{"line_number":57,"context_line":"# |                                       | may be an IP on a host interface or a VIP.       |"},{"line_number":58,"context_line":"# | role_mariadb_port                     | The port on which the instances(s) will listen.  |"},{"line_number":59,"context_line":"# |                                       | This defaults to the frontend port but may be    |"},{"line_number":60,"context_line":"# |                                       | different.                                       |"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_fcd594b7","line":57,"range":{"start_line":57,"start_character":82,"end_line":57,"end_character":85},"updated":"2019-08-22 09:07:16.000000000","message":"nit: or FQDN (the default)","commit_id":"621d6030f2f3687e8a40263ece59aebebb8c237f"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"3c88f2bd5db30ab628955a7914205fd5004ab84f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"# Database"},{"line_number":81,"context_line":"####################"},{"line_number":82,"context_line":"role_mariadb_port: \"{{ role_mariadb_database_port }}\""},{"line_number":83,"context_line":"database_cluster_name: \"{{ mariadb_namespace + \u0027openstack\u0027 }}\""},{"line_number":84,"context_line":"database_max_timeout: 120"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"####################"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"7faddb67_7a00c101","line":83,"updated":"2019-08-22 12:27:53.000000000","message":"This isn\u0027t defined outside of the role so it can easily be overridden if required.","commit_id":"a0e71bfb0e8804ebc24e713c2aae5ce3e34f7180"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"ab2a4a660624d46ed22818da37d8f64730e214ab","unresolved":false,"context_lines":[{"line_number":51,"context_line":"# +---------------------------------------+--------------------------------------------------+"},{"line_number":52,"context_line":"# |               Variable                |                Description                       |"},{"line_number":53,"context_line":"# +---------------------------------------+--------------------------------------------------+"},{"line_number":54,"context_line":"# | role_mariadb_namespace                | A prefix for container names, volumes, logs      |"},{"line_number":55,"context_line":"# |                                       | and config file directories.                     |"},{"line_number":56,"context_line":"# | role_mariadb_database_address         | The address to which the service is bound. This  |"},{"line_number":57,"context_line":"# |                                       | defaults to the internal FQDN, but could also be |"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_4d2751b8","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":9},"updated":"2019-09-16 16:19:09.000000000","message":"why are we doing the role_ prefix? it looks odd","commit_id":"559da100ddb2fbd5221775b7aac73d2f9c67063b"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"948d27a93902e3b4ad7187643a869998376e20da","unresolved":false,"context_lines":[{"line_number":51,"context_line":"# +---------------------------------------+--------------------------------------------------+"},{"line_number":52,"context_line":"# |               Variable                |                Description                       |"},{"line_number":53,"context_line":"# +---------------------------------------+--------------------------------------------------+"},{"line_number":54,"context_line":"# | role_mariadb_namespace                | A prefix for container names, volumes, logs      |"},{"line_number":55,"context_line":"# |                                       | and config file directories.                     |"},{"line_number":56,"context_line":"# | role_mariadb_database_address         | The address to which the service is bound. This  |"},{"line_number":57,"context_line":"# |                                       | defaults to the internal FQDN, but could also be |"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_6574929a","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":9},"in_reply_to":"3fa7e38b_0a6ccd34","updated":"2019-09-17 13:49:44.000000000","message":"Agreed that mariadb_port wasn\u0027t the best example. Credentials are a good one.","commit_id":"559da100ddb2fbd5221775b7aac73d2f9c67063b"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"56da8495ac07b9e6335234650cdaa318fa19a51b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"# +---------------------------------------+--------------------------------------------------+"},{"line_number":52,"context_line":"# |               Variable                |                Description                       |"},{"line_number":53,"context_line":"# +---------------------------------------+--------------------------------------------------+"},{"line_number":54,"context_line":"# | role_mariadb_namespace                | A prefix for container names, volumes, logs      |"},{"line_number":55,"context_line":"# |                                       | and config file directories.                     |"},{"line_number":56,"context_line":"# | role_mariadb_database_address         | The address to which the service is bound. This  |"},{"line_number":57,"context_line":"# |                                       | defaults to the internal FQDN, but could also be |"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_8a367db4","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":9},"in_reply_to":"3fa7e38b_4d2751b8","updated":"2019-09-17 13:22:30.000000000","message":"Take `mariadb_port` for example. It might be overridden in globals.yml which is included with -e when Kolla Ansible runs. If it is then it will take precedence over all other places in which it is set. But what if you want to use different MariaDB ports for different groups of hosts, because you want multiple instances of MariaDB? By abstracting `mariadb_port` it\u0027s easy to maintain backwards compatibility, but also support flexibly overriding the port. For example, this patch supports defining multiple MariaDB clusters via inventory group vars.\n\nI used the role_ prefix here because something similar was done in the RabbitMQ role which also supports deploying multiple instances of RabbitMQ. I know it looks weird, but mariadb_mariadb_port seemed even weirder.","commit_id":"559da100ddb2fbd5221775b7aac73d2f9c67063b"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"64c483bc4147034ac667f8cc22c0fe23afcdab6d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"# +---------------------------------------+--------------------------------------------------+"},{"line_number":52,"context_line":"# |               Variable                |                Description                       |"},{"line_number":53,"context_line":"# +---------------------------------------+--------------------------------------------------+"},{"line_number":54,"context_line":"# | role_mariadb_namespace                | A prefix for container names, volumes, logs      |"},{"line_number":55,"context_line":"# |                                       | and config file directories.                     |"},{"line_number":56,"context_line":"# | role_mariadb_database_address         | The address to which the service is bound. This  |"},{"line_number":57,"context_line":"# |                                       | defaults to the internal FQDN, but could also be |"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_0a6ccd34","line":54,"range":{"start_line":54,"start_character":4,"end_line":54,"end_character":9},"in_reply_to":"3fa7e38b_8a367db4","updated":"2019-09-17 13:33:15.000000000","message":"Just to be clear, host variables work fine with mariadb_port. The reason why we would want a separate role variable is if we have multiple instances of mariadb on a single host, or different types of databases for which we\u0027d like a different top-level variable to configure.\n\nIt was done for RabbitMQ to support the inner and outer rabbitmq instances that can run on the same host.\n\nIn this case, I don\u0027t think we\u0027d want to run multiple mariadb instances on a host. Where this use of role variables might be useful is if we want a separate cells DB instance, and want a separate variable to configure the username/password, e.g.\n\n- import_role:\n    role: mariadb\n  vars:\n    role_mariadb_username: mariadb_username\n\n- import_role:\n    role: mariadb\n  vars:\n    role_mariadb_username: cells_mariadb_username","commit_id":"559da100ddb2fbd5221775b7aac73d2f9c67063b"}],"ansible/roles/mariadb/handlers/main.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":47,"context_line":"  become: true"},{"line_number":48,"context_line":"  command: \u003e-"},{"line_number":49,"context_line":"    docker exec {{ mariadb_service.container_name }}"},{"line_number":50,"context_line":"    mysql -uroot -p{{ database_password }}"},{"line_number":51,"context_line":"    --silent --skip-column-names"},{"line_number":52,"context_line":"    -e \u0027SHOW STATUS LIKE \"wsrep_evs_state\"\u0027"},{"line_number":53,"context_line":"  changed_when: false"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_c1aa6cd0","line":50,"range":{"start_line":50,"start_character":22,"end_line":50,"end_character":39},"updated":"2019-08-19 16:58:17.000000000","message":"role_","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"e42fab5342cf1874b5eee37830933c4087de4141","unresolved":false,"context_lines":[{"line_number":47,"context_line":"  become: true"},{"line_number":48,"context_line":"  command: \u003e-"},{"line_number":49,"context_line":"    docker exec {{ mariadb_service.container_name }}"},{"line_number":50,"context_line":"    mysql -uroot -p{{ database_password }}"},{"line_number":51,"context_line":"    --silent --skip-column-names"},{"line_number":52,"context_line":"    -e \u0027SHOW STATUS LIKE \"wsrep_evs_state\"\u0027"},{"line_number":53,"context_line":"  changed_when: false"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_b231b25b","line":50,"range":{"start_line":50,"start_character":22,"end_line":50,"end_character":39},"in_reply_to":"7faddb67_c1aa6cd0","updated":"2019-08-20 15:03:18.000000000","message":"Done","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"}],"ansible/roles/mariadb/tasks/check.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"  changed_when: False"},{"line_number":8,"context_line":"  retries: 6"},{"line_number":9,"context_line":"  delay: 10"},{"line_number":10,"context_line":"  when: inventory_hostname in groups[role_mariadb_group]"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"- name: Waiting for {{ mariadb_service.container_name }} service to be ready through VIP"},{"line_number":13,"context_line":"  become: true"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_413bdc9a","line":10,"updated":"2019-08-19 16:58:17.000000000","message":"What\u0027s the reasoning behind adding this task? To make sure we\u0027re checking all instances? We do have some checks in the handlers, but don\u0027t actually execute any SQL.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"e42fab5342cf1874b5eee37830933c4087de4141","unresolved":false,"context_lines":[{"line_number":7,"context_line":"  changed_when: False"},{"line_number":8,"context_line":"  retries: 6"},{"line_number":9,"context_line":"  delay: 10"},{"line_number":10,"context_line":"  when: inventory_hostname in groups[role_mariadb_group]"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"- name: Waiting for {{ mariadb_service.container_name }} service to be ready through VIP"},{"line_number":13,"context_line":"  become: true"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_00bcecb8","line":10,"in_reply_to":"7faddb67_413bdc9a","updated":"2019-08-20 15:03:18.000000000","message":"It was indeed to check all instances, or a single instance not via the VIP if HAProxy isn\u0027t in use. I\u0027ve switched to using the original task for all cases, and will rely on the existing checks.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"- name: Waiting for {{ mariadb_service.container_name }} service to be ready through VIP"},{"line_number":13,"context_line":"  become: true"},{"line_number":14,"context_line":"  command: \"docker exec {{ mariadb_service.container_name }} mysql -h {{ role_mariadb_database_address }} -P {{ role_mariadb_port }} -u haproxy -e \u0027show databases;\u0027\""},{"line_number":15,"context_line":"  register: result"},{"line_number":16,"context_line":"  until: result is success"},{"line_number":17,"context_line":"  changed_when: False"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_c1234c04","line":14,"range":{"start_line":14,"start_character":112,"end_line":14,"end_character":129},"updated":"2019-08-19 16:58:17.000000000","message":"This should be database_port as it\u0027s the frontend.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"b1bf93abc71548f16672be685a6b6947c7321970","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"- name: Waiting for {{ mariadb_service.container_name }} service to be ready through VIP"},{"line_number":13,"context_line":"  become: true"},{"line_number":14,"context_line":"  command: \"docker exec {{ mariadb_service.container_name }} mysql -h {{ role_mariadb_database_address }} -P {{ role_mariadb_port }} -u haproxy -e \u0027show databases;\u0027\""},{"line_number":15,"context_line":"  register: result"},{"line_number":16,"context_line":"  until: result is success"},{"line_number":17,"context_line":"  changed_when: False"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_5345ddb2","line":14,"range":{"start_line":14,"start_character":112,"end_line":14,"end_character":129},"in_reply_to":"7faddb67_73ded96a","updated":"2019-08-20 16:18:38.000000000","message":"That is true. I guess it doesn\u0027t work with our haproxy then. Maybe we should fix that. It could feasibly work with an external load balancer though.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"bc2fce42508b6955f932b7ef4697250af3b9bd86","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"- name: Waiting for {{ mariadb_service.container_name }} service to be ready through VIP"},{"line_number":13,"context_line":"  become: true"},{"line_number":14,"context_line":"  command: \"docker exec {{ mariadb_service.container_name }} mysql -h {{ role_mariadb_database_address }} -P {{ role_mariadb_port }} -u haproxy -e \u0027show databases;\u0027\""},{"line_number":15,"context_line":"  register: result"},{"line_number":16,"context_line":"  until: result is success"},{"line_number":17,"context_line":"  changed_when: False"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_c6458c70","line":14,"range":{"start_line":14,"start_character":112,"end_line":14,"end_character":129},"in_reply_to":"7faddb67_95902050","updated":"2019-08-20 15:42:01.000000000","message":"In the existing setup, database_port is the port that haproxy listens on, and the port generally used to access the DB. mariadb_port is the port that mariadb listens on. Without haproxy these must be the same, but could feasibly be different with haproxy.\n\nSo we need role_mariadb_database_port and role_mariadb_port in the new world, for the frontend and backend.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"e42fab5342cf1874b5eee37830933c4087de4141","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"- name: Waiting for {{ mariadb_service.container_name }} service to be ready through VIP"},{"line_number":13,"context_line":"  become: true"},{"line_number":14,"context_line":"  command: \"docker exec {{ mariadb_service.container_name }} mysql -h {{ role_mariadb_database_address }} -P {{ role_mariadb_port }} -u haproxy -e \u0027show databases;\u0027\""},{"line_number":15,"context_line":"  register: result"},{"line_number":16,"context_line":"  until: result is success"},{"line_number":17,"context_line":"  changed_when: False"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_95902050","line":14,"range":{"start_line":14,"start_character":112,"end_line":14,"end_character":129},"in_reply_to":"7faddb67_c1234c04","updated":"2019-08-20 15:03:18.000000000","message":"I\u0027m not sure that I follow. Surely this task (and others) need to connect to the DB on the port that it is listening on? If HAProxy is in use, the port exposed on the VIP is locked to that same port. I am thinking of multiple DBs, where they may be mapped to specific services, and they may need to listen on different ports.\n\nIt seems that for each service that supports being deployed with a dedicated DB, we need to abstract `database_port` to role_\u003cservice\u003e_database_port or whatever to allow it to be customised?","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"cdb599eda0079d090fb9687be36231966a2f8a3d","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"- name: Waiting for {{ mariadb_service.container_name }} service to be ready through VIP"},{"line_number":13,"context_line":"  become: true"},{"line_number":14,"context_line":"  command: \"docker exec {{ mariadb_service.container_name }} mysql -h {{ role_mariadb_database_address }} -P {{ role_mariadb_port }} -u haproxy -e \u0027show databases;\u0027\""},{"line_number":15,"context_line":"  register: result"},{"line_number":16,"context_line":"  until: result is success"},{"line_number":17,"context_line":"  changed_when: False"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_73ded96a","line":14,"range":{"start_line":14,"start_character":112,"end_line":14,"end_character":129},"in_reply_to":"7faddb67_c6458c70","updated":"2019-08-20 15:59:11.000000000","message":"I see that the haproxy role checks that database_port is free, but in roles/mariadb/defaults/main.yml the haproxy stanza uses `mariadb_port` so surely it all locked to one port or are you suggesting that someone might override mariadb_services?","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  changed_when: False"},{"line_number":18,"context_line":"  retries: 6"},{"line_number":19,"context_line":"  delay: 10"},{"line_number":20,"context_line":"  when: role_mariadb_haproxy_enabled | bool"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_e1ef681a","line":20,"updated":"2019-08-19 16:58:17.000000000","message":"run_once?","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"e42fab5342cf1874b5eee37830933c4087de4141","unresolved":false,"context_lines":[{"line_number":17,"context_line":"  changed_when: False"},{"line_number":18,"context_line":"  retries: 6"},{"line_number":19,"context_line":"  delay: 10"},{"line_number":20,"context_line":"  when: role_mariadb_haproxy_enabled | bool"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_80c77c45","line":20,"in_reply_to":"7faddb67_e1ef681a","updated":"2019-08-20 15:03:18.000000000","message":"Agreed.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3bb25616328ab6ac653339a366837554f11760f3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"  changed_when: False"},{"line_number":8,"context_line":"  retries: 6"},{"line_number":9,"context_line":"  delay: 10"},{"line_number":10,"context_line":"  when: inventory_hostname in groups[role_mariadb_group][0]"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_9ca7c050","line":10,"range":{"start_line":10,"start_character":27,"end_line":10,"end_character":29},"updated":"2019-08-22 09:07:16.000000000","message":"\u003d\u003d?","commit_id":"621d6030f2f3687e8a40263ece59aebebb8c237f"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"9b5f4e5b651267d97be87097ca8419572201bb7f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Waiting for MariaDB service to be ready through VIP"},{"line_number":3,"context_line":"  become: true"},{"line_number":4,"context_line":"  command: \"docker exec mariadb mysql -h {{ database_address }} -P {{ database_port }} -u haproxy -e \u0027show databases;\u0027\""},{"line_number":5,"context_line":"  register: result"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"5faad753_440cba3a","side":"PARENT","line":2,"range":{"start_line":2,"start_character":48,"end_line":2,"end_character":59},"updated":"2019-09-10 16:42:40.000000000","message":"we have behavior change in here","commit_id":"21f22a6da97f534ccf4c37fe10f3981bdc2411c9"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"ab2a4a660624d46ed22818da37d8f64730e214ab","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Waiting for MariaDB service to be ready through VIP"},{"line_number":3,"context_line":"  become: true"},{"line_number":4,"context_line":"  command: \"docker exec mariadb mysql -h {{ database_address }} -P {{ database_port }} -u haproxy -e \u0027show databases;\u0027\""},{"line_number":5,"context_line":"  register: result"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_4a9ad7c5","side":"PARENT","line":2,"range":{"start_line":2,"start_character":48,"end_line":2,"end_character":59},"in_reply_to":"5faad753_177108e1","updated":"2019-09-16 16:19:09.000000000","message":"I must have been tired writing that comment. I cannot remember what I meant there exactly. It seems fine as you say.","commit_id":"21f22a6da97f534ccf4c37fe10f3981bdc2411c9"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3a6241c49849fa9f360de8a0b692ea90822e388b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Waiting for MariaDB service to be ready through VIP"},{"line_number":3,"context_line":"  become: true"},{"line_number":4,"context_line":"  command: \"docker exec mariadb mysql -h {{ database_address }} -P {{ database_port }} -u haproxy -e \u0027show databases;\u0027\""},{"line_number":5,"context_line":"  register: result"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"5faad753_177108e1","side":"PARENT","line":2,"range":{"start_line":2,"start_character":48,"end_line":2,"end_character":59},"in_reply_to":"5faad753_440cba3a","updated":"2019-09-11 09:11:07.000000000","message":"It\u0027s essentially the same, since role_mariadb_database_address is set to database_address and role_mariadb_database_port to database_port.","commit_id":"21f22a6da97f534ccf4c37fe10f3981bdc2411c9"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"ab2a4a660624d46ed22818da37d8f64730e214ab","unresolved":false,"context_lines":[{"line_number":7,"context_line":"  changed_when: False"},{"line_number":8,"context_line":"  retries: 6"},{"line_number":9,"context_line":"  delay: 10"},{"line_number":10,"context_line":"  when: inventory_hostname \u003d\u003d groups[role_mariadb_group][0]"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_4a4c1776","line":10,"range":{"start_line":10,"start_character":2,"end_line":10,"end_character":59},"updated":"2019-09-16 16:19:09.000000000","message":"why not run_once and delegate_to instead? (like in other places)","commit_id":"559da100ddb2fbd5221775b7aac73d2f9c67063b"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"56da8495ac07b9e6335234650cdaa318fa19a51b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"  changed_when: False"},{"line_number":8,"context_line":"  retries: 6"},{"line_number":9,"context_line":"  delay: 10"},{"line_number":10,"context_line":"  when: inventory_hostname \u003d\u003d groups[role_mariadb_group][0]"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3fa7e38b_4aaac585","line":10,"range":{"start_line":10,"start_character":2,"end_line":10,"end_character":59},"in_reply_to":"3fa7e38b_4a4c1776","updated":"2019-09-17 13:22:30.000000000","message":"This change was made to support deploying multiple instances in parallel (the groups could be set via inventory host vars for example).","commit_id":"559da100ddb2fbd5221775b7aac73d2f9c67063b"}],"ansible/roles/mariadb/tasks/config.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"- name: Ensuring config directories exist"},{"line_number":3,"context_line":"  file:"},{"line_number":4,"context_line":"    path: \"{{ node_config_directory }}/{{ project_name }}\""},{"line_number":5,"context_line":"    state: \"directory\""},{"line_number":6,"context_line":"    owner: \"{{ config_owner_user }}\""},{"line_number":7,"context_line":"    group: \"{{ config_owner_group }}\""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_212fc03f","line":4,"range":{"start_line":4,"start_character":42,"end_line":4,"end_character":54},"updated":"2019-08-19 16:58:17.000000000","message":"This is where we could have issues with project_name. Normally the services key uses hyphens, but the container name uses underscores. We could add a new service_name field into the service definition?","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"}],"ansible/roles/mariadb/tasks/lookup_cluster.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  local_action: file path\u003d/tmp/kolla_mariadb_cluster_{{ project_name }} state\u003dabsent"},{"line_number":4,"context_line":"  changed_when: False"},{"line_number":5,"context_line":"  check_mode: no"},{"line_number":6,"context_line":"  when: inventory_hostname in groups[role_mariadb_group][0]"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"- name: Creating temp file on localhost"},{"line_number":9,"context_line":"  local_action: copy content\u003d\u0027\u0027 dest\u003d/tmp/kolla_mariadb_cluster_{{ project_name }} mode\u003d0644"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_61c29836","line":6,"range":{"start_line":6,"start_character":2,"end_line":6,"end_character":59},"updated":"2019-08-19 16:58:17.000000000","message":"why not run_once?","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"72c25891e0ff12aae88f32a301006f84bc90bf39","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  local_action: file path\u003d/tmp/kolla_mariadb_cluster_{{ project_name }} state\u003dabsent"},{"line_number":4,"context_line":"  changed_when: False"},{"line_number":5,"context_line":"  check_mode: no"},{"line_number":6,"context_line":"  when: inventory_hostname in groups[role_mariadb_group][0]"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"- name: Creating temp file on localhost"},{"line_number":9,"context_line":"  local_action: copy content\u003d\u0027\u0027 dest\u003d/tmp/kolla_mariadb_cluster_{{ project_name }} mode\u003d0644"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_4a0de58e","line":6,"range":{"start_line":6,"start_character":2,"end_line":6,"end_character":59},"in_reply_to":"3fa7e38b_adb4c536","updated":"2019-09-17 13:30:29.000000000","message":"It works as-is without re-including the role.\n\nExample inventory could be:\n\n[mariadb:children]\nmain-mariadb\ncell0001-mariadb\ncell0002-mariadb\n                  \n[main-mariadb]    \ncontrol01\n\n[cell0001-mariadb]\ncontrol02\n\n[cell0002-mariadb]\ncontrol03\n\nThen in group vars:\n\n[vagrant@operator group_vars]$ cat cell0001\ncell_mariadb_namespace: cell0001\ncell_mariadb_group_name: cell0001-mariadb\ncell_mariadb_port: 1235\n\n[vagrant@operator group_vars]$ cat cell0002\ncell_mariadb_namespace: cell0002\ncell_mariadb_group_name: cell0002-mariadb\ncell_mariadb_port: 1236\n\n\nIf you run that, this patch will deploy the regular top level MariaDB instance, and two other ones all the same time.\n\nDisadvantages are the extra skips tasks and the risk of taking out multiple databases all at the same time if you don\u0027t limit the run to a single group of whatever. We could run it in serial mode and then go back to run_once.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"e42fab5342cf1874b5eee37830933c4087de4141","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  local_action: file path\u003d/tmp/kolla_mariadb_cluster_{{ project_name }} state\u003dabsent"},{"line_number":4,"context_line":"  changed_when: False"},{"line_number":5,"context_line":"  check_mode: no"},{"line_number":6,"context_line":"  when: inventory_hostname in groups[role_mariadb_group][0]"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"- name: Creating temp file on localhost"},{"line_number":9,"context_line":"  local_action: copy content\u003d\u0027\u0027 dest\u003d/tmp/kolla_mariadb_cluster_{{ project_name }} mode\u003d0644"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_80f53c85","line":6,"range":{"start_line":6,"start_character":2,"end_line":6,"end_character":59},"in_reply_to":"7faddb67_61c29836","updated":"2019-08-20 15:03:18.000000000","message":"This is so the role can run in parallel to bring up multiple, independent clusters configured via group_vars at the same time. When using run_once it will only run the task on one cluster. Whether we use it this way for cells is another question - I know that you prefer the serial approach because it\u0027s more difficult to nuke all the DBs at the same time. This works for both approaches, but does have the minor downside of printing the skipped task as you point out.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"ab2a4a660624d46ed22818da37d8f64730e214ab","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  local_action: file path\u003d/tmp/kolla_mariadb_cluster_{{ project_name }} state\u003dabsent"},{"line_number":4,"context_line":"  changed_when: False"},{"line_number":5,"context_line":"  check_mode: no"},{"line_number":6,"context_line":"  when: inventory_hostname in groups[role_mariadb_group][0]"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"- name: Creating temp file on localhost"},{"line_number":9,"context_line":"  local_action: copy content\u003d\u0027\u0027 dest\u003d/tmp/kolla_mariadb_cluster_{{ project_name }} mode\u003d0644"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3fa7e38b_adb4c536","line":6,"range":{"start_line":6,"start_character":2,"end_line":6,"end_character":59},"in_reply_to":"7faddb67_80f53c85","updated":"2019-09-16 16:19:09.000000000","message":"I dug this one up - I don\u0027t agree. You have to reinclude the role for each host group anyway - then run_once will be run once again.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3bb25616328ab6ac653339a366837554f11760f3","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  local_action: file path\u003d/tmp/kolla_mariadb_cluster_{{ mariadb_container_name }} state\u003dabsent"},{"line_number":4,"context_line":"  changed_when: False"},{"line_number":5,"context_line":"  check_mode: no"},{"line_number":6,"context_line":"  when: inventory_hostname in groups[role_mariadb_group][0]"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"- name: Creating temp file on localhost"},{"line_number":9,"context_line":"  local_action: copy content\u003d\u0027\u0027 dest\u003d/tmp/kolla_mariadb_cluster_{{ mariadb_container_name }} mode\u003d0644"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_3c3a4ce5","line":6,"range":{"start_line":6,"start_character":27,"end_line":6,"end_character":29},"updated":"2019-08-22 09:07:16.000000000","message":"\u003d\u003d","commit_id":"621d6030f2f3687e8a40263ece59aebebb8c237f"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3bb25616328ab6ac653339a366837554f11760f3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"  local_action: copy content\u003d\u0027\u0027 dest\u003d/tmp/kolla_mariadb_cluster_{{ mariadb_container_name }} mode\u003d0644"},{"line_number":10,"context_line":"  changed_when: False"},{"line_number":11,"context_line":"  check_mode: no"},{"line_number":12,"context_line":"  when: inventory_hostname in groups[role_mariadb_group][0]"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"- name: Creating mariadb volume"},{"line_number":15,"context_line":"  become: true"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_bc25dcc0","line":12,"range":{"start_line":12,"start_character":27,"end_line":12,"end_character":29},"updated":"2019-08-22 09:07:16.000000000","message":"\u003d\u003d","commit_id":"621d6030f2f3687e8a40263ece59aebebb8c237f"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3bb25616328ab6ac653339a366837554f11760f3","unresolved":false,"context_lines":[{"line_number":33,"context_line":"  local_action: file path\u003d/tmp/kolla_mariadb_cluster_{{ mariadb_container_name }} state\u003dabsent"},{"line_number":34,"context_line":"  changed_when: False"},{"line_number":35,"context_line":"  check_mode: no"},{"line_number":36,"context_line":"  when: inventory_hostname in groups[role_mariadb_group][0]"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_3c132c67","line":36,"range":{"start_line":36,"start_character":27,"end_line":36,"end_character":29},"updated":"2019-08-22 09:07:16.000000000","message":"\u003d\u003d","commit_id":"621d6030f2f3687e8a40263ece59aebebb8c237f"}],"ansible/roles/mariadb/tasks/precheck.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  become: true"},{"line_number":4,"context_line":"  kolla_container_facts:"},{"line_number":5,"context_line":"    name:"},{"line_number":6,"context_line":"      - mariadb"},{"line_number":7,"context_line":"  register: container_facts"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- name: Checking free port for MariaDB"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_410afc89","line":6,"range":{"start_line":6,"start_character":8,"end_line":6,"end_character":15},"updated":"2019-08-19 16:58:17.000000000","message":"container_name","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"e42fab5342cf1874b5eee37830933c4087de4141","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  become: true"},{"line_number":4,"context_line":"  kolla_container_facts:"},{"line_number":5,"context_line":"    name:"},{"line_number":6,"context_line":"      - mariadb"},{"line_number":7,"context_line":"  register: container_facts"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- name: Checking free port for MariaDB"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_204568b4","line":6,"range":{"start_line":6,"start_character":8,"end_line":6,"end_character":15},"in_reply_to":"7faddb67_410afc89","updated":"2019-08-20 15:03:18.000000000","message":"Done","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    timeout: 1"},{"line_number":15,"context_line":"    state: stopped"},{"line_number":16,"context_line":"  when:"},{"line_number":17,"context_line":"    - container_facts[\u0027mariadb\u0027] is not defined"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- name: Checking free port for MariaDB WSREP"},{"line_number":20,"context_line":"  wait_for:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_01008465","line":17,"range":{"start_line":17,"start_character":23,"end_line":17,"end_character":30},"updated":"2019-08-19 16:58:17.000000000","message":"container_name (and below)","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"e42fab5342cf1874b5eee37830933c4087de4141","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    timeout: 1"},{"line_number":15,"context_line":"    state: stopped"},{"line_number":16,"context_line":"  when:"},{"line_number":17,"context_line":"    - container_facts[\u0027mariadb\u0027] is not defined"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- name: Checking free port for MariaDB WSREP"},{"line_number":20,"context_line":"  wait_for:"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_4040a4a2","line":17,"range":{"start_line":17,"start_character":23,"end_line":17,"end_character":30},"in_reply_to":"7faddb67_01008465","updated":"2019-08-20 15:03:18.000000000","message":"Done","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"b39e96197c6bf0d02e7b22f3b5917a3d53d1cc5e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    timeout: 1"},{"line_number":15,"context_line":"    state: stopped"},{"line_number":16,"context_line":"  when:"},{"line_number":17,"context_line":"    - container_facts[{{ mariadb_container_name }}] is not defined"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- name: Checking free port for MariaDB WSREP"},{"line_number":20,"context_line":"  wait_for:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_bceabc9c","line":17,"range":{"start_line":17,"start_character":22,"end_line":17,"end_character":24},"updated":"2019-08-22 08:55:38.000000000","message":"no braces in when statements","commit_id":"621d6030f2f3687e8a40263ece59aebebb8c237f"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"93508139e073ee51e1fb19086e4da2f24d5584b8","unresolved":false,"context_lines":[{"line_number":14,"context_line":"    timeout: 1"},{"line_number":15,"context_line":"    state: stopped"},{"line_number":16,"context_line":"  when:"},{"line_number":17,"context_line":"    - container_facts[{{ mariadb_container_name }}] is not defined"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"- name: Checking free port for MariaDB WSREP"},{"line_number":20,"context_line":"  wait_for:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_4672d2b2","line":17,"range":{"start_line":17,"start_character":22,"end_line":17,"end_character":24},"in_reply_to":"7faddb67_bceabc9c","updated":"2019-08-22 09:07:34.000000000","message":"Thanks - I was thrown off by the `Shared connection to 2001:470:e045:8000:f816:3eff:fe85:73a2 closed.` error.","commit_id":"621d6030f2f3687e8a40263ece59aebebb8c237f"}],"ansible/roles/mariadb/tasks/register.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":12,"context_line":"      password: \"\""},{"line_number":13,"context_line":"      host: \"%\""},{"line_number":14,"context_line":"      priv: \"*.*:USAGE\""},{"line_number":15,"context_line":"  when: inventory_hostname in groups[role_mariadb_group][0]"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- name: Creating the Percona XtraBackup database"},{"line_number":18,"context_line":"  become: true"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_0183a4cc","line":15,"range":{"start_line":15,"start_character":2,"end_line":15,"end_character":59},"updated":"2019-08-19 16:58:17.000000000","message":"run_once is a little cleaner as it avoids the skips","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    module_name: mysql_db"},{"line_number":21,"context_line":"    module_args:"},{"line_number":22,"context_line":"      login_host: \"{{ role_mariadb_database_address }}\""},{"line_number":23,"context_line":"      login_port: \"{{ role_mariadb_port }}\""},{"line_number":24,"context_line":"      login_user: \"{{ role_mariadb_database_user }}\""},{"line_number":25,"context_line":"      login_password: \"{{ role_mariadb_database_password }}\""},{"line_number":26,"context_line":"      name: \"{{ mariadb_backup_database_schema }}\""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_c1682c22","line":23,"range":{"start_line":23,"start_character":22,"end_line":23,"end_character":39},"updated":"2019-08-19 16:58:17.000000000","message":"database_port (and below)","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"},{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"3bb25616328ab6ac653339a366837554f11760f3","unresolved":false,"context_lines":[{"line_number":12,"context_line":"      password: \"\""},{"line_number":13,"context_line":"      host: \"%\""},{"line_number":14,"context_line":"      priv: \"*.*:USAGE\""},{"line_number":15,"context_line":"  when: inventory_hostname in groups[role_mariadb_group][0]"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- name: Creating the Percona XtraBackup database"},{"line_number":18,"context_line":"  become: true"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_e6341ee2","line":15,"range":{"start_line":15,"start_character":27,"end_line":15,"end_character":29},"updated":"2019-08-22 09:07:16.000000000","message":"\u003d\u003d (and below)","commit_id":"621d6030f2f3687e8a40263ece59aebebb8c237f"}],"ansible/roles/mariadb/templates/backup.my.cnf.j2":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":3,"context_line":"user\u003d{{ mariadb_backup_database_user }}"},{"line_number":4,"context_line":"password\u003d{{ role_mariadb_backup_database_password }}"},{"line_number":5,"context_line":"host\u003d{{ role_mariadb_database_address }}"},{"line_number":6,"context_line":"port\u003d{{ role_mariadb_port }}"}],"source_content_type":"text/x-jinja2","patch_set":5,"id":"7faddb67_015c047b","line":6,"range":{"start_line":6,"start_character":8,"end_line":6,"end_character":25},"updated":"2019-08-19 16:58:17.000000000","message":"database_port","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"}],"ansible/roles/mariadb/templates/galera.cnf.j2":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"03bd9412acadb573a388339ba8db77bf11c9726c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"wsrep_sst_receive_address\u003d{{ api_interface_address }}:{{ mariadb_sst_port }}"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"wsrep_provider\u003d{{ wsrep_driver }}"},{"line_number":37,"context_line":"wsrep_cluster_name\u003d\"{{ database_cluster_name }}\""},{"line_number":38,"context_line":"wsrep_node_name\u003d{{ ansible_hostname }}"},{"line_number":39,"context_line":"wsrep_sst_method\u003d{{ sst_method }}"},{"line_number":40,"context_line":"wsrep_sst_auth\u003d{{ role_mariadb_database_user }}:{{ role_mariadb_database_password }}"}],"source_content_type":"text/x-jinja2","patch_set":11,"id":"7faddb67_4916655b","line":37,"range":{"start_line":37,"start_character":23,"end_line":37,"end_character":44},"updated":"2019-08-22 10:48:24.000000000","message":"Making this configurable per-cluster, and possibly using the prefix in the default, might be a good way to avoid instances joining the wrong cluster.\n\nhttps://galeracluster.com/library/documentation/mysql-wsrep-options.html#wsrep-cluster-name\n\nWe\u0027ll probably want to remove the wsrep config for non-clustered instances also. That could be done in a later patch.","commit_id":"1f73893e8c6b73b491e6f691cf3818cfba4ac2a5"},{"author":{"_account_id":17669,"name":"Doug Szumski","email":"doug@stackhpc.com","username":"DougSzumski"},"change_message_id":"3c88f2bd5db30ab628955a7914205fd5004ab84f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"wsrep_sst_receive_address\u003d{{ api_interface_address }}:{{ mariadb_sst_port }}"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"wsrep_provider\u003d{{ wsrep_driver }}"},{"line_number":37,"context_line":"wsrep_cluster_name\u003d\"{{ database_cluster_name }}\""},{"line_number":38,"context_line":"wsrep_node_name\u003d{{ ansible_hostname }}"},{"line_number":39,"context_line":"wsrep_sst_method\u003d{{ sst_method }}"},{"line_number":40,"context_line":"wsrep_sst_auth\u003d{{ role_mariadb_database_user }}:{{ role_mariadb_database_password }}"}],"source_content_type":"text/x-jinja2","patch_set":11,"id":"7faddb67_0f694df7","line":37,"range":{"start_line":37,"start_character":23,"end_line":37,"end_character":44},"in_reply_to":"7faddb67_4916655b","updated":"2019-08-22 12:27:53.000000000","message":"Agreed - support for customising the wsrep ports is another one (to support multiple instances on one host which each belong to separate clusters) which can be added in a later commit, although I imagine that one will mostly be useful for testing.","commit_id":"1f73893e8c6b73b491e6f691cf3818cfba4ac2a5"}],"ansible/roles/mariadb/templates/mariadb.json.j2":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"bc2fce42508b6955f932b7ef4697250af3b9bd86","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    ],"},{"line_number":18,"context_line":"    \"permissions\": ["},{"line_number":19,"context_line":"        {"},{"line_number":20,"context_line":"            \"path\": \"/var/log/kolla/{{ mariadb_container_namespace + \u0027mariadb\u0027 }}\","},{"line_number":21,"context_line":"            \"owner\": \"mysql:mysql\","},{"line_number":22,"context_line":"            \"recurse\": true"},{"line_number":23,"context_line":"        },"}],"source_content_type":"text/x-jinja2","patch_set":6,"id":"7faddb67_6195a23f","line":20,"range":{"start_line":20,"start_character":39,"end_line":20,"end_character":66},"updated":"2019-08-20 15:42:01.000000000","message":"other file just has mariadb_namespace","commit_id":"7c426fc2f18369a122b1048713245d0f1d3041a8"}],"ansible/site.yml":[{"author":{"_account_id":14826,"name":"Mark Goddard","email":"markgoddard86@gmail.com","username":"mgoddard"},"change_message_id":"f57ad839680a5614f9bdc2010074492b3a9b63b3","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        role_mariadb_database_password: \u0027{{ database_password }}\u0027,"},{"line_number":469,"context_line":"        role_mariadb_backup_database_password: \u0027{{ mariadb_backup_database_password }}\u0027,"},{"line_number":470,"context_line":"        role_mariadb_haproxy_enabled: \u0027{{ enable_haproxy | bool }}\u0027,"},{"line_number":471,"context_line":"        role_mariadb_port: \u0027{{ mariadb_port }}\u0027,"},{"line_number":472,"context_line":"        role_mariadb_group: \u0027{{ mariadb_group }}\u0027,"},{"line_number":473,"context_line":"        when: enable_mariadb | bool }"},{"line_number":474,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_4118bcd1","line":471,"range":{"start_line":471,"start_character":31,"end_line":471,"end_character":43},"updated":"2019-08-19 16:58:17.000000000","message":"I think there is a subtle difference between database_port and mariadb_port. database_port is the frontend, used by clients. mariadb_port is the backend. We may need both.","commit_id":"5dda608ca4228ade7d4c0edca342ffd7a6941325"}]}
