Using current DevStack master and virtual nodes with agent_ssh driver, I can not deploy user's partition images. Image is build with "disk-image-create ubuntu baremetal" and 3 parts of it uploaded to Glance (kernel, initrd and qcow2 root partition). Flavor extra_specs and node properties are set to capability boot_option local. Virtual Ironic Node has 2GB RAM and single virtio disk of 10GB (11GiB) Failure is both with CoreOS-based and TinyIPA images, although exact error is different. CoreOS-based image (master) fails to write configdrive partition: $ tail -F ir-cond.log | grep ERROR 2016-06-08 17:35:08.638 ERROR ironic.drivers.modules.agent [req-1d9c2bca-1aac-45fc-b08c-665528845ff0 None None] node b968f163-6d3e-4846-97ac-5e2f5af129fb command status errored: {u'message': u'Error writing configdrive to device: Writing configdrive to device /dev/vda failed with exit code 1. stdout: copy_configdrive_to_disk.sh: Working on MBR only device /dev/vda\ncopy_configdrive_to_disk.sh: Adding configdrive partition to /dev/vda\ncopy_configdrive_to_disk.sh: Error creating configdrive on /dev/vda\n. stderr: partx: /dev/vda: failed to read partition table\nparted: invalid token: primary\nError: Expecting a file system type.\n.', u'code': 500, u'type': u'ConfigDriveWriteError', u'details': u'Writing configdrive to device /dev/vda failed with exit code 1. stdout: copy_configdrive_to_disk.sh: Working on MBR only device /dev/vda\ncopy_configdrive_to_disk.sh: Adding configdrive partition to /dev/vda\ncopy_configdrive_to_disk.sh: Error creating configdrive on /dev/vda\n. stderr: partx: /dev/vda: failed to read partition table\nparted: invalid token: primary\nError: Expecting a file system type.\n.'} relevant VM log: [ 960.210378] chroot[440]: 2016-06-08 14:35:06.427 440 INFO ironic_python_agent.extensions.standby [-] Image /tmp/3a3ea0b0-46cc-4497-98b4-f5a9dd00ca65 written to device /dev/vda in 863.150555849 seconds [ 960.250977] chroot[440]: 2016-06-08 14:35:06.468 440 INFO ironic_python_agent.extensions.standby [-] copying configdrive to disk with command /bin/bash /usr/local/lib/python2.7/dist-packages/ironic_python_agent/extensions/../shell/copy_configdrive_to_disk.sh /tmp/configdrive /dev/vda [ 961.826376] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root [-] Command failed: prepare_image, error: Error writing configdrive to device: Writing configdrive to device /dev/vda failed with exit code 1. stdout: copy_configdrive_to_disk.sh: Working on MBR only device /dev/vda [ 961.832737] chroot[440]: copy_configdrive_to_disk.sh: Adding configdrive partition to /dev/vda [ 961.842312] chroot[440]: copy_configdrive_to_disk.sh: Error creating configdrive on /dev/vda [ 961.849416] chroot[440]: . stderr: partx: /dev/vda: failed to read partition table [ 961.857572] chroot[440]: parted: invalid token: primary [ 961.865729] chroot[440]: Error: Expecting a file system type. [ 961.873891] chroot[440]: . [ 961.881924] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root Traceback (most recent call last): [ 961.890403] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root File "/usr/local/lib/python2.7/dist-packages/ironic_python_agent/extensions/base.py", line 151, in run [ 961.898718] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root result = self.execute_method(**self.command_params) [ 961.907284] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root File "/usr/local/lib/python2.7/dist-packages/ironic_python_agent/extensions/standby.py", line 286, in prepare_image [ 961.911709] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root _write_configdrive_to_partition(configdrive, device) [ 961.916391] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root File "/usr/local/lib/python2.7/dist-packages/ironic_python_agent/extensions/standby.py", line 109, in _write_configdrive_to_partition [ 961.921386] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root e.stderr) [ 961.925551] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root ConfigDriveWriteError: Error writing configdrive to device: Writing configdrive to device /dev/vda failed with exit code 1. stdout: copy_configdrive_to_disk.sh: Working on MBR only device /dev/vda [ 961.930405] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root copy_configdrive_to_disk.sh: Adding configdrive partition to /dev/vda [ 961.934873] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root copy_configdrive_to_disk.sh: Error creating configdrive on /dev/vda [ 961.940466] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root . stderr: partx: /dev/vda: failed to read partition table [ 961.944886] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root parted: invalid token: primary [ 961.950484] chroot[440]: 2016-06-08 14:35:08.030 440 ERROR root Error: Expecting a file system type. With TinyIPA (master), deployment passes configdrive step but fails to install GRUB: $ tail -F ir-cond.log | grep ERROR 2016-06-08 18:17:15.329 ERROR ironic.drivers.modules.agent_base_vendor [req-d872e7fa-5351-4718-9256-30f2cabc59ed None None] Failed to install a bootloader when deploying node b968f163-6d3e-4846-97ac-5e2f5af129fb. Error: {u'message': u'Command execution failed: Installing GRUB2 boot loader to device /dev/vda failed with Unexpected error while running command.\nCommand: chroot /tmp/tmpLVMkvt /bin/bash -c "/usr/sbin/grub-install /dev/vda"\nExit code: 127\nStdout: u\'\'\nStderr: u\'/bin/bash: /usr/sbin/grub-install: No such file or directory\\n\'.', u'code': 500, u'type': u'CommandExecutionError', u'details': u'Installing GRUB2 boot loader to device /dev/vda failed with Unexpected error while running command.\nCommand: chroot /tmp/tmpLVMkvt /bin/bash -c "/usr/sbin/grub-install /dev/vda"\nExit code: 127\nStdout: u\'\'\nStderr: u\'/bin/bash: /usr/sbin/grub-install: No such file or directory\\n\'.'} VM log: 2016-06-08 15:17:12.211 410 DEBUG oslo_concurrency.processutils [-] Running cmd (subprocess): chroot /tmp/tmpLVMkvt /bin/bash -c "/usr/sbin/grub-install /dev/vda" execute /usr/local/lib/python2.7/site-packages/oslo_concurrency/processutils.py:344 2016-06-08 15:17:12.630 410 DEBUG oslo_concurrency.processutils [-] CMD "chroot /tmp/tmpLVMkvt /bin/bash -c "/usr/sbin/grub-install /dev/vda"" returned: 127 in 0.419s execute /usr/local/lib/python2.7/site-packages/oslo_concurrency/processutils.py:374 2016-06-08 15:17:12.639 410 DEBUG oslo_concurrency.processutils [-] u'chroot /tmp/tmpLVMkvt /bin/bash -c "/usr/sbin/grub-install /dev/vda"' failed. Not Retrying. execute /usr/local/lib/python2.7/site-packages/oslo_concurrency/processutils.py:422 2016-06-08 15:17:12.646 410 ERROR ironic_python_agent.extensions.image [-] Installing GRUB2 boot loader to device /dev/vda failed with Unexpected error while running command. Command: chroot /tmp/tmpLVMkvt /bin/bash -c "/usr/sbin/grub-install /dev/vda" Exit code: 127 Stdout: u'' Stderr: u'/bin/bash: /usr/sbin/grub-install: No such file or directory\n'. 2016-06-08 15:17:12.652 410 DEBUG oslo_concurrency.processutils [-] Running cmd (subprocess): umount /tmp/tmpLVMkvt/dev execute /usr/local/lib/python2.7/site-packages/oslo_concurrency/processutils.py:344 2016-06-08 15:17:12.883 410 DEBUG oslo_concurrency.processutils [-] CMD "umount /tmp/tmpLVMkvt/dev" returned: 0 in 0.230s execute /usr/local/lib/python2.7/site-packages/oslo_concurrency/processutils.py:374 2016-06-08 15:17:12.890 410 DEBUG ironic_python_agent.utils [-] Execution completed, command line is "umount /tmp/tmpLVMkvt/dev" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:63 2016-06-08 15:17:12.895 410 DEBUG ironic_python_agent.utils [-] Command stdout is: "" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:65 2016-06-08 15:17:12.899 410 DEBUG ironic_python_agent.utils [-] Command stderr is: "" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:66 2016-06-08 15:17:12.907 410 DEBUG oslo_concurrency.processutils [-] Running cmd (subprocess): umount /tmp/tmpLVMkvt/proc execute /usr/local/lib/python2.7/site-packages/oslo_concurrency/processutils.py:344 2016-06-08 15:17:13.130 410 DEBUG oslo_concurrency.processutils [-] CMD "umount /tmp/tmpLVMkvt/proc" returned: 0 in 0.223s execute /usr/local/lib/python2.7/site-packages/oslo_concurrency/processutils.py:374 2016-06-08 15:17:13.139 410 DEBUG ironic_python_agent.utils [-] Execution completed, command line is "umount /tmp/tmpLVMkvt/proc" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:63 2016-06-08 15:17:13.145 410 DEBUG ironic_python_agent.utils [-] Command stdout is: "" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:65 2016-06-08 15:17:13.150 410 DEBUG ironic_python_agent.utils [-] Command stderr is: "" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:66 2016-06-08 15:17:13.157 410 DEBUG oslo_concurrency.processutils [-] Running cmd (subprocess): umount /tmp/tmpLVMkvt/sys execute /usr/local/lib/python2.7/site-packages/oslo_concurrency/processutils.py:344 2016-06-08 15:17:13.412 410 DEBUG oslo_concurrency.processutils [-] CMD "umount /tmp/tmpLVMkvt/sys" returned: 0 in 0.254s execute /usr/local/lib/python2.7/site-packages/oslo_concurrency/processutils.py:374 2016-06-08 15:17:13.425 410 DEBUG ironic_python_agent.utils [-] Execution completed, command line is "umount /tmp/tmpLVMkvt/sys" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:63 2016-06-08 15:17:13.432 410 DEBUG ironic_python_agent.utils [-] Command stdout is: "" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:65 2016-06-08 15:17:13.436 410 DEBUG ironic_python_agent.utils [-] Command stderr is: "" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:66 2016-06-08 15:17:13.443 410 DEBUG oslo_concurrency.processutils [-] Running cmd (subprocess): umount /tmp/tmpLVMkvt execute /usr/local/lib/python2.7/site-packages/oslo_concurrency/processutils.py:344 2016-06-08 15:17:13.842 410 DEBUG oslo_concurrency.processutils [-] CMD "umount /tmp/tmpLVMkvt" returned: 0 in 0.397s execute /usr/local/lib/python2.7/site-packages/oslo_concurrency/processutils.py:374 2016-06-08 15:17:13.851 410 DEBUG ironic_python_agent.utils [-] Execution completed, command line is "umount /tmp/tmpLVMkvt" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:63 2016-06-08 15:17:13.858 410 DEBUG ironic_python_agent.utils [-] Command stdout is: "" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:65 2016-06-08 15:17:13.864 410 DEBUG ironic_python_agent.utils [-] Command stderr is: "" execute /usr/local/lib/python2.7/site-packages/ironic_python_agent/utils.py:66 2016-06-08 15:17:13.875 410 ERROR root [-] Command execution error: Command execution failed: Installing GRUB2 boot loader to device /dev/vda failed with Unexpected error while running command. Command: chroot /tmp/tmpLVMkvt /bin/bash -c "/usr/sbin/grub-install /dev/vda" Exit code: 127 Stdout: u'' Stderr: u'/bin/bash: /usr/sbin/grub-install: No such file or directory\n'. 2016-06-08 15:17:13.875 410 ERROR root Traceback (most recent call last): 2016-06-08 15:17:13.875 410 ERROR root File "/usr/local/lib/python2.7/site-packages/ironic_python_agent/extensions/base.py", line 251, in execute_command 2016-06-08 15:17:13.875 410 ERROR root File "/usr/local/lib/python2.7/site-packages/ironic_python_agent/extensions/base.py", line 204, in execute 2016-06-08 15:17:13.875 410 ERROR root File "/usr/local/lib/python2.7/site-packages/ironic_python_agent/extensions/base.py", line 320, in wrapper 2016-06-08 15:17:13.875 410 ERROR root File "/usr/local/lib/python2.7/site-packages/ironic_python_agent/extensions/image.py", line 200, in install_bootloader 2016-06-08 15:17:13.875 410 ERROR root File "/usr/local/lib/python2.7/site-packages/ironic_python_agent/extensions/image.py", line 135, in _install_grub2 2016-06-08 15:17:13.875 410 ERROR root CommandExecutionError: Command execution failed: Installing GRUB2 boot loader to device /dev/vda failed with Unexpected error while running command. 2016-06-08 15:17:13.875 410 ERROR root Command: chroot /tmp/tmpLVMkvt /bin/bash -c "/usr/sbin/grub-install /dev/vda" 2016-06-08 15:17:13.875 410 ERROR root Exit code: 127 2016-06-08 15:17:13.875 410 ERROR root Stdout: u'' 2016-06-08 15:17:13.875 410 ERROR root Stderr: u'/bin/bash: /usr/sbin/grub-install: No such file or directory\n'. 2016-06-08 15:17:13.875 410 ERROR root 2016-06-08 15:17:13.922 410 INFO root [-] Command image.install_bootloader completed: Command name: image.install_bootloader, params: {u'efi_system_part_uuid': None, u'root_uuid': u'af82b6af-0c46-4b65-bf17-c9b69df12d5e'}, status: FAILED, result: None. /usr/sbin/grub-install is definitely in the user's partition image (I've mounted qcow2 and checked), so the possibly problem is it does not find /dev/vda from chroot. This might be related to bug/1576526 although in the both cases the virtual disk was new and clean