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