Looking back at the one place where I set up the CMC, I configure the CMC by proposal, like this:
NNS_URL="$(http://localhost:$(dfx info replica-port))"
ic-admin --nns-url "$NNS_URL" \
propose-to-set-authorized-subnetworks \
--test-neuron-proposer \
--proposal-title "Authorize CMC to create canisters in subnets" \
--proposal-url https://forum.dfinity.org/somepost \
--summary "Some summary" \
--subnets $(ic-admin --nns-url "$NNS_URL" get-subnet-list | jq -r '. | join(" --subnets ")')
But in your case there is no governance canister, so we need to whitelist without a proposal. So, whatever function call that proposal makes, you presumably need to make directly.
Looking through that code, I also had to set the sdr exchange rate. Not that it is relevant to the canister whitelisting but it might become relevant later.
ic-admin --nns-url "$NNS_URL" propose-xdr-icp-conversion-rate --test-neuron-proposer --summary "Please set the conversion rate between ICP and cycles" --xdr-permyriad-per-icp 123456789