是的,你可以尝试这样的事情:
---
- 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 版本发生变化,以上将重新启动服务器。它还使用ansible_distribution_version
您的剧本第一次运行时最初填充的 ansible 事实变量。在 yum upgrade 命令中添加 -y,因此进程不会卡在等待来自 ansible 的 stdin 确认。要查看本地主机上的 ansible 事实,您可以运行以下命令:
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=*