Juju can't provision ceph-osd units

I’m trying to understand how to install and use Ceph with Charmed Kubernetes. I have an environment that uses MAAS and LXD, and juju didn’t seem to have any trouble automatically provisioning VMs under my LXD nodes in order to launch Charmed Kubernetes itself. It was also fine launching VMs for ceph-mon. But it had trouble with ceph-osd:

26       down                     pending        xenial           No available machine matches constraints: [('agent_name', ['26127777-2cfc-454c-8a86-7b270f1ad34b']), ('arch', ['amd64']), ('storage', ['root:0,0:32,1:32,2:8']), ('zone', ['default'])] (resolved to "arch=amd64/generic storage=root:0,0:32,1:32,2:8 zone=default")
27       down                     pending        xenial           No available machine matches constraints: [('agent_name', ['26127777-2cfc-454c-8a86-7b270f1ad34b']), ('arch', ['amd64']), ('storage', ['root:0,3:32,4:32,5:8']), ('zone', ['default'])] (resolved to "arch=amd64/generic storage=root:0,3:32,4:32,5:8 zone=default")
28       down                     pending        xenial           No available machine matches constraints: [('agent_name', ['26127777-2cfc-454c-8a86-7b270f1ad34b']), ('arch', ['amd64']), ('storage', ['root:0,6:32,7:32,8:8']), ('zone', ['default'])] (resolved to "arch=amd64/generic storage=root:0,6:32,7:32,8:8 zone=default")

I’m trying to follow this guide: Storage | Ubuntu

To be clear, the command I tried to use to provision ceph-osd is this (taken from the aforementioned link):

juju deploy -n 3 ceph-osd --storage osd-devices=32G,2 --storage osd-journals=8G,1

I’m not sure what I’m missing. I’m guessing it’s having trouble automatically provisioning VMs with additional storage requirements.

Am I supposed to manually provision those VMs? I’m also not entirely sure how to do that. If I create VMs ahead of time via the MAAS console, juju never seems to use them even if they match the constraints (I’ve tried leaving them in the Ready state or moving them to the Allocated state, but neither works – it always wants to create new VMs).

you can create VMs manually but they need to be in a ready state, (Not deployed) and you need to ensure they are tagged correctly. From what I understand “compute” basically regards it as a standard computational node but if you add the Tag “storage” it should pick up on that it’s used for apps such as ceph.

I see that you are using Xenial for your cloud nodes. Is that intentional?

Secondly, the default storage pool for the OpenStack cloud is Cinder. Is that service available?

You can try deploying ceph-osd generically (no pools configuration) to confirm that you have a baseline to work from.

It would be worthwhile providing us a link to a pastebin containing the output to the juju status command.