是否可以从crontab执行ansible playbook?我们有一个需要在某一天的某个时间运行的剧本,但我知道cron不喜欢ssh .
Tower有一个内置的调度引擎,但我们对使用Tower不感兴趣 . 其他人如何安排ansible playbooks?
您可以使用cron作业来运行您的剧本 .Ansible用 -tt 开关调用ssh来强制TTY,所以它应该工作得很好 .请检查以下内容:
-tt
作业用户可以访问ssh私钥
工作环境是正确的(PYTHONPATH等...)
主机上没有包装混合物(例如,通过pip和apt同时安装的ansible)
另请在ansible中检查this关于 quiet 选项缺席的方便评论:
quiet
crontab有一个技巧:运行ansible-playbook如下:
*/15 * * * * if ! out=`ansible-playbook yourplaybook.yaml`; then echo $out; fi
这样您就可以获得完整的输出,但只有当ansible退出时才会返回非零状态 .
您可以使用croncape实现his answer中提到的相同行为Konstantin Suvorov .
*/15 * * * * croncape ansible-playbook yourplaybook.yaml
它也可以工作,我用它来检查代理状态并在停止时启动它 .
*/5 * * * * ansible-playbook -i /root/playbooks/agent /root/playbooks/agent.yml
我们可以像konstantin-suvorov那样运行
类型
# whereis ansible-playbook /usr/bin/ansible-playbook
并使用输出中显示的路径运行
we can run with this in crontab
#crontab -e */15 * * * * /usr/bin/ansible-playbook /home/user1/yourplaybook.yml
它像魅力一样工作
4 回答
您可以使用cron作业来运行您的剧本 .
Ansible用
-tt
开关调用ssh来强制TTY,所以它应该工作得很好 .请检查以下内容:
作业用户可以访问ssh私钥
工作环境是正确的(PYTHONPATH等...)
主机上没有包装混合物(例如,通过pip和apt同时安装的ansible)
另请在ansible中检查this关于
quiet
选项缺席的方便评论:您可以使用croncape实现his answer中提到的相同行为Konstantin Suvorov .
它也可以工作,我用它来检查代理状态并在停止时启动它 .
我们可以像konstantin-suvorov那样运行
类型
并使用输出中显示的路径运行
we can run with this in crontab
它像魅力一样工作