In an ansible playbook I want to stop MariaDB if an upgrade is needed (restart from the RPM package does not always work in my situation). I'm quite new to ansible.
I came up with this:
- name: "Check if MariaDB needs to be upgraded"
shell: "yum check-update MariaDB-server|grep MariaDB|wc -l"
register: needs_update
- name: "Stop mysql service"
service:
name: mysql
state: stopped
when: needs_update.stdout == "1"
Is there a better way to do this then by executing a shell command? When running it I get warnings:
TASK [mariadb_galera : Check if MariaDB needs to be upgraded] ******************
changed: [139.162.220.42] => {"changed": true, "cmd": "yum check-update MariaDB-server|grep MariaDB|wc -l", "delta": "0:00:00.540862", "end": "2017-03-01 13:03:34.415272", "rc": 0, "start": "2017-03-01 13:03:33.874410", "stderr": "", "stdout": "0", "stdout_lines": ["0"], "warnings": ["Consider using yum module rather than running yum"]}
[WARNING]: Consider using yum module rather than running yum
Thank you!
The best way to handle this is use a "handler" eg something along the lines of
You can specify multiple handlers if you need to do multiple things, but if you just want to restart the db, use restarted instead of stopped
http://docs.ansible.com/ansible/playbooks_best_practices.html
You can hide warning with:
Or you can trick Ansible to execute
yum
task incheck_mode
:Please, test this code before use.