Ticket #202: Create and Apply Puppet Module for MariaDB on DB Server - SupaHotBall/OE2-Group-D GitHub Wiki

Task

Create Puppet Module

  • Develop a Puppet module to install and configure MariaDB on the database server.
  • Include necessary configurations (e.g., files, users, groups, service)

Apply Configuration

  • Apply the Puppet module to the database server.
  • Verify that MariaDB is installed, configured, and running correctly.

Validation

  • Test the MariaDB installation and configuration..
  • Ensure the module can be reused as a template for future modules.

Steps Taken

Create the Puppet module structure for the mariadb module (/etc/puppetlabs/code/modules/mariadb) on the management server.

image

mariadb/
mariadb/files/50-server.cnf
mariadb/manifests/init.pp
mariadb/manifests/install.pp
mariadb/manifests/config.pp
mariadb/manifests/service.pp
mariadb/templates/

Create the 50-server.cnf file in the files subdirectory

{A849F065-0176-47D8-8E8C-DD9CCE157CFA}

sudo nano 50-server.cnf
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
[mysqld]

#
# * Basic Settings
#
user		= mysql
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
port		= 3306
basedir		= /usr
datadir		= /var/lib/mysql
tmpdir		= /tmp
lc-messages-dir	= /usr/share/mysql
skip-external-locking

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address		= 127.0.0.1

#
# * Fine Tuning
#
key_buffer_size		= 16M
max_allowed_packet	= 16M
thread_stack		= 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10

#
# * Query Cache Configuration
#
query_cache_limit	= 1M
query_cache_size        = 16M

#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Enable the slow query log to see queries with especially long duration
#slow_query_log_file	= /var/log/mysql/mariadb-slow.log
#long_query_time = 10
#log_slow_rate_limit	= 1000
#log_slow_verbosity	= query_plan
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id		= 1
#log_bin			= /var/log/mysql/mysql-bin.log
expire_logs_days	= 10
max_binlog_size   = 100M
#binlog_do_db		= include_database_name
#binlog_ignore_db	= include_database_name

#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!

#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

#
# * Character sets
#
# MySQL/MariaDB default is Latin1, but in Debian we rather default to the full
# utf8 4-byte character set. See also client.cnf
#
character-set-server  = utf8mb4
collation-server      = utf8mb4_general_ci

#
# * Unix socket authentication plugin is built-in since 10.0.22-6
#
# Needed so the root database user can authenticate without a password but
# only when running as the unix root user.
#
# Also available for other users if required.
# See https://mariadb.com/kb/en/unix_socket-authentication-plugin/

# this is only for embedded server
[embedded]

# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]

# This group is only read by MariaDB-10.0 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.0]

Create the init.pp file in the manifests subdirectory

image

sudo nano init.pp

Edit the init.pp file with the code for managing mariadb

image

Create the install.pp file in the manifests subdirectory

image

sudo nano install.pp

Edit the install.pp file with the code for handles the installation of mariadb

image

Create the config.pp file in the manifests subdirectory

image

sudo nano config.pp

Edit the config.pp file with the code for manages the configuration of mariadb

image

Create the sservice.pp file in the manifests subdirectory

image

sudo nano service.pp

Edit the service.pp file with the code for ensures that the MariaDB service is running and enabled to start on boot

image

Applying the module in the node definition for my database server

image

Run puppet agent on db server to apply the configuration

image

sudo puppet agent --server=mgmt-d --no-daemonize --verbose --onetime

Verification that the MariaDB is installed, configured and running correctly

image

sudo systemctl status mysql

Log in to MariaDB with the default root user and review the logs (/var/log/mysql/) to ensure there are no errors during the installation or configuration process

image

sudo mysql -u root -p

Challenges

N/A


External Resources

N/A


Ticket Reference

https://rt.dataraster.com/Ticket/Display.html?id=202