Problem with apt add-repository and updating the cache ?

I’m running Ansible 1.5.3 on Ubuntu 12.04 LTS

I’ve got the following two lines in one of my roles:

  • name: Add brightbox repository
    apt_repository: repo=ppa:brightbox/ruby-ng

  • name: Install brightbox ruby
    apt: pkg=ruby1.9.3 state=latest

This outputs the following (Note: abbreviated. Full error log shown below):

failed: [ec2-54-253-255-54.ap-southeast-2.compute.amazonaws.com] => (item=ruby1.9.3) => {“failed”: true, “item”: “ruby1.9.3”}
stderr: E: There are problems and -y was used without --force-yes


WARNING: The following packages cannot be authenticated!
libruby1.9.1 ruby1.9.1 ri1.9.1 ruby1.9.1-dev ruby1.9.1-examples
libruby1.9.1-dbg ruby1.9.1-full ruby1.9.3

This, I believe, is usually a sign that “apt-get update” has not been run - indeed going onto the box, manually running apt-get update, and then rerunning my playbook causes it to install successfully.

Thinking it might be a bug in the apt_repository code or documentation, I bought up a new copy of the server and changed the apt_respository to include the (default) value of true for the update_cache attribute:

  • name: Add brightbox repository
    apt_repository: repo=ppa:brightbox/ruby-ng update_cache=yes

This made no difference. But when I added update_cache to the apt command instead, it now worked:

  • name: Install brightbox ruby
    apt: pkg=ruby1.9.3 state=latest update_cache=yes

So I’m a little puzzled as to why the apt_repository command doesn’t update the apt index in time to fix the following install task, but the apt take does manage to update the index in time ?
Obviously, I’d rather not update my apt index before every run on the apt module, and logically the only reason I am updating it is for the new repository I’ve added, so would prefer the apt_repository task to own that responsibility.

Regards,
Ben

FULL ERROR TRACE

Addenda:

It seems I had to ALSO add in the key manually, as the apt_repository command had not done that for me - this isn’t what I’d expected from a PPA ?

This was required, along with the apt update_cache command. Still puzzled why.

Regards,
Ben

This also happened when running an external role (from Ansible Galaxy)

I had to uncomment line 7 of https://github.com/bcoca/oracle7java/blob/54d5fd3a56d6b2d4186c5c8fabb24b6f42a1f731/tasks/main.yml to ensure the apt-key was also installed, as the previous apt-repository command didn’t do so.

This would appear to be a regression in 1.5.3 at this stage ?

Ben