Ansum在“yum update”之后检测某些文件中的更改并重新启动

时间:2014-03-23 21:37:37

标签: ansible ansible-playbook

使用ansible-playbook管理VPS时,我有权使用yum update模块运行yum。问题是,VPS最初是CentOS 6.2,它将升级到CentOS 6.5(这就是我想要的),然后我想在此之后重新启动,因为有一些重大变化,我希望这只发生在一些之后因为我不希望每次有一些不重要的软​​件包更新时都重新启动。

在ansible中,是否可以检测到这么大的变化,例如/ etc / redhat-release将被yum update更改,然后在发现重大更改时重新启动。

感谢。

1 个答案:

答案 0 :(得分:0)

是的,你可以尝试这样的事情:

---
- name: Reboot Server Playbook
  hosts: all
  user: ambot
  sudo: True


  tasks:

    - name: Do an upgrade
      command: yum upgrade -y

    - name: Check what the new version is
      shell:  lsb_release -r | awk '{print $2}'
      register: new_release

    - name: Reboot
      command: /sbin/reboot
      when: ansible_distribution_version != new_release.stdout

如果CentOS版本发生变化,上面的内容将重启服务器。它还使用了第一次运行playbook时最初填充的ansible fact变量中的ansible_distribution_version。 在yum upgrade命令中添加-y,因此进程不会等待来自ansible的stdin中的确认。 要查看本地主机上的安全事实,您可以执行以下操作:

ansible localhost -m setup

[在剧本中重建事实的可能解决方案]

 # You can try this to store the initial version
 vars:
    current_os_version: $ansible_distribution_version


 tasks:

    - name: Regenerate facts ?
      setup: filter=*