带有额外检查的 Ansible 剧本

带有额外检查的 Ansible 剧本

我正在尝试自动化我们的修补并偶然发现了 Ansible。

我已经运行了win_update 模块这可以用于我们 80% 的服务器,但其他服务器则需要重启程序。

我们的一些服务器组需要按顺序更新/重启,包括一些服务。使用 Ansible 可以做到这一点吗?

场景可能是:

  • 服务器 A - B - C 需要关闭
  • 服务器D更新,重启,启动手动服务A-B-C
  • 服务器C更新,重启,启动手动服务A-B
  • ...

答案1

是的,您可以将滚动更新和附加任务写入 Ansible 剧本中。

特定于群组的行为可以来自 group_vars,或者仅在某些群组上运行的附加剧情。


---
# playbook
- name: Pre OS update
  hosts: A,B,C
  
  roles:
  # bring services down or other prep steps
  - update_pre
    
- name: Update and reboot
  hosts: A,B,C,D 
  order: inventory
  # Rolling updates: do play to completion one host at a time
  serial: 1 

  roles:
  - update_servers

# Roles enable reuse: different hosts but same tasks
# Move groups to their own play for a desired order
# or for a different sequence of tasks
- name: Update and reboot special group E
  hosts: E
  
  roles:
  - update_pre
  - update_servers
  - update_post
...


---
# roles/update_servers/tasks/main.yml

- win_updates:
    category_names: '*' 
    # win_reboot task probably not required
    reboot: yes
    
# If not a Windows service, add other tasks here
# or in follow-up roles 
- name: Post update service bounce
  win_service:
    name: "{{ item }}"
    state: restarted
  loop: "{{ update_restart_services | default([]) }}"
...
 
---
 # group_vars/C.yml
 update_restart_services:
 - alpha
 - beta
...
---
 # group_vars/D.yml
 update_restart_services:
 - alpha
 - beta
 - gamma
...

相关内容