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