{"id":21400225,"url":"https://github.com/oefenweb/ansible-percona-server","last_synced_at":"2025-04-07T19:15:41.077Z","repository":{"id":43150044,"uuid":"41423976","full_name":"Oefenweb/ansible-percona-server","owner":"Oefenweb","description":"Ansible role to set up percona-server server in Debian-like systems","archived":false,"fork":false,"pushed_at":"2025-02-06T14:59:12.000Z","size":231,"stargazers_count":45,"open_issues_count":4,"forks_count":30,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-31T16:18:06.671Z","etag":null,"topics":["ansible","database","debian","mysql","percona-server","privileges","ssl","ubuntu"],"latest_commit_sha":null,"homepage":null,"language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Oefenweb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-08-26T12:21:37.000Z","updated_at":"2025-02-06T14:58:07.000Z","dependencies_parsed_at":"2023-02-08T19:16:11.022Z","dependency_job_id":"4766f72f-d2aa-4f76-844a-54214ba1b407","html_url":"https://github.com/Oefenweb/ansible-percona-server","commit_stats":{"total_commits":176,"total_committers":10,"mean_commits":17.6,"dds":"0.10227272727272729","last_synced_commit":"79ba2d7b39d9525864e921ebfc87f379eab7d370"},"previous_names":[],"tags_count":79,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oefenweb%2Fansible-percona-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oefenweb%2Fansible-percona-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oefenweb%2Fansible-percona-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oefenweb%2Fansible-percona-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Oefenweb","download_url":"https://codeload.github.com/Oefenweb/ansible-percona-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247713258,"owners_count":20983683,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","database","debian","mysql","percona-server","privileges","ssl","ubuntu"],"created_at":"2024-11-22T15:19:50.951Z","updated_at":"2025-04-07T19:15:40.975Z","avatar_url":"https://github.com/Oefenweb.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"## percona-server\n\n[![CI](https://github.com/Oefenweb/ansible-percona-server/workflows/CI/badge.svg)](https://github.com/Oefenweb/ansible-percona-server/actions?query=workflow%3ACI)\n[![Ansible Galaxy](http://img.shields.io/badge/ansible--galaxy-percona--server-blue.svg)](https://galaxy.ansible.com/Oefenweb/percona_server)\n\nSet up a [percona-server](https://www.percona.com/software/mysql-database/percona-server) server in Debian-like systems.\n\n#### Requirements\n\n* `python-mysqldb(2|3)` (will be installed)\n* `tee` (will not be installed)\n* `software-properties-common` (will be installed)\n* `dirmngr` (will be installed)\n* `gpg-agent` (will be installed)\n* `apt-transport-https` (will be installed)\n* `debconf-utils` (will be installed)\n\n#### Variables\n\n##### General\n\n* `percona_server_version`: [default: `5.7`]: Version to install (e.g. `5.6`)\n* `percona_server_root_username`: [default: `root`]: Root username\n* `percona_server_root_password`: [default: `+eswuw9uthUteFreyAqu`]: Root password **Make sure to change!**\n\n* `percona_server_install`: [`['xtrabackup']`]: Additional packages to install\n\n* `percona_server_etc_my_cnf`: [default: `[]`]: Global configuration declarations\n* `percona_server_etc_my_cnf_includedir`: [optional]: Used to include other option files from this directory (e.g. `/etc/mysql/conf.d/`)\n\n* `percona_server_user_root_cnf_manage`: [default: `true`]: Whether or not to manage `~root/.my.cnf`\n* `percona_server_user_root_cnf`: [default: `percona_server_user_root_cnf_preset`, see `defaults/main.yml`]: Root user configuration declarations\n* `percona_server_use_legacy_auth_method`: [default: `false`]: Use legacy authentication method **_(only Percona Server 8.0)_**\n\n##### SSL\n\n* `percona_server_ssl_map`: [default: `{}`]: SSL declarations\n* `percona_server_ssl_map.key`: [required]: The identifier of the file (e.g. `ca-cert`)\n* `percona_server_ssl_map.key.src`: [required]: The local path of the file to copy, can be absolute or relative (e.g. `../../../files/percona-server/etc/mysql/ca-cert.pem`)\n* `percona_server_ssl_map.key.dest`: [required]: The remote path of the file to copy (e.g. `/etc/mysql/ca-cert.pem`)\n* `percona_server_ssl_map.key.owner`: [optional, default `root`]: The name of the user that should own the file\n* `percona_server_ssl_map.key.group`: [optional, default `mysql`]:The name of the group that should own the file\n* `percona_server_ssl_map.key.mode`: [optional, default `0640`]: The mode of the file\n\n##### Plugins\n\n* `percona_server_plugins_present`: [default: `[]`]: Plugins to `INSTALL`\n* `percona_server_plugins_present.{n}.name`: [required]: The name of the plugin (e.g. `QUERY_RESPONSE_TIME_AUDIT`)\n* `percona_server_plugins_present.{n}.soname`: [required]: The base name of the shared library file that contains the code that implements the plugin (e.g. `query_response_time.so`)\n\n* `percona_server_plugins_absent`: [default: `[]`]: Plugins to `UNINSTALL`\n* `percona_server_plugins_absent.{n}.name`: [required]: The name of the plugin\n\n##### Databases\n\n* `percona_server_databases_present`: [default: `[]`]: Databases to `CREATE`\n* `percona_server_databases_present.{n}.name`: [required]: The name of the database\n* `percona_server_databases_present.{n}.collation`: [optional, default: `utf8_general_ci`]: The collation of the database\n* `percona_server_databases_present.{n}.encoding`: [optional, default: `utf8`]: The character set of the database\n\n* `percona_server_databases_absent`: [default: `[{name: test}]`]: Databases to `DROP`\n* `percona_server_databases_absent.{n}.name`: [required]: The name of the database\n\n##### Users\n\n* `percona_server_users_present`: [default: `[]`]: Users to `CREATE`\n* `percona_server_users_present.{n}.name`: [required]: The name of the user\n* `percona_server_users_present.{n}.password`: [required]: The password of the user\n* `percona_server_users_present.{n}.privs`: [required]: Privileges (e.g. `'test.*:ALL'`)\n* `percona_server_users_present.{n}.hosts`: [optional, default: `percona_server_users_present_hosts`]: Hosts to `CREATE` privileges for (e.g. `%`)\n\n* `percona_server_users_present_hosts`: [default: `[localhost]`]: Hosts to `CREATE` privileges for\n\n* `percona_server_users_absent`: [default: `[{name: ''}]`]: Users to `DROP`\n* `percona_server_users_absent.{n}.name`: [required]: The name of the user\n* `percona_server_users_absent.{n}.hosts`: [optional, default: `percona_server_users_absent_hosts`]: Hosts to `DROP` privileges for (e.g. `%`)\n\n* `percona_server_users_absent_hosts`: [default: `[{{ ansible_hostname }}, 127.0.0.1, localhost, ::1, %]`]: Hosts to `DROP` privileges for\n\n##### Queries\n\n* `percona_server_queries`: [default: `[]`]: Query declarations\n* `percona_server_queries.{n}.database`: [required]: Name of the database to execute queries on\n* `percona_server_queries.{n}.queries`: [default: `[]`]: A list of queries to execute\n\n##### Timezone info\n\n* `percona_server_zoneinfo_manage`: [default: `false`]: Whether or not to load time zone tables\n* `percona_server_zoneinfo_tz_dir`: [default: `/usr/share/zoneinfo`]: The zoneinfo directory path name\n* `percona_server_zoneinfo_tz_file`: [default: `''`]: The path of a single time zone file (e.g. `/usr/share/zoneinfo/Europe/Amsterdam`)\n* `percona_server_zoneinfo_tz_name`: [default: `''`]: A time zone name (e.g. `Europe/Amsterdam`)\n* `percona_server_zoneinfo_command`: [default: `mysql_tzinfo_to_sql {{ percona_server_zoneinfo_tz_dir }}`]: The zoneinfo command to generate SQL (e.g. `mysql_tzinfo_to_sql {{ percona_server_zoneinfo_tz_file }} {{ percona_server_zoneinfo_tz_name }}`, `mysql_tzinfo_to_sql --leap {{ {{ percona_server_zoneinfo_tz_file }} }}`)\n\n##### Toolkit UDFs\n\n* `percona_server_toolkit_udfs_manage`: [default: `true`]: Whether or not to install recommended hash functions ([see](https://www.percona.com/doc/percona-server/LATEST/management/udf_percona_toolkit.html))\n\n## Dependencies\n\nNone\n\n## Recommended\n\n* `percona-client` ([see](https://github.com/Oefenweb/ansible-percona-client), when `percona_server_manage_root_my_cnf` is `false`)\n* `percona-server-tools` ([see](https://github.com/Oefenweb/ansible-percona-server-tools))\n* `percona-toolkit` ([see](https://github.com/Oefenweb/ansible-percona-toolkit))\n* `limits` ([see](https://github.com/Oefenweb/ansible-limits))\n\n#### Example(s)\n\n##### Simple\n\n```yaml\n---\n- hosts: all\n  roles:\n    - oefenweb.percona-server\n```\n\n##### Configure databases and users\n\n```yaml\n---\n- hosts: all\n  roles:\n    - oefenweb.percona-server\n  vars:\n    percona_server_databases_present:\n      - name: ipsum\n      - name: dolor\n\n    percona_server_databases_absent:\n      - name: sit\n      - name: amet\n\n    percona_server_users_present_hosts:\n      - 'localhost'\n      - '%'\n\n    percona_server_users_present:\n      - name: consectetur\n        password: 'elit'\n        privs:\n          - 'ipsum.*:ALL'\n          - 'dolor.*:ALL'\n      - name: adipiscing\n        password: 'lacus'\n        privs:\n          - 'ipsum.*:SELECT'\n          - 'dolor.*:INSERT,UPDATE'\n        hosts:\n          - '%'\n\n    percona_server_users_absent:\n      - name: urna\n      - name: vehicula\n        hosts:\n          - '%'\n```\n\n##### Configure SSL\n\n```yaml\n- hosts: all\n  roles:\n    - oefenweb.percona-server\n  vars:\n    percona_server_ssl_map:\n      ca-cert:\n        src: ../../../files/percona-server/etc/mysql/ca-cert.pem\n        dest: /etc/mysql/ca-cert.pem\n      client-cert:\n        src: ../../../files/percona-server/etc/mysql/client-cert.pem\n        dest: /etc/mysql/client-cert.pem\n      client-key:\n        src: ../../../files/percona-server/etc/mysql/client-key.pem\n        dest: /etc/mysql/client-key.pem\n      server-cert:\n        src: ../../../files/percona-server/etc/mysql/server-cert.pem\n        dest: /etc/mysql/server-cert.pem\n      server-key:\n        src: ../../../files/percona-server/etc/mysql/server-key.pem\n        dest: /etc/mysql/server-key.pem\n    percona_server_etc_my_cnf:\n      - section: client\n        options:\n          - name: ssl_cert\n            value: \"{{ percona_server_ssl_map['client-cert']['dest'] }}\"\n          - name: ssl_key\n            value: \"{{ percona_server_ssl_map['client-key']['dest'] }}\"\n      - section: mysqld\n        options:\n          - name: ssl_ca\n            value: \"{{ percona_server_ssl_map['ca-cert']['dest'] }}\"\n          - name: ssl_cert\n            value: \"{{ percona_server_ssl_map['server-cert']['dest'] }}\"\n          - name: ssl_key\n            value: \"{{ percona_server_ssl_map['server-key']['dest'] }}\"\n```\n\n##### Configure replication\n\n###### Master-slave\n\n```yaml\n- hosts: master\n  roles:\n    - oefenweb.percona-server\n  vars:\n    percona_server_users_present:\n      - name: replicator\n        password: 'replicator'\n        privs:\n          - '*.*:REPLICATION SLAVE'\n        hosts:\n          - '%'\n\n    percona_server_etc_my_cnf:\n      - section: mysqld\n        options:\n          - name: server_id\n            value: 1\n          - name: log_bin\n            value: mysql-bin\n          - name: log_bin_index\n            value: mysql-bin.index\n          - name: sync_binlog\n            value: 1\n          - name: report_host\n            value: \"{{ inventory_hostname }}\"\n\n- hosts: slave\n  roles:\n    - oefenweb.percona-server\n  vars:\n    percona_server_users_present:\n      - name: replicator\n        password: 'replicator'\n        privs:\n          - '*.*:REPLICATION SLAVE'\n        hosts:\n          - '%'\n\n    percona_server_etc_my_cnf:\n      - section: mysqld\n        options:\n          - name: server_id\n            value: 2\n          - name: relay_log\n            value: mysql-relay\n          - name: relay_log_index\n            value: mysql-relay.index\n          - name: sync_relay_log\n            value: 1\n          - name: report_host\n            value: \"{{ inventory_hostname }}\"\n\n          - name: read_only\n            value: 1\n          - name: skip_slave_start\n            value: 1\n```\n\n###### Master-master\n\n```yaml\n- hosts: master1\n  roles:\n    - oefenweb.percona-server\n  vars:\n    percona_server_users_present:\n      - name: replicator\n        password: 'replicator'\n        privs:\n          - '*.*:REPLICATION SLAVE'\n        hosts:\n          - '%'\n\n    percona_server_etc_my_cnf:\n      - section: mysqld\n        options:\n          - name: server_id\n            value: 1\n          - name: log_bin\n            value: mysql-bin\n          - name: log_bin_index\n            value: mysql-bin.index\n          - name: sync_binlog\n            value: 1\n          - name: relay_log\n            value: mysql-relay\n          - name: relay_log_index\n            value: mysql-relay.index\n          - name: sync_relay_log\n            value: 1\n          - name: report_host\n            value: \"{{ inventory_hostname }}\"\n\n          - name: skip_slave_start\n            value: 1\n\n- hosts: master2\n  roles:\n    - oefenweb.percona-server\n  vars:\n    percona_server_users_present:\n      - name: replicator\n        password: 'replicator'\n        privs:\n          - '*.*:REPLICATION SLAVE'\n        hosts:\n          - '%'\n\n    percona_server_etc_my_cnf:\n      - section: mysqld\n        options:\n          - name: server_id\n            value: 2\n          - name: log_bin\n            value: mysql-bin\n          - name: log_bin_index\n            value: mysql-bin.index\n          - name: sync_binlog\n            value: 1\n          - name: relay_log\n            value: mysql-relay\n          - name: relay_log_index\n            value: mysql-relay.index\n          - name: sync_relay_log\n            value: 1\n          - name: report_host\n            value: \"{{ inventory_hostname }}\"\n\n          - name: skip_slave_start\n            value: 1\n```\n\n#### License\n\nMIT\n\n#### Author Information\n\nMischa ter Smitten (based on work of [overdrive3000](https://github.com/overdrive3000/ansible-percona), [geerlingguy](https://github.com/geerlingguy/ansible-role-mysql) and [silviud](https://gist.github.com/silviud/6382400))\n\n#### Feedback, bug-reports, requests, ...\n\nAre [welcome](https://github.com/Oefenweb/ansible-percona-server/issues)!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foefenweb%2Fansible-percona-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foefenweb%2Fansible-percona-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foefenweb%2Fansible-percona-server/lists"}