2020-05-21 07:05:22 +00:00
# Stanzas as of 2020-05-21:
2020-02-04 20:03:59 +00:00
#
2020-05-17 01:12:20 +00:00
# - 1 base install
2020-02-04 20:03:59 +00:00
# - 6 double timeout for slow CPUs
# - 7 DB config
# - 2 record as installed
2020-07-11 16:47:04 +00:00
- name: 'Install MySQL packages : mariadb-server, mariadb-client (debuntu)'
2020-02-04 20:03:59 +00:00
package :
name :
- mariadb-server
- mariadb-client
state : present
when : is_debuntu | bool
2020-07-11 16:50:20 +00:00
# 2020-07-11:
# 10 PHP package installs moved to roles/www_base/tasks/main.yml
# php{{ php_version }}-sqlite3 install moved to roles/osm-vector-maps/tasks/install.yml
2020-07-11 16:47:04 +00:00
2020-05-17 01:12:20 +00:00
# - name: "Install packages: mysql, MySQL-python and 9 php packages (OS's other than debuntu)"
2020-02-04 20:03:59 +00:00
# package:
2020-05-17 01:12:20 +00:00
# name:
# - MySQL-python
# - mysql
# - php
# - php-mysql
# - php-pear
# - php-gd
# - php-imap
# - php-ldap
# - php-odbc
# - php-xml
# - php-xmlrpc
2020-02-04 20:03:59 +00:00
# state: present
2020-05-17 01:12:20 +00:00
# when: not is_debuntu
#
# - include_tasks: centos.yml
# when: ansible_distribution == "CentOS"
#
# - include_tasks: fedora.yml
# when: ansible_distribution == "Fedora"
2020-02-04 20:03:59 +00:00
# 2019-07-03 @jvonau @holta: the next 50 lines (6 stanzas) double MariaDB's
# default boot timeout (90s to 180s) for slow CPUs like this Ubuntu 18.04.2 VM:
# https://github.com/iiab/iiab/issues/1802
# https://mariadb.com/kb/en/library/what-to-do-if-mariadb-doesnt-start/#systemd
- name : Check if /lib/systemd/system/mariadb.service exists
stat :
path : /lib/systemd/system/mariadb.service
register : mariadb_unit_file
- name : Copy pkg's /lib/systemd/system/mariadb.service to /etc/systemd/system/ to be customized (CREATES TIMESTAMPED BACKUPS OF /etc/systemd/system/mariadb.service e.g. IF OPERATOR CUSTOMIZED IT, EVEN DESPITE WARNING BELOW!)
copy :
force : yes
backup : yes
src : /lib/systemd/system/mariadb.service
dest : /etc/systemd/system/
when : mariadb_unit_file.stat.exists
- name : Symlink /etc/systemd/system/mysql.service -> /etc/systemd/system/mariadb.service
file :
state : link
force : yes
src : /etc/systemd/system/mariadb.service
path : /etc/systemd/system/mysql.service
when : mariadb_unit_file.stat.exists
- name : Symlink /etc/systemd/system/mysqld.service -> /etc/systemd/system/mariadb.service
file :
state : link
force : yes
src : /etc/systemd/system/mariadb.service
path : /etc/systemd/system/mysqld.service
when : mariadb_unit_file.stat.exists
- name : "WARN OPERATOR: Changes made to /etc/systemd/system/mariadb.service WILL BE LOST whenever 'mysql' playbook is run"
lineinfile :
path : /etc/systemd/system/mariadb.service
insertbefore : BOF # Beginning of file
line : "# WARNING: CHANGES TO THIS FILE WILL BE REGULARLY *OVERWRITTEN* BY:\n# /opt/iiab/iiab/roles/mysql/tasks/main.yml\n"
when : mariadb_unit_file.stat.exists
- name : Set systemd boot timeout to 180 seconds for slow machines, in /etc/systemd/system/mariadb.service
lineinfile :
path : /etc/systemd/system/mariadb.service
insertafter : '^\[Service\]$'
regexp : "^TimeoutStartSec="
line : "\n# 2019-07-03: @jvonau @holta doubled MariaDB's default boot timeout, from\n# 90 seconds to 180 seconds, for slow machines like this Ubuntu 18.04.2 VM:\n# https://github.com/iiab/iiab/issues/1802\n# https://mariadb.com/kb/en/library/what-to-do-if-mariadb-doesnt-start/#systemd\nTimeoutStartSec=180\n"
# If the line above were to be run repeatedly (never happens here!) Ansible
# would pollute MariaDB's systemd unit file. As multi-line regexp's are
# not allowed (both regexp's should match, for idempotency). If nec, use
# the 1-liner below, or Ansible's 'blockinfile' which pollutes config files
# in its own way...surrounding blocks with marker lines.
# line: "TimeoutStartSec=180"
when : mariadb_unit_file.stat.exists
# 7 STANZAS BELOW...could later be put into setup.yml or config.yml or or provision.yml ?
# Name of MySQL service varies by OS, so hardcoded in /opt/iiab/iiab/vars/<OS>.yml (formerly in roles/0-init/tasks/main.yml)
- name : Start MySQL systemd service ({{ mysql_service }}) to permit configuration
systemd :
name : "{{ mysql_service }}"
daemon_reload : yes
state : restarted
- name : Install /root/.my.cnf file from template, with root password credentials
template :
src : my.cnf.j2
dest : /root/.my.cnf
owner : root
mode : '0600'
# 'localhost' needs to be the last item for idempotency, see
# http://ansible.cc/docs/modules.html#mysql-user
# unfortunately it still doesn't work
- name : Update MySQL root password for localhost root accounts
mysql_user :
name : root
host : localhost
password : "{{ mysql_root_password }}"
priv : "*.*:ALL,GRANT"
- name : Update MySQL root password for all remaining root accounts (127.0.0.1, ::1)
mysql_user :
name : root
host : "{{ item }}"
password : "{{ mysql_root_password }}"
priv : "*.*:ALL,GRANT"
with_items :
#- "{{ iiab_hostname }}.{{ iiab_domain }}"
- 127.0 .0 .1
- : : 1
- name : Delete anonymous MySQL server user for {{ ansible_hostname }}
mysql_user :
user : ""
host : "{{ ansible_hostname }}"
state : absent
- name : Delete anonymous MySQL server user for localhost
mysql_user :
user : ""
state : absent
- name : Remove the MySQL 'test' database
mysql_db :
db : test
state : absent
# RECORD MySQL AS INSTALLED
- name : "Set 'mysql_installed: True'"
set_fact :
mysql_installed : True
- name : "Add 'mysql_installed: True' to {{ iiab_state_file }}"
lineinfile :
path : "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml
regexp : '^mysql_installed'
line: 'mysql_installed : True '