首页 文章

如何从crontab执行ansible playbook?

提问于
浏览
5

是否可以从crontab执行ansible playbook?我们有一个需要在某一天的某个时间运行的剧本,但我知道cron不喜欢ssh .

Tower有一个内置的调度引擎,但我们对使用Tower不感兴趣 . 其他人如何安排ansible playbooks?

4 回答

  • 9

    您可以使用cron作业来运行您的剧本 .
    Ansible用 -tt 开关调用ssh来强制TTY,所以它应该工作得很好 .
    请检查以下内容:

    • 作业用户可以访问ssh私钥

    • 工作环境是正确的(PYTHONPATH等...)

    • 主机上没有包装混合物(例如,通过pip和apt同时安装的ansible)

    另请在ansible中检查this关于 quiet 选项缺席的方便评论:

    crontab有一个技巧:运行ansible-playbook如下:

    */15 * * * *    if ! out=`ansible-playbook yourplaybook.yaml`; then echo $out; fi
    

    这样您就可以获得完整的输出,但只有当ansible退出时才会返回非零状态 .

  • 0

    您可以使用croncape实现his answer中提到的相同行为Konstantin Suvorov .

    */15 * * * *    croncape ansible-playbook yourplaybook.yaml
    
  • 0

    它也可以工作,我用它来检查代理状态并在停止时启动它 .

    */5 * * * * ansible-playbook -i /root/playbooks/agent /root/playbooks/agent.yml
    
  • 0

    我们可以像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
    

    它像魅力一样工作

相关问题