[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#960043: cloud-init: .list files under sources.list.d get duplicated after reinit



Package: cloud-init
Version: 18.3-6
Severity: normal

Dear Maintainer,

I'm trying to add some other repositories under
/etc/apt/sources.list.d using the following 10_fuss.cfg file in
/etc/cloud/cloud.cfg.d/:

apt:
    preserve_sources_list: true
        sources:
            fuss-buster.list:
                source: "deb http://archive.fuss.bz.it/ buster main"
                key: |
                    -----BEGIN PGP PUBLIC KEY BLOCK-----
                    ...

it work fine and add the list the first time cloud init is run, but in
a later run cloud-init reprocess this file (like after adding a new
ssh key for accessing the server) the source line is appended (the
same happens also if preserve_sources_list is false). So I got
duplicated lines with APT complaining

Looking at the logs in cloud-init.log I traced the problem inside the file:

/usr/lib/python3/dist-packages/cloudinit/config/cc_apt_configure.py

where in the function add_apt_sources, at line 624 there is a:

util.write_file(sourcefn, contents, omode="a")

that write the file in append, giving a duplicate line.

The problem is present also, at the time of writing, in the official
upstream sources, here:

https://github.com/canonical/cloud-init/blob/master/cloudinit/config/cc_apt_configure.py

I think changing the code to omode="w" should solve this problem.


-- System Information:
Debian Release: 10.3
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-8-amd64 (SMP w/1 CPU core)
Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8), LANGUAGE=it_IT.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages cloud-init depends on:
ii  cloud-guest-utils   0.29-1
ii  fdisk               2.33.1-0.1
ii  gdisk               1.0.3-1.1
ii  ifupdown            0.8.35
ii  locales             2.28-10
ii  lsb-base            10.2019051400
ii  lsb-release         10.2019051400
ii  net-tools           1.60+git20180626.aebd88e-1
ii  procps              2:3.3.15-2
ii  python3             3.7.3-1
ii  python3-configobj   5.0.6-3
ii  python3-jinja2      2.10-2
ii  python3-jsonpatch   1.21-1
ii  python3-jsonschema  2.6.0-4
ii  python3-oauthlib    2.1.0-1
ii  python3-requests    2.21.0-1
ii  python3-six         1.12.0-1
ii  python3-yaml        3.13-2
ii  util-linux          2.33.1-0.1

Versions of packages cloud-init recommends:
ii  eatmydata  105-7
ii  sudo       1.8.27-1+deb10u2

Versions of packages cloud-init suggests:
pn  btrfs-progs  <none>
ii  e2fsprogs    1.44.5-1+deb10u3
pn  xfsprogs     <none>

-- Configuration Files:
/etc/cloud/cloud.cfg changed:
disable_root: false
preserve_hostname: false
cloud_init_modules:
 - migrator
 - seed_random
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - disk_setup
 - mounts
 - 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
 - apt-pipelining
 - apt-configure
 - ntp
 - timezone
 - disable-ec2-metadata
 - runcmd
 - byobu
cloud_final_modules:
 - package-update-upgrade-install
 - fan
 - puppet
 - chef
 - salt-minion
 - mcollective
 - rightscale_userdata
 - scripts-vendor
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - scripts-user
 - ssh-authkey-fingerprints
 - keys-to-console
 - phone-home
 - final-message
 - power-state-change
system_info:
   # This will affect which distro class gets used
   distro: debian
   # Default user name + that default users groups (if added/used)
   default_user:
     name: debian
     lock_passwd: True
     gecos: Debian
     groups: [adm, audio, cdrom, dialout, dip, floppy, netdev, plugdev, sudo, video]
     sudo: ["ALL=(ALL) NOPASSWD:ALL"]
     shell: /bin/bash
   # Other config here will be given to the distro class and/or path classes
   paths:
      cloud_dir: /var/lib/cloud/
      templates_dir: /etc/cloud/templates/
      upstart_dir: /etc/init/
   package_mirrors:
     - arches: [default]
       failsafe:
         primary: http://deb.debian.org/debian
         security: http://security.debian.org/
   ssh_svcname: ssh


-- no debconf information


Reply to: