215 | | - name: installing mysql and dependencies |
216 | | package: |
217 | | name: "{{item}}" |
218 | | state: present |
219 | | update_cache: yes |
220 | | loop: |
221 | | - mysql-server |
222 | | - mysql-client |
223 | | - python3-mysqldb |
224 | | - libmysqlclient-dev |
225 | | become: yes |
226 | | - name: start and enable mysql service |
227 | | service: |
228 | | name: mysql |
229 | | state: started |
230 | | enabled: yes |
231 | | - name: creating mysql user |
| 217 | - name: Update |
| 218 | shell: apt update |
| 219 | |
| 220 | - name: install python, pip etc |
| 221 | shell: apt-get -y install "{{ item }}" |
| 222 | with_items: |
| 223 | - pip |
| 224 | - python3-dev |
| 225 | - default-libmysqlclient-dev |
| 226 | - build-essential |
| 227 | |
| 228 | - name: Install MySQL server |
| 229 | shell: apt-get -y install mysql-server |
| 230 | |
| 231 | - name: Install MySQL client |
| 232 | shell: apt-get -y install mysql-client |
| 233 | |
| 234 | - name: pip install mysqlclient |
| 235 | shell: pip install mysqlclient |
| 236 | |
| 237 | - name: Start the MySQL service |
| 238 | action: service name=mysql state=started |
| 239 | |
| 240 | - name: copy .my.cnf file with root password credentials |
| 241 | template: src=/home/docker/my.cnf.j2 dest=/root/.my.cnf owner=root mode=0600 |
| 242 | |
| 243 | - name: update mysql root password for all root accounts |
233 | | name: "{{user}}" |
234 | | password: "{{password}}" |
235 | | priv: '*.*:ALL' |
236 | | host: '%' |
237 | | state: present |
238 | | - name: creating db |
239 | | mysql_db: |
240 | | name: "{{db}}" |
241 | | state: present |
242 | | handlers: |
243 | | - name: restart mysql |
244 | | service: |
245 | | name: mysql |
246 | | state: restarted |
247 | | }}} |
| 245 | name: root |
| 246 | host: localhost |
| 247 | password: "{{ root_password }}" |
| 248 | |
| 249 | - name: Create database |
| 250 | shell: mysql -u root -p{{ root_password }} -e 'CREATE DATABASE IF NOT EXISTS {{ db_name }};' |
| 251 | |
| 252 | - name: Create user |
| 253 | shell: mysql -u root -p{{ root_password }} -e "CREATE USER '{{ user_name }}'@'%' IDENTIFIED BY '{{ user_password }}';" |
| 254 | |
| 255 | - name: Grant permissions |
| 256 | shell: mysql -u root -p{{ root_password }} -e "GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON {{ db_name }}.* TO '{{ user_name }}'@'%';" |
| 257 | |
| 258 | - name: Reload privileges |
| 259 | shell: mysql -u root -p{{ root_password }} -e "FLUSH PRIVILEGES;" |
| 260 | |
| 261 | }}} |
| 262 | |
| 263 | Create template |
| 264 | |
| 265 | |
| 266 | {{{ |
| 267 | nano my.cnf.j2.yml |
| 268 | }}} |
| 269 | |
| 270 | |
| 271 | {{{ |
| 272 | [client] |
| 273 | user=root |
| 274 | password={{ root_password }} |
| 275 | }}} |
| 276 | |
| 277 | |