In the future, BOSH team will investigate how to best consolidate stemcells into a single OS image. In the meantime, if you're developing a CPI for a new IaaS, you may consider reusing one of the officially generated stemcells, or making changes to the following projects:

A "light" stemcell represents a reference to an IaaS resource where the stemcell has already been imported. This helps solve IaaS limitations which restrict how base VM images can be imported, such as:

AWS only allowing imports from within running AWS VMs;

OpenStack disallowing Glance image upload; or

IaaSes taking a long time to import an image.

In these cases, a light stemcell tarball contains only metadata about the stemcell, but does not contain the actual image file with the OS disk image. In addition to the regular stemcell metadata, the stemcell.MF file should include a cloud_properties section with details about how the CPI may find the already-imported stemcell within the IaaS.

On AWS, for example, stemcells are imported into a specific region as an EC2 Amazon Machine Image which is referenced by an ami-* identifier. If you look at the stemcell.MF file of the light stemcell tarball, you'll see a list of regions and their corresponding AMI. When a stemcell is uploaded, the create_stemcell call will return matching AMI ID without doing any IaaS API calls.

While the import step is highly IaaS-specific, there are a couple general recommendations:

You may want to reuse the process that the CPI uses internally with create_stemcell. If not reusing the same code, you should follow the exact same steps. There should be no noticeable difference between an IaaS base image created from a "light stemcell builder" vs an operator importing the stemcell on a director themselves.

Your IaaS may support alternative methods for transferring images once they're imported. As long as the process does not change the underlying stemcell image, you may feel free to use it. For example, in AWS we import the image into a single region, then use the CopyImage AWS API call to copy the image to all other regions.