]> arthur.barton.de Git - AnsibleRoles.git/blob - roles/mysql-server/tasks/main.yml
Initial import
[AnsibleRoles.git] / roles / mysql-server / tasks / main.yml
1 ---
2 # mysql-server tasks
3
4 - name: check if MySQL data already exists
5   tags:
6     - mysql
7     - fs
8   shell: test -d /var/lib/mysql/mysql
9   ignore_errors: yes
10   register: mysql_server_installed
11   changed_when: false
12
13 - name: setup LVM volume "mysql" for MySQL
14   tags:
15     - mysql
16     - partition
17     - lvm
18     - fs
19   lvol: >
20     lv=mysql
21     size=10g
22     vg={{ mysql_server_vg }}
23   when: mysql_server_vg != "" and mysql_server_installed.rc != 0
24
25 - name: create ext4 filesystem on MySQL partition "mysql"
26   tags:
27     - mysql
28     - fs
29   filesystem: >
30     dev=/dev/{{ mysql_server_vg }}/mysql
31     fstype=ext4
32     opts="-L mysql"
33   when: mysql_server_vg != "" and mysql_server_installed.rc != 0
34
35 - name: create mount point "/var/lib/mysql"
36   tags:
37     - mysql
38     - fs
39   file: >
40     path=/var/lib/mysql
41     state=directory
42   when: mysql_server_vg != "" and mysql_server_installed.rc != 0
43
44 - name: configure and mount MySQL partition "mysql"
45   tags:
46     - mysql
47     - fs
48     - mount
49   mount: >
50     fstype=ext4
51     name=/var/lib/mysql
52     src=/dev/{{ mysql_server_vg }}/mysql
53     state=mounted
54     opts=rw,errors=remount-ro,noatime
55     passno=2
56   when: mysql_server_vg != "" and mysql_server_installed.rc != 0
57
58 - name: install MySQL packages for client and server
59   tags:
60     - mysql
61     - packages
62   apt: >
63     state=installed
64     name={{ item }}
65   with_items:
66     - mysql-client
67     - mysql-server
68     - mysqltuner
69     - python-mysqldb
70
71 - name: ensure service "mysql" is enabled and running
72   tags:
73     - services
74     - mysql
75   service: >
76     enabled=yes
77     name=mysql
78     state=running
79
80 - name: setup MySQL "ansible" account
81   tags:
82     - mysql
83     - mysql-users
84   mysql_user: >
85     login_user={{ mysql_server_ansible_user }}
86     login_password={{ mysql_server_ansible_password }}
87     check_implicit_admin=yes
88     host="localhost"
89     name=ansible
90     password={{ mysql_server_ansible_password }}
91     priv="*.*:ALL,GRANT"
92     state=present
93
94 - name: setup MySQL "root" account
95   tags:
96     - mysql
97     - mysql-users
98   mysql_user: >
99     login_user={{ mysql_server_ansible_user }}
100     login_password={{ mysql_server_ansible_password }}
101     host="{{ mysql_server_root_host }}"
102     name=root
103     password={{ mysql_server_root_password }}
104     priv="*.*:ALL,GRANT"
105     state=present
106
107 - name: Remove unwanted MySQL "root" accounts
108   tags:
109     - mysql
110     - mysql-users
111   mysql_user: >
112     login_user={{ mysql_server_ansible_user }}
113     login_password={{ mysql_server_ansible_password }}
114     host={{ item }}
115     name=root
116     state=absent
117   with_items:
118     - "{{ ansible_hostname }}"
119     - "localhost"
120     - "127.0.0.1"
121     - "::1"