# modules apt: only\_upgrade fail

**URL:** <https://forum.ansible.com/t/modules-apt-only-upgrade-fail/22071>\
**Category:** Ansible Project\
**Created:** [July 21, 2016, 1:44am UTC](https://forum.ansible.com/t/modules-apt-only-upgrade-fail/22071 "2016-07-21T01:44:19Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![richard934935](https://avatars.discourse-cdn.com/v4/letter/r/cdc98d/32.png) [@richard934935](https://forum.ansible.com/u/richard934935)\
**Post date:** [July 21, 2016, 1:44am UTC](https://forum.ansible.com/t/modules-apt-only-upgrade-fail/22071/1 "2016-07-21T01:44:19Z")

</div>

Hello,

Having either apt: only\_upgrade=docker-engine in my playbook or running it on the command line as ansible all --sudo -m apt -a ‘only\_upgrade=docker-engine’ fails with

```auto
xx.xxx.xx.xxx | FAILED! => {
"changed": false,
"failed": true,
"msg": "Boolean docker-engine not in either boolean list"
}

```

In the document

only\_upgrade(added in 2.1)  
Only install/upgrade a package if it is already installed.

my local ansible version is

```auto
ansible 2.1.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = ['/usr/share/ansible']

```

my host docker version is 1.11.0,I just want to only upgrade this package docker-engine to 1.11.2

my playbook is here

```auto

---
- hosts: xxxx
sudo: yes
vars:
apt_packages:
- apt-transport-https
- ca-certificates

tasks:
- name: add CA certificates are installed.
apt:
name: "{{ item }}"
update_cache: yes
with_items: apt_packages

- name: add apt-key of dockers
apt_key:
keyserver: p80.pool.sks-keyservers.net
id: 58118E89F3A912897C070ADBF76221572C52609D

- name: modify /etc/apt/sources.list.d/docker.list
replace:
dest: /etc/apt/sources.list.d/docker.list
regexp: '^deb http'
replace: "deb https"

- name: upgrade docker-engine
apt:
only_upgrade: docker-engine

```

Thanks!

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [July 21, 2016, 2:44pm UTC](https://forum.ansible.com/t/modules-apt-only-upgrade-fail/22071/2 "2016-07-21T14:44:30Z")

</div>

> xx.xxx.xx.xxx | FAILED! =\> {  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"changed": false,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"failed": true,  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"msg": "Boolean docker-engine not in either boolean list"  
> }  
> ```
> 
> In the document
> 
> only\_upgrade(added in 2.1)  
> Only install/upgrade a package if it is already installed.

The documentation also say the default value is false, so this option can only be true or false.

> &nbsp;&nbsp;&nbsp;&nbsp;- name: upgrade docker-engine  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;apt:  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;only\_upgrade: docker-engine

This should be  
- name: upgrade docker-engine  
&nbsp;&nbsp;&nbsp;apt:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name: docker-engine  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;only\_upgrade: true

I also think you need to add state: latest to have it upgrade the package.

---

<div class="post-metadata">

**Author:** ![richard934935](https://avatars.discourse-cdn.com/v4/letter/r/cdc98d/32.png) [@richard934935](https://forum.ansible.com/u/richard934935)\
**Post date:** [July 28, 2016, 5:29am UTC](https://forum.ansible.com/t/modules-apt-only-upgrade-fail/22071/3 "2016-07-28T05:29:17Z")

</div>

I just think this way is reinstall docker-engie to latest when you ues name and state=lastest

it’s different to upgrade this procedure

在 2016年7月21日星期四 UTC+8下午10:44:46，Kai Stian Olstad写道：

---

<div class="post-metadata">

**Author:** ![richard934935](https://avatars.discourse-cdn.com/v4/letter/r/cdc98d/32.png) [@richard934935](https://forum.ansible.com/u/richard934935)\
**Post date:** [July 28, 2016, 5:54am UTC](https://forum.ansible.com/t/modules-apt-only-upgrade-fail/22071/4 "2016-07-28T05:54:02Z")

</div>

Thanks for you suggestion but I just get this when use you way

```auto
- name: upgrade docker-engine
apt:
name: docker-engine
only_upgrade: docker-engine

# state: latest

```

```auto

TASK [upgrade docker-engine] ***************************************************
ok: [xx.xx.xx.xx]

```

and if I add state:latest, I just think only\_upgrade is not work , because I also can install the latest version without only\_upgrade

在 2016年7月21日星期四 UTC+8下午10:44:46，Kai Stian Olstad写道：

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [July 28, 2016, 6:57am UTC](https://forum.ansible.com/t/modules-apt-only-upgrade-fail/22071/5 "2016-07-28T06:57:50Z")

</div>

I'm not sure I understand you, my test of only\_upgrade

$ dpkg -l htop  
dpkg-query: no packages found matching htop

I run this task:  
- name: upgrade if exist  
&nbsp;&nbsp;&nbsp;apt:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name=htop  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state=latest  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;only\_upgrade=true

The output:  
TASK [upgrade if exist]

---

<div class="post-metadata">

**Author:** ![richard934935](https://avatars.discourse-cdn.com/v4/letter/r/cdc98d/32.png) [@richard934935](https://forum.ansible.com/u/richard934935)\
**Post date:** [July 28, 2016, 9:00am UTC](https://forum.ansible.com/t/modules-apt-only-upgrade-fail/22071/6 "2016-07-28T09:00:53Z")

</div>

Thank you very much ,

I know it right now ,thank you very much

you get the stdout message used register and debug ??

在 2016年7月28日星期四 UTC+8下午2:58:23，Kai Stian Olstad写道：

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [July 28, 2016, 5:15pm UTC](https://forum.ansible.com/t/modules-apt-only-upgrade-fail/22071/7 "2016-07-28T17:15:07Z")

</div>

No, I use a callback plugin that give a more human readable output.  
The one I use is this one  
[https://github.com/n0ts/ansible-human\_log](https://github.com/n0ts/ansible-human_log)

---

<div class="post-metadata">

**Author:** ![richard934935](https://avatars.discourse-cdn.com/v4/letter/r/cdc98d/32.png) [@richard934935](https://forum.ansible.com/u/richard934935)\
**Post date:** [July 29, 2016, 2:40am UTC](https://forum.ansible.com/t/modules-apt-only-upgrade-fail/22071/8 "2016-07-29T02:40:14Z")

</div>

Woo!!

Thanks a lot

在 2016年7月29日星期五 UTC+8上午1:15:48，Kai Stian Olstad写道：
