仅在需要升级时停止服务的 Ansible 方法 [英] Ansible way to stop a service only if it needs to be upgraded

查看:33
本文介绍了仅在需要升级时停止服务的 Ansible 方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在 ansible playbook 中,如果需要升级,我想停止 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

请在使用前测试此代码.

这篇关于仅在需要升级时停止服务的 Ansible 方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆