能否在crontab中执行ansible playbook呢?我们有一个需要每天在特定时间运行的playbook,但我知道cron不喜欢ssh。
Tower有一个内置的调度引擎,但我们不打算使用Tower。其他人是如何安排ansible playbook的?
能否在crontab中执行ansible playbook呢?我们有一个需要每天在特定时间运行的playbook,但我知道cron不喜欢ssh。
Tower有一个内置的调度引擎,但我们不打算使用Tower。其他人是如何安排ansible playbook的?
您可以使用cron作业来运行playbook。
Ansible使用-tt
开关调用ssh以强制TTY,因此它应该工作良好。
只需检查以下内容:
还请检查此关于ansible中quiet
选项不存在的实用评论:
对于crontab有一个技巧:按如下方式运行ansible-playbook:
*/15 * * * * if ! out=`ansible-playbook yourplaybook.yaml`; then echo $out; fi
这种方法可以让你得到完整的输出,但仅当ansible以非零状态退出时。
# whereis ansible-playbook
/usr/bin/ansible-playbook
并使用输出中显示的路径运行
我们可以在crontab中运行此命令
#crontab -e
*/15 * * * * /usr/bin/ansible-playbook /home/user1/yourplaybook.yml
*/5 * * * * ansible-playbook -i /root/playbooks/agent /root/playbooks/agent.yml
*/15 * * * * croncape ansible-playbook yourplaybook.yaml
ANSIBLE_PLAYBOOK=`which ansible_playbook`
cd main_dir_where_playbook_is_located
$ANSIBLE_PLAYBOOK playbook.yaml > log_file
将上述内容保存为run.sh,并像普通cron一样安排它的计划。
# Softwareupgrade
1 5 28 6 * ANSIBLE_CONFIG=/home/xxx/ansible/software-upgrade/ansible.cfg /usr/bin/ansible-playbook -i /home/xxx/ansible/software-upgrade/hosts /home/xxx/ansible/software-upgrade/upgrade.yml
# Softwareupgrade
1 5 28 6 * ANSIBLE_CONFIG=/home/xxx/ansible/software-upgrade/ansible.cfg /usr/bin/ansible-playbook -i /home/xxx/ansible/software-upgrade/hosts /home/xxx/ansible/software-upgrade/upgrade.yml >> /home/xxx/ansible/software-upgrade/logfile.log 2>&1
ansible-vault
密码怎么处理? - A K--vault-password-file
选项,它允许从文件或甚至其他脚本的标准输出读取密码。 - Konstantin Suvorov