ameeuw23 / ansible-proxysql

Ansible proxysql role

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ProxySQL Ansible role

This role will install proxysql on Ubuntu Xenial (16.04) from sysown release.

Requirements

Tested on 2.2.1.0 but should work on Ansible 1.9+.

Role Handlers

Name Type Description
Restart proxysql normal service Restarts proxysql using service (SysV based) when proxysql_initial is False
Restart proxysql initial command Restarts proxysql in initial mode when proxysql_initial is True
Restart proxysql Virtual Calls all above handlers

Tags

Name Description
proxysql Applies to whole role

Role Variables

Name Default Type Description
proxysql_admin_user admin String Username for ProxySQL admin
proxysql_admin_password admin String Password for the above user
proxysql_admin_interface 127.0.0.1 String Bind address for admin interface
proxysql_admin_port 6032 Number Bind port for administrative interface
proxysql_initial False Bool Wipes existing config database when True (see --initial CLI flag)
proxysql_mysql_interface 127.0.0.1 String MySQL bind interface
proxysql_mysql_port 6033 Number MySQL bind port
proxysql_mysql_query_rules [] Array Configuration-file query rules
proxysql_mysql_servers [] Array Configuration-file servers
proxysql_mysql_users [] Array Configuration-file users

If you don't want to list proxy_mysql_servers in variables, you can set proxy_mysql_servers_group instead. The rolle will populate mysql_servers from the group name.

However, in this case, be sure to set the following variables for each server in the group:

Name Default Type Description
proxysql_upstream_mysql_interface false String Interface name upstream MySQL server listens on
proxysql_upstream_mysql_port 3306 String Port iupstream MySQL listens on
proxysql_hostgroup false Number Hostgroup this MySQL server belongs to

Note that you can not use both proxy_mysql_servers_group and proxy_mysql_servers at the same time !

When using cluster mode, the following variables must be set:

Name Default Type Description
proxysql_cluster_name false String ProxySQL name
proxysql_cluster_password false String ProxySQL password for cluster communications
proxysql_cluster_servers_group false String Ansible group containing ProxySQL cluster members

Example

Requirements

- src: git+ssh://git@github.com/leucos/ansible-proxysql.git
  version: origin/master

Use a fixed tag instead of origin/master if possible

Playbook

- hosts: proxylb
  roles:
    - role-proxysql

Inventory

proxysql_mysql_query_rules:
  - match_pattern: "^SELECT .* FOR UPDATE$"
    destination_hostgroup: 0
  - match_pattern: "^SELECT"
    destination_hostgroup: 1

proxysql_mysql_servers:
   - address: 1.2.3.4
     port: 3306
     hostgroup: 0
   - address: 5.6.7.8
     port: 3306
     hostgroup: 1

Tests

To run tests locally in a Vagrant machine, just hit:

vagrant up
vagrant ssh -c specs

If you want to run the test playbook fast (i.e., without re-installing Ansible), just run:

vagrant ssh -c 'specs -p'

Notes

This role follows Semantic Versionning conventions.

Besides proxysql, the mysql-common package will be installed by this role.

License

MIT

Author Information

@leucos

About

Ansible proxysql role


Languages

Language:Shell 100.0%