How to set the public-address of a unit upon deployment?

In an environment with MaaS (2.8.5) and Juju (2.8.10), how is it possible to control which public-address an application’s unit will be exposing? In my example, after juju deploy the unit’s public-address is always on the subnet on which PXE boot happens.

Note: --bind nor --constraints options seem to have any effect on the public-address.

Any help on that one?

Assuming by expose, you mean the IP address displayed in juju status. juju deploy --constaints spaces=<space-name> should work, please file a bug if it does not.

What is your goal in changing which network the public address shown in juju status is?

You can also specify different spaces for different application endpoints use in the relations.

On the other hand, if exposing the port for use on the unit, you can then do something like:
$ juju expose apache2 --to-spaces public
or
juju expose apache2 --to-cidrs 10.0.0.0/24,192.168.1.0/24

If you have different spaces configured in MAAS, juju will find them. To verify:
$ juju spaces