是否可以从crontab执行ansible playbook?我们有一个需要在某一天的某个时间运行的剧本,但我知道cron不喜欢ssh。
Tower有一个内置的调度引擎,但我们对使用Tower不感兴趣。其他人如何安排ansible playbooks?
答案 0 :(得分:9)
您可以使用cron作业来运行您的剧本
Ansible调用带有-tt
开关的ssh来强制TTY,所以它应该工作得很好
请检查以下内容:
另请在ansible中查看有关quiet
选项缺席的this方便评论:
crontab有一个技巧:运行ansible-playbook如下:
*/15 * * * * if ! out=`ansible-playbook yourplaybook.yaml`; then echo $out; fi
这样您就可以得到完整的输出,但只有当ansible退出时才会出现非零状态。
答案 1 :(得分:0)
您可以使用Konstantin Suvorov来实现his answer中提到的相同行为croncape。
*/15 * * * * croncape ansible-playbook yourplaybook.yaml
答案 2 :(得分:0)
它也将起作用,我正在使用它来检查代理状态并在停止时启动它。
*/5 * * * * ansible-playbook -i /root/playbooks/agent /root/playbooks/agent.yml
答案 3 :(得分:0)
我们既可以作为konstantin-suvorov的答案,也可以作为
类型
# whereis ansible-playbook
/usr/bin/ansible-playbook
并使用输出中显示的路径
我们可以在crontab中运行它
#crontab -e
*/15 * * * * /usr/bin/ansible-playbook /home/user1/yourplaybook.yml
它像魅力一样工作
答案 4 :(得分:0)
我们可以在bash中创建包装脚本,如下所示
ANSIBLE_PLAYBOOK=`which ansible_playbook`
cd main_dir_where_playbook_is_located
$ANSIBLE_PLAYBOOK playbook.yaml > log_file
将以上内容保存为run.sh并像普通cron一样安排它。