使用ansible-playbook管理VPS时,我有权使用yum update
模块运行yum
。问题是,VPS最初是CentOS 6.2,它将升级到CentOS 6.5(这就是我想要的),然后我想在此之后重新启动,因为有一些重大变化,我希望这只发生在一些之后因为我不希望每次有一些不重要的软件包更新时都重新启动。
在ansible中,是否可以检测到这么大的变化,例如/ etc / redhat-release将被yum update
更改,然后在发现重大更改时重新启动。
感谢。
答案 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=*