我大约有10本剧本,它们负责模块化工作,但是所有这些剧本都需要重新启动机器才能生效。
有没有一种简单的方式说“运行这10本剧本,但跳过所有剧本的重启阶段,只在最后重启”?
tasks:
- name: task1
...
- name: task2
...
- name: task3
...
- name: Reboot machine
become: yes
reboot:
- import_playbook: pb1.yml
- import_playbook: pb2.yml
- import_playbook: pb3.yml
...
计算机仅需重启一次即可重启10次,这会使工作花费的时间远远超过了原本的时间-对于某些速度较慢的计算机,则需要一个小时而不是10分钟
一个简单的修复方法是从所有单一的剧本中删除重新启动,除了这引入了一个新问题,即每个单一的剧本现在都无法正常工作,因为每个单独的剧本都需要重新启动才能正常工作。
我可以将所有内容复制粘贴到更多剧本中并手动删除重新启动,但是我不喜欢离开单一来源,尤其是因为随着代码更改和新系统行为需要解决这些剧本不断被调整和更新
答案 0 :(得分:0)
在每个剧本中,将相同的唯一标签my_reboot
添加到重新启动任务,然后使用--skip-tags my_reboot
全部运行。在您的顶级剧本或post_tasks中创建一个处理程序。