ansible-playbook fails, even though I can ssh into the machine

I have an AWS machine that I want to run an Ansible playbook against. The playbook has been running great against my local Vagrant vm, but now I’m having trouble’s running it against the AWS machine. I am able to ssh into the machine fine. Ex:

ssh myserver

I have a hosts file that looks like this:

[production]
myserver

When I try to use ansible-playbook to run it, it fails:
ansible-playbook -i hosts myplaybook.yml

I tried specifying the --private-key to be the same one I used to ssh, but still doesn’t work:
ansible-playbook -i hosts --private-key=~/.ssh/id_rsa myplaybook.yml

I also tried specifically setting the sudo user and setting --ask-sudo-pass but still had no luck.

Is there something specific I should be looking for? I looked through the output of -vvvv, but nothing is standing out to me. I have 4 different private keys and it tried each of them, even when I specify which one to use. I’m running ansible 1.7.2 on a Macbook Pro.

For AWS, the private key should be the PEM you download I believe. Beyond that, you may also want to use the ec2 dynamic inventory script, rather than hard-coding your hosts into a file. This will allow you to use things like ec2 tags as groups and is generally a better way to reference your AWS hosts.