[ansible] Fixup localhost
by Nicolas Chauvet
commit 74ce0846327aae61696ceea6cff332ff3482704d
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Thu Sep 1 13:47:14 2016 +0200
Fixup localhost
roles/bugzilla/meta/main.yml | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
---
diff --git a/roles/bugzilla/meta/main.yml b/roles/bugzilla/meta/main.yml
index a369068..52d8846 100644
--- a/roles/bugzilla/meta/main.yml
+++ b/roles/bugzilla/meta/main.yml
@@ -27,6 +27,6 @@ dependencies:
# List your role dependencies here, one per line.
# Be sure to remove the '[]' above if you add dependencies
# to this list.
- - { role: mariadb_server, tags: ['mariadb'], when: { bugzilla_db_driver == 'MySQL' and bugzilla_db_host == '' }}
- - { role: postgresql_server, tags: ['postgresql'], when: { bugzilla_db_driver == 'Pg' and bugzilla_db_host == '' }}
+ - { role: mariadb_server, tags: ['mariadb'], when: { bugzilla_db_driver == 'MySQL' and bugzilla_db_host == 'localhost' }}
+ - { role: postgresql_server, tags: ['postgresql'], when: { bugzilla_db_driver == 'Pg' and bugzilla_db_host == 'localhost' }}
8 years, 3 months
[ansible] fixup bugzilla meta
by Nicolas Chauvet
commit 3d85e4e2c6201ba011fba3cdc3e8a43d41a8d89e
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Thu Sep 1 13:45:53 2016 +0200
fixup bugzilla meta
roles/bugzilla/meta/main.yml | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
---
diff --git a/roles/bugzilla/meta/main.yml b/roles/bugzilla/meta/main.yml
index b6dc789..a369068 100644
--- a/roles/bugzilla/meta/main.yml
+++ b/roles/bugzilla/meta/main.yml
@@ -23,7 +23,7 @@ galaxy_info:
# NOTE: A tag is limited to a single word comprised of
# alphanumeric characters. Maximum 20 tags per role.
-dependencies: []
+dependencies:
# List your role dependencies here, one per line.
# Be sure to remove the '[]' above if you add dependencies
# to this list.
8 years, 3 months
[ansible] Add bugzilla meta
by Nicolas Chauvet
commit 5d7cc526f12b1d3456ed3919f529c0b4a1ed9533
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Thu Sep 1 13:43:26 2016 +0200
Add bugzilla meta
roles/bugzilla/meta/main.yml | 32 ++++++++++++++++++++++++++++++++
1 files changed, 32 insertions(+), 0 deletions(-)
---
diff --git a/roles/bugzilla/meta/main.yml b/roles/bugzilla/meta/main.yml
new file mode 100644
index 0000000..b6dc789
--- /dev/null
+++ b/roles/bugzilla/meta/main.yml
@@ -0,0 +1,32 @@
+galaxy_info:
+ author: Nicolas Chauvet <kwizart(a)gmail.com>
+ description: ansible role for bugzilla
+ company:
+ issue_tracker_url:
+ license: AGPLv3+
+ min_ansible_version: 1.2
+ platforms:
+ - name: EL
+ versions:
+ - 6
+ - 7
+ - name: Fedora
+ versions:
+ - all
+
+ galaxy_tags: []
+ # List tags for your role here, one per line. A tag is
+ # a keyword that describes and categorizes the role.
+ # Users find roles by searching for tags. Be sure to
+ # remove the '[]' above if you add tags to this list.
+ #
+ # NOTE: A tag is limited to a single word comprised of
+ # alphanumeric characters. Maximum 20 tags per role.
+
+dependencies: []
+ # List your role dependencies here, one per line.
+ # Be sure to remove the '[]' above if you add dependencies
+ # to this list.
+ - { role: mariadb_server, tags: ['mariadb'], when: { bugzilla_db_driver == 'MySQL' and bugzilla_db_host == '' }}
+ - { role: postgresql_server, tags: ['postgresql'], when: { bugzilla_db_driver == 'Pg' and bugzilla_db_host == '' }}
+
8 years, 3 months
[ansible] Add mariadb_server role
by Nicolas Chauvet
commit e180c4c0ca366baeba835b07954bdc1b173159cf
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Thu Sep 1 13:04:40 2016 +0200
Add mariadb_server role
roles/mariadb_server/files/backup-database | 13 ++
roles/mariadb_server/files/my.cnf.default | 152 ++++++++++++++++++++
roles/mariadb_server/handlers/main.yml | 3 +
roles/mariadb_server/tasks/main.yml | 57 ++++++++
.../mariadb_server/templates/cron-backup-database | 1 +
roles/mariadb_server/templates/dotmy.cnf.j2 | 3 +
6 files changed, 229 insertions(+), 0 deletions(-)
---
diff --git a/roles/mariadb_server/files/backup-database b/roles/mariadb_server/files/backup-database
new file mode 100644
index 0000000..8dea2b2
--- /dev/null
+++ b/roles/mariadb_server/files/backup-database
@@ -0,0 +1,13 @@
+#!/bin/bash
+# Backup a database *locally* to /backups/.
+
+DB=$1
+
+# Make our latest backup
+/bin/mysqldump --user=root --add-drop-database $DB | /usr/bin/xz > /backups/$DB-$(date +%F).dump.xz
+
+# link to the latest backup
+ln -sf /backups/$DB-$(date +%F).dump.xz /backups/$DB-latest.xz
+
+# Also, delete the backup from a few days ago.
+rm -f /backups/$DB-$(date --date="3 days ago" +%F).dump.xz
diff --git a/roles/mariadb_server/files/my.cnf.default b/roles/mariadb_server/files/my.cnf.default
new file mode 100644
index 0000000..4633d7a
--- /dev/null
+++ b/roles/mariadb_server/files/my.cnf.default
@@ -0,0 +1,152 @@
+# Example MariaDB config file for medium systems.
+#
+# This is for a system with little memory (32M - 64M) where MariaDB plays
+# an important part, or systems up to 128M where MariaDB is used together with
+# other programs (such as a web server)
+#
+# MariaDB programs look for option files in a set of
+# locations which depend on the deployment platform.
+# You can copy this option file to one of those
+# locations. For information about these locations, do:
+# 'my_print_defaults --help' and see what is printed under
+# Default options are read from the following files in the given order:
+# More information at: http://dev.mysql.com/doc/mysql/en/option-files.html
+#
+# In this file, you can use all long options that a program supports.
+# If you want to know which options a program supports, run the program
+# with the "--help" option.
+
+# The following options will be passed to all MariaDB clients
+[client]
+#password = your_password
+port = 3306
+socket = /var/lib/mysql/mysql.sock
+
+# Here follows entries for some specific programs
+
+# The MariaDB server
+[mysqld]
+port = 3306
+socket = /var/lib/mysql/mysql.sock
+skip-external-locking
+key_buffer_size = 16M
+max_allowed_packet = 1M
+table_open_cache = 64
+sort_buffer_size = 512K
+net_buffer_length = 8K
+read_buffer_size = 256K
+read_rnd_buffer_size = 512K
+myisam_sort_buffer_size = 8M
+
+# setting STRICT_ALL_TABLES for phabricator
+sql_mode=STRICT_ALL_TABLES
+
+# Point the following paths to different dedicated disks
+#tmpdir = /tmp/
+
+# Don't listen on a TCP/IP port at all. This can be a security enhancement,
+# if all processes that need to connect to mysqld run on the same host.
+# All interaction with mysqld must be made via Unix sockets or named pipes.
+# Note that using this option without enabling named pipes on Windows
+# (via the "enable-named-pipe" option) will render mysqld useless!
+#
+#skip-networking
+
+# Replication Master Server (default)
+# binary logging is required for replication
+log-bin=mysql-bin
+
+# binary logging format - mixed recommended
+binlog_format=mixed
+
+# required unique id between 1 and 2^32 - 1
+# defaults to 1 if master-host is not set
+# but will not function as a master if omitted
+server-id = 1
+
+# Replication Slave (comment out master section to use this)
+#
+# To configure this host as a replication slave, you can choose between
+# two methods :
+#
+# 1) Use the CHANGE MASTER TO command (fully described in our manual) -
+# the syntax is:
+#
+# CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>,
+# MASTER_USER=<user>, MASTER_PASSWORD=<password> ;
+#
+# where you replace <host>, <user>, <password> by quoted strings and
+# <port> by the master's port number (3306 by default).
+#
+# Example:
+#
+# CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306,
+# MASTER_USER='joe', MASTER_PASSWORD='secret';
+#
+# OR
+#
+# 2) Set the variables below. However, in case you choose this method, then
+# start replication for the first time (even unsuccessfully, for example
+# if you mistyped the password in master-password and the slave fails to
+# connect), the slave will create a master.info file, and any later
+# change in this file to the variables' values below will be ignored and
+# overridden by the content of the master.info file, unless you shutdown
+# the slave server, delete master.info and restart the slaver server.
+# For that reason, you may want to leave the lines below untouched
+# (commented) and instead use CHANGE MASTER TO (see above)
+#
+# required unique id between 2 and 2^32 - 1
+# (and different from the master)
+# defaults to 2 if master-host is set
+# but will not function as a slave if omitted
+#server-id = 2
+#
+# The replication master for this slave - required
+#master-host = <hostname>
+#
+# The username the slave will use for authentication when connecting
+# to the master - required
+#master-user = <username>
+#
+# The password the slave will authenticate with when connecting to
+# the master - required
+#master-password = <password>
+#
+# The port the master is listening on.
+# optional - defaults to 3306
+#master-port = <port>
+#
+# binary logging - not required for slaves, but recommended
+#log-bin=mysql-bin
+
+# Uncomment the following if you are using InnoDB tables
+#innodb_data_home_dir = /var/lib/mysql
+#innodb_data_file_path = ibdata1:10M:autoextend
+#innodb_log_group_home_dir = /var/lib/mysql
+# You can set .._buffer_pool_size up to 50 - 80 %
+# of RAM but beware of setting memory usage too high
+#innodb_buffer_pool_size = 16M
+#innodb_additional_mem_pool_size = 2M
+# Set .._log_file_size to 25 % of buffer pool size
+#innodb_log_file_size = 5M
+#innodb_log_buffer_size = 8M
+#innodb_flush_log_at_trx_commit = 1
+#innodb_lock_wait_timeout = 50
+
+[mysqldump]
+quick
+max_allowed_packet = 16M
+
+[mysql]
+no-auto-rehash
+# Remove the next comment character if you are not familiar with SQL
+#safe-updates
+
+[myisamchk]
+key_buffer_size = 20M
+sort_buffer_size = 20M
+read_buffer = 2M
+write_buffer = 2M
+
+[mysqlhotcopy]
+interactive-timeout
diff --git a/roles/mariadb_server/handlers/main.yml b/roles/mariadb_server/handlers/main.yml
new file mode 100644
index 0000000..6f737d9
--- /dev/null
+++ b/roles/mariadb_server/handlers/main.yml
@@ -0,0 +1,3 @@
+---
+- name: restart mariadb
+ service: name=mariadb state=restarted
diff --git a/roles/mariadb_server/tasks/main.yml b/roles/mariadb_server/tasks/main.yml
new file mode 100644
index 0000000..6eb3bb7
--- /dev/null
+++ b/roles/mariadb_server/tasks/main.yml
@@ -0,0 +1,57 @@
+- name: ensure packages required for mariadb are installed
+ yum: name={{ item }} state=present enablerepo={{ extra_enablerepos }}
+ with_items:
+ - mariadb-server
+ - MySQL-python
+ when: ansible_distribution_major_version|int < 22
+
+- name: ensure packages required for mariadb are installed
+ dnf: name={{ item }} state=present enablerepo={{ extra_enablerepos }}
+ with_items:
+ - mariadb-server
+ - MySQL-python
+ when: ansible_distribution_major_version|int > 21 and ansible_cmdline.ostree is not defined
+
+- name: copy my.cnf
+ copy: src={{ item }} dest=/etc/my.cnf owner=root group=root mode=0644
+ with_first_found:
+ - "{{ mariadb_config }}"
+ - my.cnf.{{ inventory_hostname }}
+ - my.cnf.{{ host_group }}
+ - my.cnf.{{ dist_tag }}
+ - my.cnf.{{ ansible_distribution }}
+ - my.cnf.{{ ansible_distribution_version }}
+ - my.cnf.default
+ notify:
+ - restart mariadb
+
+- name: enable and start mariadb database
+ service: name=mariadb enabled=yes state=started
+
+- name: set mariaddb root user password
+ no_log: True
+ mysql_user: name=root password={{ mariadb_root_password }} check_implicit_admin=true
+
+- name: create .my.cnf file for future logins
+ template: src=dotmy.cnf.j2 dest=/root/.my.cnf owner=root group=root mode=0700
+
+- name: Ensure mariadb has a place to backup to
+ file: dest=/backups state=directory owner=mysql
+ tags:
+ - mariadb-server
+
+- name: Copy over backup scriplet
+ copy: src=backup-database dest=/usr/local/bin/backup-database mode=0755
+ tags:
+ - mariadb-server
+
+- name: Set up some cronjobs to backup databases as configured
+ template: >
+ src=cron-backup-database
+ dest=/etc/cron.d/cron-backup-database-{{ item }}
+ with_items:
+ - "{{ dbs_to_backup }}"
+ when: dbs_to_backup != []
+ tags:
+ - cron
+ - mariadb-server
diff --git a/roles/mariadb_server/templates/cron-backup-database b/roles/mariadb_server/templates/cron-backup-database
new file mode 100644
index 0000000..200727e
--- /dev/null
+++ b/roles/mariadb_server/templates/cron-backup-database
@@ -0,0 +1 @@
+0 0 * * * root /usr/local/bin/backup-database {{ item }}
diff --git a/roles/mariadb_server/templates/dotmy.cnf.j2 b/roles/mariadb_server/templates/dotmy.cnf.j2
new file mode 100644
index 0000000..0a8e76c
--- /dev/null
+++ b/roles/mariadb_server/templates/dotmy.cnf.j2
@@ -0,0 +1,3 @@
+[client]
+user=root
+password={{ mariadb_root_password }}
8 years, 3 months
[ansible] Update bugzilla with db_driver
by Nicolas Chauvet
commit 1568b5138cf385514efb8e1bda7916ce139d4bde
Author: Nicolas Chauvet <kwizart(a)gmail.com>
Date: Thu Sep 1 12:48:00 2016 +0200
Update bugzilla with db_driver
host_vars/bugzilla02.online.rpmfusion.net | 4 ++--
roles/bugzilla/tasks/main.yml | 15 ++++++++++++++-
2 files changed, 16 insertions(+), 3 deletions(-)
---
diff --git a/host_vars/bugzilla02.online.rpmfusion.net b/host_vars/bugzilla02.online.rpmfusion.net
index d470e57..ed383b4 100644
--- a/host_vars/bugzilla02.online.rpmfusion.net
+++ b/host_vars/bugzilla02.online.rpmfusion.net
@@ -10,5 +10,5 @@ datacenter: online
nrpe_procs_warn: 900
nrpe_procs_crit: 1000
-bugzilla_db_host: db02
-bugzilla_db_driver: Pg
+bugzilla_db_host: ''
+bugzilla_db_driver: MySQL
diff --git a/roles/bugzilla/tasks/main.yml b/roles/bugzilla/tasks/main.yml
index 197b839..5607cdc 100644
--- a/roles/bugzilla/tasks/main.yml
+++ b/roles/bugzilla/tasks/main.yml
@@ -13,13 +13,26 @@
with_items:
- bugzilla
- bugzilla-contrib
- - perl-DBD-Pg
- perl-Test-Taint
- perl-XMLRPC-Lite
tags:
- packages
- bugzilla
+- name: install perl-DBD-MySQL if needed by bugzilla
+ yum: pkg=perl-DBD-MySQL state=present
+ when: bugzilla_db_driver == 'MySQL'
+ tags:
+ - packages
+ - bugzilla
+
+- name: install perl-DBD-Pg if needed by bugzilla
+ yum: pkg=perl-DBD-Pg state=present
+ when: bugzilla_db_driver == 'Pg'
+ tags:
+ - packages
+ - bugzilla
+
- name: bugzilla localconfig in place
template: src=localconfig dest=/etc/bugzilla/localconfig mode=0640 owner=root group=apache
tags:
8 years, 3 months