Activity log for bug #1687712

Date Who What changed Old value New value Message
2017-05-02 17:36:28 Paul Meyer bug added bug
2017-05-02 17:36:28 Paul Meyer attachment added cloud-init.tar https://bugs.launchpad.net/bugs/1687712/+attachment/4870947/+files/cloud-init.tar
2017-05-03 00:35:47 Paul Meyer merge proposal linked https://code.launchpad.net/~paul-meyer/cloud-init/+git/cloud-init/+merge/323532
2017-05-03 09:37:16 Scott Moser cloud-init: status New Confirmed
2017-05-03 09:37:22 Scott Moser cloud-init: importance Undecided Medium
2017-05-03 12:14:57 Scott Moser bug task added cloud-init (Ubuntu)
2017-05-03 12:17:59 Vishnu C cloud-init (Ubuntu): assignee Vishnu C (chalil)
2017-05-03 18:01:34 Paul Meyer cloud-init: assignee Paul Meyer (paul-meyer)
2017-05-23 21:31:01 Launchpad Janitor cloud-init (Ubuntu): status New Fix Released
2017-06-13 18:06:25 Brian Murray cloud-init (Ubuntu Zesty): status New Fix Committed
2017-06-13 18:06:26 Brian Murray bug added subscriber Ubuntu Stable Release Updates Team
2017-06-13 18:06:28 Brian Murray bug added subscriber SRU Verification
2017-06-13 18:06:31 Brian Murray tags verification-needed
2017-06-13 18:54:22 Brian Murray cloud-init (Ubuntu Yakkety): status New Fix Committed
2017-06-13 19:07:53 Brian Murray cloud-init (Ubuntu Xenial): status New Fix Committed
2017-06-22 21:33:59 Joshua Powers bug added subscriber Joshua Powers
2017-06-26 14:09:46 Scott Moser cloud-init (Ubuntu): importance Undecided Medium
2017-06-26 14:09:48 Scott Moser cloud-init (Ubuntu Xenial): importance Undecided Medium
2017-06-26 14:09:49 Scott Moser cloud-init (Ubuntu Yakkety): importance Undecided Medium
2017-06-26 14:09:51 Scott Moser cloud-init (Ubuntu Zesty): importance Undecided Medium
2017-06-26 17:25:01 Scott Moser description This reproduces on Azure, but it should fail similarly elsewhere. Consider repro.yml: #cloud-config fs_setup: - special: cmd: mkfs -t %(filesystem)s -L %(label)s %(device)s filesystem: ext4 device: /dev/sdb1 label: repro Create a VM with this cloud config: $ az vm create -g $rg -l westus2 --custom-data @repro.yml --image UbuntuLTS -n repro2 Then cloud-init will fail with: Failed to exec of 'mkfs -t ext4 -L repro /dev/sdb1': Unexpected error while running command. Command: mkfs -t ext4 -L repro /dev/sdb1 Exit code: - Reason: [Errno 2] No such file or directory: 'mkfs -t ext4 -L repro /dev/sdb1' $ dpkg-query -W -f='${Version}' cloud-init 0.7.9-48-g1c795b9-0ubuntu1~16.04.1 Bug is in mkfs() in cc_disk_setup.py, which creates a shell-like string in the case that cmd was specified and a exec-like array in the other case (around line 913). === Begin SRU Template === [Impact] If the user specifies cloud-config with a 'fs_setup' entry containing a 'cmd', then warning will appear in cloud-init.log and expected filesystem will not be created. This is because cloud-init would essentially try to execute a name like: "mkfs -t TYPE -L LABEL DEVICE" rather than a name 'mkfs' with arguments '-t', TYPE, ... No split was done on space. The fix was to enable shell intrepretation so that the split would be done. [Test Case] This test case assumes a disk will be attached named '/dev/vdb'. You can change the 'dev=' to be 'sdb' if that will be the device name. The test cases boots an instance, ads proposed and then 'cleans' the instance, but similarly this will work if the config is provided in user-data. $ dev=vdb $ sudo tee /etc/cloud/cloud.cfg.d/disk-setup.cfg <<EOF #cloud-config disk_setup: /dev/$dev: table_type: gpt layout: [[100, 83]] fs_setup: - cmd: mkfs -F -t %(filesystem)s -L %(label)s %(device)s filesystem: ext4 device: /dev/$dev partition: 1 label: repro mounts: - [/dev/${dev}1, /mnt] EOF $ sudo rm -Rf /var/lib/cloud /var/log/cloud-init* ## remove the old entry in /etc/fstab, which can cause LP: #1691489 $ sudo sed -i.dist '/comment=cloudconfig/d' /etc/fstab ## wipe the disk so that we make sure we format it. $ sudo python3 -c "import sys; buf = b'\\0' * 1024 * 1024 * 8 with open(sys.argv[1], 'wb+') as fp: fp.write(buf) fp.seek(-(len(buf)), 2) fp.write(buf)" /dev/$dev $ sudo reboot ## Now ssh back in, and expect to have a filesystem on /dev/vdb1 ## that is mounted at /mnt [Regression Potential] Regression could occur if a user had provided a string to the 'cmd' argument that had special shell characters in it. For example: cmd: "/my/cmd *foo*" That would previously have executed the command "/mnt/cmd *foo*", but will now execute the command /mnt/cmd with argument shell filename expansion of *foo* [Other Info] Upstream commit at https://git.launchpad.net/cloud-init/commit/?id=4f0f171c2 === End SRU Template === This reproduces on Azure, but it should fail similarly elsewhere. Consider repro.yml: #cloud-config fs_setup:     - special:       cmd: mkfs -t %(filesystem)s -L %(label)s %(device)s       filesystem: ext4       device: /dev/sdb1       label: repro Create a VM with this cloud config: $ az vm create -g $rg -l westus2 --custom-data @repro.yml --image UbuntuLTS -n repro2 Then cloud-init will fail with: Failed to exec of 'mkfs -t ext4 -L repro /dev/sdb1': Unexpected error while running command. Command: mkfs -t ext4 -L repro /dev/sdb1 Exit code: - Reason: [Errno 2] No such file or directory: 'mkfs -t ext4 -L repro /dev/sdb1' $ dpkg-query -W -f='${Version}' cloud-init 0.7.9-48-g1c795b9-0ubuntu1~16.04.1 Bug is in mkfs() in cc_disk_setup.py, which creates a shell-like string in the case that cmd was specified and a exec-like array in the other case (around line 913).
2017-06-26 20:38:39 Joshua Powers tags verification-needed verification-done-xenial verification-done-yakkety verification-done-zesty
2017-06-27 15:51:34 Launchpad Janitor cloud-init (Ubuntu Zesty): status Fix Committed Fix Released
2017-06-27 15:52:29 Steve Langasek removed subscriber Ubuntu Stable Release Updates Team
2017-06-27 15:54:02 Launchpad Janitor cloud-init (Ubuntu Yakkety): status Fix Committed Fix Released
2017-06-27 15:54:45 Launchpad Janitor cloud-init (Ubuntu Xenial): status Fix Committed Fix Released
2017-09-23 02:32:05 Scott Moser cloud-init: status Confirmed Fix Released
2023-05-11 00:48:47 James Falcon bug watch added https://github.com/canonical/cloud-init/issues/2879