仅在需要升级时才停止服务的一种可行方法 [英] Ansible way to stop a service only if it needs to be upgraded
本文介绍了仅在需要升级时才停止服务的一种可行方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在一个有趣的剧本中,如果需要升级,我想停止MariaDB(在我的情况下,从RPM软件包重新启动并不总是有效).我对ansible很陌生.
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.
我想到了这个
- 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"
是否有更好的方法通过执行shell命令来做到这一点?运行它时,我会收到警告:
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
谢谢!
推荐答案
您可以使用以下方法隐藏警告:
You can hide warning with:
- name: "Check if MariaDB needs to be upgraded"
shell: "yum check-update MariaDB-server|grep MariaDB|wc -l"
args:
warn: false
register: needs_update
或者您可以欺骗Ansible在check_mode
中执行yum
任务:
Or you can trick Ansible to execute yum
task in check_mode
:
- name: "Check if MariaDB needs to be upgraded (CHECK MODE!)"
yum:
name: MariaDB-server
state: latest
check_mode: yes
register: needs_update_check
- name: "Stop mysql service"
service:
name: mysql
state: stopped
when: needs_update_check | changed
请在使用前测试此代码.
这篇关于仅在需要升级时才停止服务的一种可行方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文