proxysql
: Install and configure ProxySQL.
proxysql::admin_credentials
: This class is called from proxysql for service config.proxysql::config
: This class is called from proxysql for service config.proxysql::configure
: This class is called from proxysql for all proxy configuration.proxysql::install
: This class is called from proxysql for install.proxysql::params
: It sets variables according to platform.proxysql::prerequisites
: Manage the prerequisites where the ProxySQL package might be.proxysql::reload_config
: This class is called from proxysql to update config if it changed.proxysql::repo
: Manage the repos where the ProxySQL package might be.proxysql::selinux
: Adds selinux configuration needed for logrotate to work.proxysql::service
: This class ensures that the service is running.
proxy_cluster
: Manage a ProxySQL cluster.proxy_global_variable
: Manage a ProxySQL global variable.proxy_mysql_galera_hostgroup
: Manage a ProxySQL mysql_galera_hostgroup.proxy_mysql_group_replication_hostgroup
: Manage a ProxySQL mysql_group_replication_hostgroup.proxy_mysql_query_rule
: Manage a ProxySQL mysql_query_rules entry.proxy_mysql_replication_hostgroup
: Manage a ProxySQL mysql_replication_hostgroup.proxy_mysql_server
: Manage a ProxySQL mysql_server.proxy_mysql_server_no_hostgroup
: Manage a ProxySQL mysql_server.proxy_mysql_user
: Manage a ProxySQL mysql_user. This includes management of users password as well as privileges.proxy_scheduler
: Manage a ProxySQL scheduler entry.
Proxysql::GaleraHostgroup
: Represents an entry in the ProxySQLmysql_galera_hostgroups
admin table.Proxysql::GroupReplicationHostgroup
: Represents a ProxySQL group replication hostgroup.Proxysql::Hostgroup
: Represents a ProxySQL replication hostgroup.Proxysql::Scheduler
: Represents a ProxySQL schedulerProxysql::Server
: Represents a ProxySQL server.Proxysql::User
: Represents a ProxySQL user.
Install and configure ProxySQL.
The following parameters are available in the proxysql
class.
Data type: String
The name of the ProxySQL package in your package manager.
Default value: 'proxysql'
Data type: String
The ensure of the ProxySQL package resource.
Default value: 'installed'
Data type: Array[String]
An array of additional options to pass when installing a package.
Default value: []
Data type: String
The name of the ProxySQL service resource.
Default value: 'proxysql'
Data type: String
The ensure of the ProxySQL service resource.
Default value: 'running'
Data type: String
The directory where ProxySQL will store its data.
Default value: $proxysql::params::datadir
Data type: Stdlib::Filemode
The filesystem mode for the datadir
.
Default value: '0600'
Data type: Optional[Stdlib::Unixpath]
The File where ProxySQL will store its error logs. Available from ProxySQL v2.0.0
Default value: undef
Data type: Stdlib::Filemode
The filesystem mode for the errorlog_file
. Available from ProxySQL v2.0.0
Default value: '0600'
Data type: String
Owner of the errorlog_file
. Available from ProxySQL v2.0.0
Default value: 'proxysql'
Data type: String
Group of the errorlog_file
. Available from ProxySQL v2.0.0
Default value: 'proxysql'
Data type: Boolean
Whether to create the required selinux rules for logrotate to work.
This parameter also requires the puppet/selinux
module to be installed.
Default value: true
Data type: Boolean
Whether to include the mysql::client class. You may have mysql::client included or managed with different parameters elsewhere in your catalogue.
Default value: true
Data type: String
The ip where the ProxySQL service will listen on.
Default value: '0.0.0.0'
Data type: Integer
The port where the ProxySQL service will listen on.
Default value: 6033
Data type: String
The socket where the ProxySQL service will listen on.
Default value: $proxysql::params::listen_socket
Data type: String
The username to connect to the ProxySQL admin interface.
Default value: 'admin'
Data type: Sensitive[String]
The password to connect to the ProxySQL admin interface.
Default value: Sensitive('admin')
Data type: String
The username to connect with read-only permissions to the ProxySQL admin interface.
Default value: 'stats'
Data type: Sensitive[String]
The password to connect with read-only permissions to the ProxySQL admin interface.
Default value: Sensitive('stats')
Data type: String
The ip where the ProxySQL admin interface will listen on.
Default value: '127.0.0.1'
Data type: Integer
The port where the ProxySQL admin interface will listen on.
Default value: 6032
Data type: String
The socket where the ProxySQL admin interface will listen on. Changing this on a running system will result in failing runs.
Default value: $proxysql::params::admin_listen_socket
Data type: String
The username ProxySQL will use to connect to the configured mysql_servers.
Default value: 'monitor'
Data type: Sensitive[String]
The password ProxySQL will use to connect to the configured mysql_servers.
Default value: Sensitive('monitor')
Data type: String
The file where the ProxySQL configuration is saved. This will only be configured if manage_config_file
is set to true
.
Default value: '/etc/proxysql.cnf'
Data type: Boolean
Determines whether this module will configure the ProxySQL configuration file.
Default value: true
Data type: String
Path of the my.cnf file where the connections details for the admin interface is save. This is required for the providers to work.
This will only be configured if manage_mycnf_file
is set to true
.
Default value: '/root/.my.cnf'
Data type: Boolean
Determines whether this module will configure the my.cnf file to connect to the admin interface. This is required for the providers to work.
Default value: true
Data type: Boolean
Determines whether this module will restart ProxySQL after reconfiguring the config file.
Default value: false
Data type: Boolean
Specifies whether te managed ProxySQL resources should be immediately loaded to the active runtime.
Default value: true
Data type: Boolean
Specifies whether te managed ProxySQL resources should be immediately save to disk.
Default value: true
Data type: Boolean
Determines whether this module will manage the repositories where ProxySQL might be.
Default value: true
Data type: Pattern[/^[1|2]\.\d+\.\d+/]
The version of proxysql being managed. This parameter affects the repository configured when manage_repo == true
and how the service is managed.
It does not affect the package version being installed. It is used as a hint to the puppet module on how to configure proxysql. To control the exact version
deployed, use package_name
or package_source
. Currently defaults to '2.0.7' or the value of the proxysql_version
fact.
Default value: $proxysql::params::version
Data type: Optional[String[1]]
location of a proxysql package. When specified, this package will be installed with the package\_provider
and the manage_repo
setting will be ignored.
Since version 4 of this module, this defaults to undef
and needs to be specified when you don't want to use a package from a repository.
Default value: undef
Data type: Enum['dpkg','rpm']
provider for package_source
.
Default value: $proxysql::params::package_provider
Data type: Optional[String[1]]
The checksum of the package. Optional and only applicable when package_source
is provided.
Default value: undef
Data type: Optional[String[1]]
The 'type' of package_checksum_value
. Optional and only applicable when package_checksum_value
is provided.
Default value: undef
Data type: Array[String[1]]
A list of packages which should be additionally installed.
Default value: $proxysql::params::package_dependencies
Data type: String
Owner of the datadir and config_file.
Default value: $version
Data type: String
Group of the datadir and config_file.
Default value: $sys_owner
Data type: Hash
Which configuration variables should be overriden.
Default value: {}
Data type: String
The name of the node.
Default value: "${facts['networking']['fqdn']}:${admin_listen_port}"
Data type: Optional[String[1]]
If set, proxysql_servers with the same cluster_name will be automatically added to the same cluster and will synchronize their configuration parameters.
Default value: undef
Data type: String
The username ProxySQL will use to connect to the configured mysql_clusters
Default value: 'cluster'
Data type: Sensitive[String]
The password ProxySQL will use to connect to the configured mysql_clusters.
Default value: Sensitive('cluster')
Data type: Optional[String]
The name of the mysql client package in your package manager.
Default value: undef
Data type: Boolean
Determines whether this module will manage hostgroup_id for mysql_servers. If false - it will skip difference in this value between manifest and defined in ProxySQL.
Default value: true
Data type: Optional[Proxysql::Server]
Array of mysql_servers, that will be created in ProxySQL.
Default value: undef
Data type: Optional[Proxysql::User]
Array of mysql_users, that will be created in ProxySQL.
Default value: undef
Data type: Optional[Proxysql::Hostgroup]
Array of mysql_hostgroups, that will be created in ProxySQL.
Default value: undef
Data type: Optional[Proxysql::GroupReplicationHostgroup]
Hash of mysql_group_replication_hostgroups, that will be created in ProxySQL.
Default value: undef
Data type: Optional[Proxysql::GaleraHostgroup]
Hash of mysql_galera_hostgroups, that will be created in ProxySQL.
Default value: undef
Data type: Optional[Proxysql::Rule]
Array of mysql_rules, that will be created in ProxySQL.
Default value: undef
Data type: Optional[Proxysql::Scheduler]
Array of schedulers, that will be created in ProxySQL.
Default value: undef
Data type: Boolean
If set, ProxySQL config file will be split in 2: main config file with admin and mysql variables and proxy config file with servers\users\hostgroups\scheduler params.
Default value: false
Data type: String
The file where servers\users\hostgroups\scheduler\rules params of ProxySQL configuration are saved
This will only be configured if split_config
is set to true
.
Default value: '/etc/proxysql_proxy.cnf'
Data type: Boolean
Determines whether this module will update the ProxySQL proxy configuration file.
Default value: true
Manage a ProxySQL cluster.
The following properties are available in the proxy_cluster
type.
Valid values: %r{[\w+]}
free form comment field.
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
Valid values: %r{\w+}
The hostname of the server.
Valid values: %r{\d+}
The port of the server.
Valid values: %r{\d+}
Currently unused, but in the roadmap for future enhancements.
The following parameters are available in the proxy_cluster
type.
Valid values: true
, false
Load this entry to the active runtime.
Default value: true
namevar
name for cluster to manage.
The specific backend to use for this proxy_cluster
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
Valid values: true
, false
Perist this entry to the disk.
Default value: true
Manage a ProxySQL global variable.
The following properties are available in the proxy_global_variable
type.
Valid values: %r{.+}
variable value
The following parameters are available in the proxy_global_variable
type.
Valid values: true
, false
Load this entry to the active runtime.
Default value: true
namevar
variable name
The specific backend to use for this proxy_global_variable
resource. You will seldom need to specify this --- Puppet
will usually discover the appropriate provider for your platform.
Valid values: true
, false
Perist this entry to the disk.
Default value: true
Manage a ProxySQL mysql_galera_hostgroup.
The following properties are available in the proxy_mysql_galera_hostgroup
type.
active
Valid values: %r{[\w+]}
text field can be used to store any arbitrary data.
Valid values: present
, absent
Manage the state of this type.
Default value: present
Maximum Transaction Galera Node out-of-sync
Maximum Writers
A writer is also used for reading
The following parameters are available in the proxy_mysql_galera_hostgroup
type.
Backup Writer hostgroup.
Valid values: true
, false
, yes
, no
Load this entry to the active runtime.
Default value: true
namevar
name to describe the hostgroup config
Offline hostgroup.
The specific backend to use for this proxy_mysql_galera_hostgroup
resource. You will seldom need to specify this ---
Puppet will usually discover the appropriate provider for your platform.
Reader hostgroup.
Valid values: true
, false
, yes
, no
Perist this entry to the disk.
Default value: true
Writer hostgroup.
Manage a ProxySQL mysql_group_replication_hostgroup.
The following properties are available in the proxy_mysql_group_replication_hostgroup
type.
Valid values: %r{[01]}
Active status.
Valid values: %r{\d+}
Backup writer hostgroup.
Valid values: %r{[\w+]}
text field can be used to store any arbitrary data.
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
Valid values: %r{\d+}
Max transactions behind.
Valid values: %r{[01]}
Max writers.
Valid values: %r{\d+}
Offline hostgroup.
Valid values: %r{\d+}
Reader hostgroup.
Valid values: %r{\d+}
Writer hostgroup.
Valid values: %r{[01]}
Writer is also a reader.
The following parameters are available in the proxy_mysql_group_replication_hostgroup
type.
Valid values: true
, false
Load this entry to the active runtime.
Default value: true
namevar
name to describe the hostgroup config
The specific backend to use for this proxy_mysql_group_replication_hostgroup
resource. You will seldom need to specify
this --- Puppet will usually discover the appropriate provider for your platform.
Valid values: true
, false
Perist this entry to the disk.
Default value: true
Manage a ProxySQL mysql_query_rules entry.
The following properties are available in the proxy_mysql_query_rule
type.
Valid values: %r{[01]}
Is the rule active or not.
Valid values: %r{[01]}
Used to chain rules.
Valid values: %r{\d+}
The amount of miliseconds to cache the result of this query.
Valid values: %r{\w+}
Match traffic from a certain address.
Valid values: %r{[\w+]}
free form text field, usable for a descriptive comment of the query rule.
Valid values: %r{\d+}
number of milliseconds to delay the execution of the query.
Valid values: %r{\d+}
The hostgroup to send this query to.
Valid values: %r{\w+}
match queries with a specific digest, as returned by stats_mysql_query_digest.digest
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
Valid values: %r{\w+}
query will be blocked, and the specified error_msg will be returned to the client.
Valid values: %r{\d+}
Used to chain rules. This is the id of the previous rule to apply
Valid values: %r{\d+}
Used to chain rules. This is the id of the next rule to apply
Valid values: %r{[01]}
query will be logged.
Valid values: %r{\w+}
regular expression that matches the query digest
Valid values: %r{\w+}
regular expression that matches the query text
Valid values: %r{\d+}
see https://github.com/sysown/proxysql/blob/master/doc/mirroring.md
Valid values: %r{\d+}
see https://github.com/sysown/proxysql/blob/master/doc/mirroring.md.
Valid values: %r{[01]}
if this is set to 1, only queries not matching the query text will be considered as a match. This acts as a NOT operator in front of the regular expression matching against match_pattern or match_digest.
Valid values: %r{\w+}
Match incoming traffic on a specific local address.
Valid values: %r{\d+}
Match incoming traffic on a specific local port.
Valid values: %r{[01]}
feature currently not in use.
Valid values: %r{\w+}
this is the pattern with which to replace the matched pattern.
Valid values: %r{\d+}
the maximum number of times a query needs to be re-executed in case of detected failure during the execution of the query.
Valid values: %r{\d+}
The id of the query rule.
Valid values: %r{\w+}
Schema to apply this rule to.
Valid values: %r{\d+}
The maximum amount of miliseconds in which the matched or rewritten query should be executed.
Valid values: %r{\w+}
Username to apply this rule to.
The following parameters are available in the proxy_mysql_query_rule
type.
Valid values: true
, false
Load this entry to the active runtime.
Default value: true
namevar
query rule name
The specific backend to use for this proxy_mysql_query_rule
resource. You will seldom need to specify this --- Puppet
will usually discover the appropriate provider for your platform.
Valid values: true
, false
Perist this entry to the disk.
Default value: true
Manage a ProxySQL mysql_replication_hostgroup.
The following properties are available in the proxy_mysql_replication_hostgroup
type.
Valid values: %r{[\w+]}
text field can be used to store any arbitrary data.
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
Valid values: %r{\d+}
Reader hostgroup.
Valid values: %r{\d+}
Writer hostgroup.
The following parameters are available in the proxy_mysql_replication_hostgroup
type.
Valid values: true
, false
Load this entry to the active runtime.
Default value: true
namevar
name to describe the hostgroup config
The specific backend to use for this proxy_mysql_replication_hostgroup
resource. You will seldom need to specify this
--- Puppet will usually discover the appropriate provider for your platform.
Valid values: true
, false
Perist this entry to the disk.
Default value: true
Manage a ProxySQL mysql_server.
The following properties are available in the proxy_mysql_server
type.
Valid values: %r{[\w+]}
text field that can be used for any purposed defined by the user. Could be a description of what the host stores, a reminder of when the host was added or disabled, or a JSON processed by some checker script.
Valid values: %r{\d+}
if the value is greater than 0, new connections to that server will use compression
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
Valid values: %r{\d+}
The hostgroup of the server.
Default value: 0
Valid values: %r{\w+}
The hostname of the server.
Default value: localhost
Valid values: %r{\d+}
the maximum number of connections ProxySQL will open to this backend server. Even though this server will have the highest weight, no new connections will be opened to it once this limit is hit. Please ensure that the backend is configured with a correct value of max_connections to avoid that ProxySQL will try to go beyond that limit
Valid values: %r{[\d+]}
ping time is regularly monitored. If a host has a ping time greater than max_latency_ms it is excluded from the connection pool (although the server stays ONLINE)
Valid values: %r{\d+}
if greater and 0, ProxySQL will reguarly monitor replication lag and if it goes beyond such threshold it will temporary shun the host until replication catch ups
Valid values: %r{\d+}
The port of the server.
Default value: 3306
Valid values: ONLINE
, SHUNNED
, OFFLINE_SOFT
, OFFLINE_HARD
Server status.
Valid values: %r{[01]}
if set to 1, connections to the backend will use SSL
Valid values: %r{\d+}
the bigger the weight of a server relative to other weights, the higher the probability of the server to be chosen from a hostgroup
The following parameters are available in the proxy_mysql_server
type.
Valid values: true
, false
Load this entry to the active runtime.
Default value: true
namevar
name for server to manage.
The specific backend to use for this proxy_mysql_server
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
Valid values: true
, false
Perist this entry to the disk.
Default value: true
Manage a ProxySQL mysql_server.
The following properties are available in the proxy_mysql_server_no_hostgroup
type.
Valid values: %r{[\w+]}
text field that can be used for any purposed defined by the user. Could be a description of what the host stores, a reminder of when the host was added or disabled, or a JSON processed by some checker script.
Valid values: %r{\d+}
if the value is greater than 0, new connections to that server will use compression
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
Valid values: %r{\w+}
The hostname of the server.
Default value: localhost
Valid values: %r{\d+}
the maximum number of connections ProxySQL will open to this backend server. Even though this server will have the highest weight, no new connections will be opened to it once this limit is hit. Please ensure that the backend is configured with a correct value of max_connections to avoid that ProxySQL will try to go beyond that limit
Valid values: %r{[\d+]}
ping time is regularly monitored. If a host has a ping time greater than max_latency_ms it is excluded from the connection pool (although the server stays ONLINE)
Valid values: %r{\d+}
if greater and 0, ProxySQL will reguarly monitor replication lag and if it goes beyond such threshold it will temporary shun the host until replication catch ups
Valid values: %r{\d+}
The port of the server.
Default value: 3306
Valid values: ONLINE
, SHUNNED
, OFFLINE_SOFT
, OFFLINE_HARD
Server status.
Valid values: %r{[01]}
if set to 1, connections to the backend will use SSL
Valid values: %r{\d+}
the bigger the weight of a server relative to other weights, the higher the probability of the server to be chosen from a hostgroup
The following parameters are available in the proxy_mysql_server_no_hostgroup
type.
Valid values: %r{\d+}
The hostgroup of the server.
Default value: 0
Valid values: true
, false
Load this entry to the active runtime.
Default value: true
namevar
name for server to manage.
The specific backend to use for this proxy_mysql_server_no_hostgroup
resource. You will seldom need to specify this
--- Puppet will usually discover the appropriate provider for your platform.
Valid values: true
, false
Perist this entry to the disk.
Default value: true
Manage a ProxySQL mysql_user. This includes management of users password as well as privileges.
The following properties are available in the proxy_mysql_user
type.
Valid values: %r{[01]}
Is the user active or not.
Valid values: %r{[01]}
Backend or not.
Default value: 1
Valid values: %r{\d+}
Default hostgroup for the user.
Valid values: %r{\w+}
Default schema for the user.
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
Valid values: %r{[01]}
Use fast forwrd or not.
Valid values: %r{[01]}
Frontend or not.
Default value: 1
Valid values: %r{\d+}
Max concurrent connections for the user.
Valid values: %r{\w*}
The password of the user. You can use mysql_password() for creating a hashed password.
Valid values: %r{[01]}
Is the user locked in the default schema or not.
Valid values: %r{[01]}
Disable routing across hostgroups once a transaction has started for a specific user.
Valid values: %r{[01]}
Use ssl or not.
The following parameters are available in the proxy_mysql_user
type.
Valid values: true
, false
Encrypt the users password (requires ProxySQL setting admin-hash_password
= true
)
Default value: true
Valid values: true
, false
Load this entry to the active runtime.
Default value: true
namevar
The name of the user to manage.
The specific backend to use for this proxy_mysql_user
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
Valid values: true
, false
Perist this entry to the disk.
Default value: true
Manage a ProxySQL scheduler entry.
The following properties are available in the proxy_scheduler
type.
Valid values: %r{[01]}
Is the scheduler active or not.
Valid values: %r{[\w+]}
optional argument to pass to the script.
Valid values: %r{[\w+]}
optional argument to pass to the script.
Valid values: %r{[\w+]}
optional argument to pass to the script.
Valid values: %r{[\w+]}
optional argument to pass to the script.
Valid values: %r{[\w+]}
optional argument to pass to the script.
Valid values: %r{[\w+]}
optional comment.
Valid values: present
, absent
The basic property that the resource should be in.
Default value: present
Valid values: %r{\w+}
Filename of the script to run. (required)
Valid values: %r{\d+}
How often (in millisecond) the job will be started.
Valid values: %r{\d+}
The id of the scheduler entry.
The following parameters are available in the proxy_scheduler
type.
Valid values: true
, false
Load this entry to the active runtime.
Default value: true
namevar
scheduler name
The specific backend to use for this proxy_scheduler
resource. You will seldom need to specify this --- Puppet will
usually discover the appropriate provider for your platform.
Valid values: true
, false
Perist this entry to the disk.
Default value: true
Represents an entry in the ProxySQL mysql_galera_hostgroups
admin table.
Alias of Array[Hash[String, Struct[{ writer => Integer[0], backup => Integer[0], reader => Integer[0], offline => Integer[0], Optional[active] => Integer[0,1], Optional[writers] => Integer[0], Optional[writer_is_reader] => Integer[0,2], Optional[max_transactions] => Integer[0], }],1,1]]
Represents a ProxySQL group replication hostgroup.
Alias of Array[Hash[String, Struct[{ writer => Integer, backup => Integer, reader => Integer, offline => Integer, Optional[active] => Integer[0,1], Optional[writers] => Integer, Optional[writer_is_reader] => Integer[0,1], Optional[max_transactions] => Integer, }],1,1]]
Represents a ProxySQL replication hostgroup.
Alias of Array[Hash[String, Struct[{ writer => Integer, reader => Integer, }],1,1]]
Represents a ProxySQL scheduler
Alias of Array[Hash[String, Struct[{ scheduler_id => Integer, active => Integer, Optional[interval_ms] => Integer, filename => String[1], Optional[arg1] => String[1], Optional[arg2] => String[1], Optional[arg3] => String[1], Optional[arg4] => String[1], Optional[arg5] => String[1] }],1,1]]
Represents a ProxySQL server.
Alias of Array[Hash[String, Struct[{ Optional[port] => Integer, hostgroup_id => Integer, Optional[status] => String[1], Optional[weight] => Integer, Optional[compression] => Integer, Optional[max_connections] => Integer, Optional[max_replication_lag] => Integer, Optional[use_ssl] => Integer[0,1], Optional[max_latency_ms] => Integer, Optional[comment] => String[1], }],1,1]]
Represents a ProxySQL user.
Alias of Array[Hash[String, Struct[{ password => String[1], default_hostgroup => Integer, Optional[active] => Integer[0,1], Optional[use_ssl] => Integer[0,1], Optional[default_schema] => String[1], Optional[schema_locked] => Integer[0,1], Optional[transaction_persistent] => Integer[0,1], Optional[fast_forward] => Integer[0,1], Optional[backend] => Integer[0,1], Optional[frontend] => Integer[0,1], Optional[max_connections] => Integer, }],1,1]]