所以我现在通过手动登录和使用
每周升级我的服务器一段时间sudo at 2:30
此命令提示我输入我想在2:30夜间执行的命令。命令是:
apt-get update
apt-get dist-upgrade -y -qq
reboot
如何将其移至Ansible剧本?我已经查看了他们的'at'模块,但它只允许我相对于当前时间(现在+时间)而不是在特定时间安排命令。 (source)
另一种选择是在playbook中创建一个原始任务,但是我如何处理at
命令是交互式的这一事实?
P.S。我想手动完成此过程而不将其委托给cronjob的原因是因为我想事先查看将要升级的软件包及其更改日志。这成了我星期五的惯例。
答案 0 :(得分:1)
有很多方法可以实现这一目标。
以下是其中几个:
制作一个包含要执行的命令的脚本
使用copy
模块上传。
使用command
模块执行at -f myscript 2:30
这会将您的命令添加到目标主机'队列。
使用apt
模块制作Ansible playbook而不是shell命令
在单个服务器上测试它
使用at 2:30
,在本地计算机(Ansible控制主机)上安排它
提供ansible-playbook -i allservers upgrade-servers.yml
作为工作
这将在2:30从您当地的机器上执行所有服务器上的剧本。
修改at模块以支持与exact_time
/ count
同等的unit
参数。
将其保存为您的剧本附近的./library/at.py
将其应用于在远程服务器上准确计划作业。