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 |
|