Okay, here's a stab at it:
------
An alternative to ansible-pull might be to set up a cron job that runs ansible-playbook with ssh-agent. Here's one way to do that.
Log on to your ansible master and start ssh-agent with a process that won't stop and specify where you want to put the socket EG
ssh-agent -a /var/run/ansible_ssh_auth_sock.sock "bash 'while /bin/true ; do sleep 3600 ; done"
Then add the ansible ssh key to the ssh-agent
export SSH_AUTH_SOCK=/var/run/ansible_ssh_auth_sock.sock
ssh-add .ssh/ansile_admin.pub
and in your crontab
PATH=/usr/local/bin:/usr/bin:/bin
MAILTO=
m...@example.com# ansible at midnight
00 0 * * * export SSH_AUTH_SOCK=/var/run/ansible_ssh_auth_sock.sock; ansible-playbook maintenance.yaml
Note that you have to do all this as the user who's crontab is going to run the ansible jobs. The ssh-agent socket should only be readable/writable by that one user. If you forget the socket or want to find the PID of the ssh-agent, use ps. You have to put "export SSH_AUTH_SOCK;" in the cron command. You can't set it like the PATH or MAILTO variables.
--------------
I've tested ssh connections using this method, but not actual ansible playbooks. If anyone sees anything insecure or otherwise stupid, please let me know.
------