canonical / canonical/cloud-init

package-update-upgrade-install does not update when run with --frequency=always

Open
#3,218 7 comments 0 reactions 0 assignees View on GitHub
bug good first issue hacktoberfest launchpad
Dominant language
Python
Stars
3.8k
Forks
1.1k
Avg merge
3d 8h
Merged PRs (30d)
22

Description

This bug was originally filed in Launchpad as [LP: #1785225](https://bugs.launchpad.net/cloud-init/+bug/1785225)

Launchpad details

affected_projects = []

assignee = None
assignee_name = None
date_closed = None
date_created = 2018-08-03T11:12:56.923746+00:00
date_fix_committed = None
date_fix_released = None
id = 1785225
importance = medium
is_complete = False
lp_url = https://bugs.launchpad.net/cloud-init/+bug/1785225
milestone = None
owner = siriobalmelli
owner_name = Sirio Balmelli
private = False
status = triaged
submitter = siriobalmelli
submitter_name = Sirio Balmelli
tags = []
duplicates = []

_Launchpad user **Sirio Balmelli(siriobalmelli)** wrote on 2018-08-03T11:12:56.923746+00:00_

1. The following stanzas in /etc/cloud/cloud.cfg:

```
cloud_final_modules:
  # always update+upgrade on boot
  - [package-update-upgrade-install, always]

packages: # will run apt-update
  - git
package_update: true
package_upgrade: true
package_reboot_if_required: true
```

2. Result in the following log entry at boot-time:

```
helpers.py[DEBUG]: update-sources already ran (freq=once-per-instance)
```

3. Running the module manually with:

```
sudo cloud-init single --name package-update-upgrade-install --frequency always
```

... also fails to call `apt-get update`

4. Google gives no results.
- No similar bugs visible here.
- No additional configuration keys shown in .
- No relevant keys given in .
- Nowhere is "update-sources" mentioned.

5. Attempted guess at "update-sources" fails:

```
sudo cloud-init single --name update-sources --frequency always
```

6. Expected behavior is that `apt-get update` is executed before `apt-get install` every time the machine is booted.
On my system the install looks like:

```
['eatmydata', 'apt-get', '--option=Dpkg::Options::=--force-confold', '--option=Dpkg::options::=--force-unsafe-io', '--assume-yes', '--quiet', 'install', 'git']
```

7. Alternate behavior would be a way to explicitly request that an update be performed.
This was attempted/guessed-at with:

```
cloud_config_modules:
  - [apt-configure, always]
```

But did not obtain an update.
There seem to be no other applicable modules listed in

8. Environment:
- Ubuntu 16.04.5 LTS
- /usr/bin/cloud-init 18.2

9. /etc/cloud/cloud.cfg
---
cloud_init_modules:
  - seed_random
  - bootcmd
  - set_hostname
  - update_hostname
  - update_etc_hosts
  - ca-certs
  - rsyslog
  - users-groups
  - ssh

cloud_config_modules:
  - emit_upstart
  - ssh-import-id
  - locale
  - set-passwords
  - grub-dpkg
  - timezone
  - [apt-configure, always]
  - [runcmd, always] # doesn't actually EXECUTE the modules - that's left for scripts-user :P

cloud_final_modules:
  - landscape
  - lxd
  - ssh-authkey-fingerprints
  - final-message
  - power-state-change
  - [package-update-upgrade-install, always]
  - [scripts-user, always]

system_info:
  distro: ubuntu
  paths:
    cloud_dir: /var/lib/cloud/
    templates_dir: /etc/cloud/templates/
    upstart_dir: /etc/init/
  ssh_svcname: ssh

disable_root: true

datasource_list: [NoCloud, None]

preserve_hostname: false
hostname: {hostname}
manage_etc_hosts: true

apt:
  preserve_sources_list: false
  primary:
    - arches:
        - amd64
        - i386
        - default
      uri: "http://archive.ubuntu.com/ubuntu/"
      search:
        - "http://ch.archive.ubuntu.com/ubuntu"
        - "http://us.archive.ubuntu.com/ubuntu"
      search_dns: true
  security:
    - arches:
        - amd64
        - i386
        - default
      uri: "http://security.ubuntu.com/ubuntu/"
      search_dns: true
  # (custom PPAs elided)
  sources_list: |
    deb http://archive.ubuntu.com/ubuntu/ xenial main restricted
    deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted
    deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted
    deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted
    deb http://archive.ubuntu.com/ubuntu/ xenial universe
    deb-src http://archive.ubuntu.com/ubuntu/ xenial universe
    deb http://archive.ubuntu.com/ubuntu/ xenial-updates universe
    deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates universe
    deb http://archive.ubuntu.com/ubuntu/ xenial multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ xenial multiverse
    deb http://archive.ubuntu.com/ubuntu/ xenial-updates multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates multiverse
    deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb http://security.ubuntu.com/ubuntu/ xenial-security main restricted
    deb-src http://security.ubuntu.com/ubuntu/ xenial-security main restricted
    deb http://security.ubuntu.com/ubuntu/ xenial-security universe
    deb-src http://security.ubuntu.com/ubuntu/ xenial-security universe
    deb http://security.ubuntu.com/ubuntu/ xenial-security multiverse
    deb-src http://security.ubuntu.com/ubuntu/ xenial-security multiverse
runcmd:
  - [echo, startup run $(date)]

packages: # SHOULD run apt-update; does not
  - git
package_update: true
package_upgrade: true
package_reboot_if_required: true

Contributor guide

Open the contributing guide

Research direction

Start with the package-update-upgrade-install and apt-configure module entry points, reproducing the issue with the shown cloud-init single command and /etc/cloud/cloud.cfg configuration. Trace why update-sources is skipped when package-update-upgrade-install runs with frequency always, then verify that apt-get update runs before package installation as expected.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cloud
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.