apt safe-upgrade module

183 views
Skip to first unread message

Benjamin Copeland

unread,
Sep 26, 2014, 5:57:26 AM9/26/14
to ansible...@googlegroups.com
- name: hold openssh-client only if OS is 12.04
  shell: echo "openssh-client hold" | sudo dpkg --set-selections
  when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'precise'

- name: hold openssh-server only if OS is 12.04
  shell: echo "openssh-server hold" | sudo dpkg --set-selections
  when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'precise'

- name: update and upgrade a server
  apt: upgrade=safe update_cache=yes
  sudo: yes


The package is "held" it dpkg. 

openssh-client hold
openssh-server hold


The state of apt before ansible:

The following packages have been kept back:
  linux-headers-generic linux-headers-virtual linux-image-virtual linux-virtual openssh-client openssh-server

After deploy:

The following packages have been kept back:
  linux-headers-generic linux-headers-virtual linux-image-virtual linux-virtual


I would have thought, using the safe-upgrade should have stopped openssh being upgraded.

Is this a bug, or am I missing something?

Thanks

Ben


Michael DeHaan

unread,
Sep 26, 2014, 8:33:11 AM9/26/14
to ansible...@googlegroups.com
Where are you seeing the output of what is "held back" and so on?  That's usually what you see during an update, so it seems some steps
are not being executed by Ansible, and that's confusing me a little.

Can you show the commands executed?

Thanks!

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/8cba22f6-9fb1-4a14-a7bc-a52cca604355%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Benjamin Copeland

unread,
Sep 26, 2014, 10:04:10 AM9/26/14
to ansible...@googlegroups.com
Hello Michael,

I am using dpkg, so dpkg --get-selections | grep "openssh-*".

apt-get upgrade, by default won't upgrade held packages. 

There is a option in apt-get manual:

       --ignore-hold
           Ignore package Holds; This causes apt-get to ignore a hold placed on a package. This may be
           useful in conjunction with dist-upgrade to override a large number of undesired holds.
           Configuration Item: APT::Ignore-Hold.

Which, I assume then will overwrite the default behavior.

Thanks

Ben

Michael DeHaan

unread,
Sep 27, 2014, 9:37:55 AM9/27/14
to ansible...@googlegroups.com
Curious how the holds got placed?



Benjamin Copeland

unread,
Sep 29, 2014, 4:52:18 AM9/29/14
to ansible...@googlegroups.com

Igor Homyakov

unread,
Sep 29, 2014, 6:07:34 AM9/29/14
to ansible...@googlegroups.com
All holds are in /var/lib/dpkg/status file as well as other statuses
of available packages.
> https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgy%2B8M2Ebrg9j%3DM23VuEaY1Tr89DMYn9Ebg-7Xo5MJZgbA%40mail.gmail.com.

Michael DeHaan

unread,
Sep 29, 2014, 9:43:20 AM9/29/14
to ansible...@googlegroups.com
Yep, familiar with apt pinning.

I think I'd be open to a parameter to ignore the pinning, but it probably should not happen by default.




Benjamin Copeland

unread,
Sep 29, 2014, 11:11:49 AM9/29/14
to ansible...@googlegroups.com
Currently, its holding me back from updating a number of our servers. As, soon as the held package gets updated, the server breaks. 

Is there anything I can do? 

Michael DeHaan

unread,
Sep 30, 2014, 3:15:37 PM9/30/14
to ansible...@googlegroups.com
For now you could modify the module or make a "shell: " command call instead, using the numerous flags and env variables required to make apt do a direct update.

Please make sure there's a ticket or pull request filed for this one if not already.



Reply all
Reply to author
Forward
0 new messages