Skip to content

eumel8/otc_rds

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

otc_rds

OTC role for RDS.

Variables:

Name Description
rds_version_id ID of the RDS version (to use to fetch flavor
rds_name Name of RDS instance
rds_id ID of RDS instance
rds_node_id ID of RDS instance node (name convention _node0,_node1..)
rds_type RDS type (MySQL or PostgreSQL)
rds_version RDS version (i.e. 5.6.7)
rds_spec_code RDS resource specification code, (i.e. rds.mysql.m1.xlarge.ha)
rds_instance_mode RDS instance type (ha,replica or single)
rds_volume_type Type of RDS volume (COMMON (SATA) or ULTRAHIGH (SSD))
rds_volume_size Size of RDS volume (40 - 4000 GB)
rds_port RDS port
rds_ram Memory for RDS in MB
rds_availability_zone RDS Availability Zone ( i.e. eu_de-01)
rds_secgroup_name RDS Security Group
rds_subnet_name RDS subnet
rds_backup_time Start time of backup (i.e. 01:00-02:00, maximum of 1 hour, minutes in 00,15,30,45)
rds_backup_id ID of RDS backup (required for restore)
rds_backup_name Name if manual generated backup
rds_backup_days Keep days of backups (between 0-732, 0 = disabled)
rds_restore_time Timestamp of RDS restore
rds_ha_enabled RDS HA enabled or not (true or false)
rds_ha_replication_mode RDS replication mode (async or semisync for MySQL, async or sync for PostgreSQL)
rds_disk_encryption_id Key ID for disc encryption
rds_root_password RDS root password
errorlog_startdate Start date of error log (i.e. 2018-04-05+23:59)
errorlog_enddate End date of error log (i.e. 2018-05-05+23:59)
errorlog_curpage Pages per error log (default 1)
errorlog_perpage Error message per page (1-100, default 100)
slowlog_type Type of slowlog (INSERT, UPDATE, SELECT, DELETE, CREATE)
waitfor Wait for RDS creation is finished (true or false)
rds_parametergroup Key/Value list of configuration parameter

Functions:

Version:

./grole otc_rds; ansible-playbook roles.yml -e "localaction=version"

Flavor:

./grole otc_rds; ansible-playbook roles.yml -e "rds_name=ansible-mysql01 rds_type=MySQL rds_version=5.7.20 localaction=flavor"

List:

./grole otc_rds; ansible-playbook roles.yml -e "localaction=list"

Show:

./grole otc_rds; ansible-playbook roles.yml -e "rds_name=ansible-mysql01_node0 localaction=show"

Note: configured rds_name will automatically append with number of instances starting from _node0

Create:

ansible-playbook tenant_yml.yml -e "rds_name=ansible-mysql01 rds_root_password=Ab+12345678 localaction=create"

Note: define rds settings in an extra file like in tests/vars/tenant.yml

Create Parameter Group:

ansible-playbook tenant_yml.yml -e "rds_name=ansible-mysql01 localaction=create_parametergroup"

Note: define parameters in an extra file as key/value pairs in rds_parametergroup variable

List Parameter Group:

./grole otc_rds; ansible-playbook roles.yml -e "localaction=list_parametergroup"

Apply Parameter Group:

./grole otc_rds; ansible-playbook roles.yml -e "rds_name=ansible-mysql01 localaction=apply_parametergroup"

Delete Parameter Group:

./grole otc_rds; ansible-playbook roles.yml -e "rds_name=ansible-mysql01 localaction=delete_parametergroup"

Resize Volume:

./grole otc_rds; ansible-playbook roles.yml -e "rds_name=ansible-mysql01_node0 rds_volume_size=120 localaction=resize_volume"

Resize Flavor:

./grole otc_rds; ansible-playbook roles.yml -e "rds_name=ansible-mysql01 rds_node_id=d61a75b397ff4af1837fafb75a860eafin01  rds_ram=8000  rds_type=MySQL rds_version=5.7.20 rds_ha_enabled=false localaction=resize_flavor"

Reboot an instance:

./grole otc_rds; ansible-playbook roles.yml -e "rds_name=ansible-mysql01 waitfor=true localaction=reboot"

./grole otc_rds; ansible-playbook roles.yml -e "rds_node_id=d61a75b397ff4af1837fafb75a860eafin01 localaction=reboot"

Note: rds_node_id to shown from Show command

Delete an instance:

./grole otc_rds; ansible-playbook roles.yml -e "rds_name=ansible-mysql01 localaction=delete"

List backups:

./grole otc_rds; ansible-playbook roles.yml -e "localaction=backups"

Create a backup:

./grole otc_rds; ansible-playbook roles.yml -e "rds_name=ansible-mysql01 rds_backup_name=my_backup_mysql01_1 localaction=create_backup"

Delete a backup:

./grole otc_rds; ansible-playbook roles.yml -e "rds_backup_id=04eabf2523c8445e80faa0452c991e87br01 localaction=delete_backup"

Note: grab the rds_backup_id from List backups

Restore current DB (with file backup):

./grole otc_rds; ansible-playbook roles.yml -e "rds_backup_id=04eabf2523c8445e80faa0452c991e87br01 rds_name=ansible-mysql01 localaction=restore_backup_current"

Restore current DB (Point in Time Recovery):

./grole otc_rds; ansible-playbook roles.yml -e "rds_restore_time='2018-05-13 19:30:01' rds_name=ansible-mysql01 localaction=restore_backup_current"

Note: microseconds are rounded

Restore to a new instance (with file backup):

./grole otc_rds; ansible-playbook roles.yml -e "rds_backup_id=04eabf2523c8445e80faa0452c991e87br01" rds_name=ansible-mysql02 rds_volume_size=120  rds_ram=4096 rds_type=MySQL rds_version=5.7.20 rds_ha_enabled=false rds_id=02eabf2523c8445e80faa0452c991e87br01 localaction=restore_backup_new"

Note: instance version is assigned to the backup set, so it's not possible to restore MySQL 5.7 version from MySQL 5.6 backup

Restore to a new instance (Point in Time Recovery):

./grole otc_rds; ansible-playbook roles.yml -e "rds_restore_time='2018-05-13 19:30:01' rds_name=ansible-mysql02 rds_volume_size=120  rds_ram=4096 rds_type=MySQL rds_version=5.7.20 rds_ha_enabled=false rds_id=02eabf2523c8445e80faa0452c991e87br01 localaction=restore_backup_new"

Note: grab the different IDs for example from list (backups)

Query error log:

./grole otc_rds; ansible-playbook roles.yml -e "rds_node_id=a0fbfc3ff14f4d7b8f4bec1aff2e7e8cno01 errorlog_startdate=2018-05-01+00:00 errorlog_enddate=2018-05-13+18:00 localaction=errorlog"

Note: You can only query error logs generated within a month. rds_node_id to shown from Show command

Query slow query log:

./grole otc_rds; ansible-playbook roles.yml -e "rds_name=ansible-mysql01 localaction=slowlog"

./grole otc_rds; ansible-playbook roles.yml -e "rds_name=ansible-mysql01 slowlog_type=SELECT localaction=slowlog"

Note: if slowlog_type is not set, all types will be queried

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published