On Monday, December 8, 2025 11:31:48 AM Eastern Standard Time Robert Sander via ceph-users wrote:
Hi,
Am 08.12.25 um 4:02 PM schrieb Daniel Brown via ceph-users:
I did try to setup SMB
The SMB service and the SMB MGR module are far from being production ready. I only get errors when trying to use them on AMD64.
Regards --
Do you have a moment to elaborate on what happened? What kind of errors did you get? Was this on a tentacle branch build or something else?
Am 08.12.25 um 8:17 PM schrieb John Mulligan:
On Monday, December 8, 2025 11:31:48 AM Eastern Standard Time Robert Sander via ceph-users wrote:
The SMB service and the SMB MGR module are far from being production ready. I only get errors when trying to use them on AMD64.
Do you have a moment to elaborate on what happened? What kind of errors did you get? Was this on a tentacle branch build or something else?
It's all on the 20.2.0 GA release (69f84cc2651aa259a15bc192ddaabd3baba07489). Trying to setup an SMB service via dashboard completely fails with a red error message: Failed to execute smb Remote method threw exception: Traceback (most recent call last): File "/usr/share/ceph/mgr/smb/cli.py", line 18, in __call__ return self._func(*args, **kwargs) File "/usr/share/ceph/mgr/smb/module.py", line 184, in apply_resources resources.load_text(inbuf), File "/usr/share/ceph/mgr/smb/resources.py", line 759, in load_text return load(cast(Simplified, data)) File "/usr/share/ceph/mgr/smb/resources.py", line 767, in load return resourcelib.load(data) File "/usr/share/ceph/mgr/smb/resourcelib.py", line 678, in load return [resource.object_from_simplified(data)] File "/usr/share/ceph/mgr/smb/resourcelib.py", line 350, in object_from_simplified value = self._object_field_from_simplified(fld, data) File "/usr/share/ceph/mgr/smb/resourcelib.py", line 394, in _object_field_from_simplified return [ File "/usr/share/ceph/mgr/smb/resourcelib.py", line 395, in self._object_sub_from_simplified(subtype, v) for v in value File "/usr/share/ceph/mgr/smb/resourcelib.py", line 414, in _object_sub_from_simplified return _rconfig.object_from_simplified(data) File "/usr/share/ceph/mgr/smb/resourcelib.py", line 350, in object_from_simplified value = self._object_field_from_simplified(fld, data) File "/usr/share/ceph/mgr/smb/resourcelib.py", line 383, in _object_field_from_simplified inner_type = fld.inner_type() File "/usr/share/ceph/mgr/smb/resourcelib.py", line 243, in inner_type assert len(args) == 1 AssertionError Trying to do the same on the command line I fail to interpret the documentation or the help text: smb cluster create <cluster_id> <auth_mode:user|active-directory> [<domain_realm>] [<domain_join_ref>... Create an smb cluster ] [<domain_join_user_pass>...] [<user_group_ref>...] [<define_user_pass>...] [<custom_dns>...] [<placement>] [<clustering:default|always|never>] [<public_addrs>...] [<password_filter:none|base64>] [<password_filter_out:none|base64|hidden>] [--format <value>] How do I specify the arguments here? I want to setup local users and groups and some public IP addresses. I have good experience in setting up Samba and CTDB on CephFS but here the docs lack some information. Regards -- Robert Sander Linux Consultant Heinlein Consulting GmbH Schwedter Str. 8/9b, 10119 Berlin https://www.heinlein-support.de Tel: +49 30 405051 - 0 Fax: +49 30 405051 - 19 Amtsgericht Berlin-Charlottenburg - HRB 220009 B Geschäftsführer: Peer Heinlein - Sitz: Berlin
On Tuesday, December 9, 2025 2:42:30 AM Eastern Standard Time Robert Sander wrote:
Am 08.12.25 um 8:17 PM schrieb John Mulligan:
On Monday, December 8, 2025 11:31:48 AM Eastern Standard Time Robert Sander via ceph-users wrote:
The SMB service and the SMB MGR module are far from being production ready. I only get errors when trying to use them on AMD64.
Do you have a moment to elaborate on what happened? What kind of errors did you get? Was this on a tentacle branch build or something else?
It's all on the 20.2.0 GA release (69f84cc2651aa259a15bc192ddaabd3baba07489).
Trying to setup an SMB service via dashboard completely fails with a red error message:
Failed to execute smb Remote method threw exception: Traceback (most recent call last): File "/usr/share/ceph/mgr/smb/cli.py", line 18, in __call__ return self._func(*args, **kwargs) File "/usr/share/ceph/mgr/smb/module.py", line 184, in apply_resources resources.load_text(inbuf), File "/usr/share/ceph/mgr/smb/resources.py", line 759, in load_text return load(cast(Simplified, data)) File "/usr/share/ceph/mgr/smb/resources.py", line 767, in load return resourcelib.load(data) File "/usr/share/ceph/mgr/smb/resourcelib.py", line 678, in load return [resource.object_from_simplified(data)] File "/usr/share/ceph/mgr/smb/resourcelib.py", line 350, in object_from_simplified value = self._object_field_from_simplified(fld, data) File "/usr/share/ceph/mgr/smb/resourcelib.py", line 394, in _object_field_from_simplified return [ File "/usr/share/ceph/mgr/smb/resourcelib.py", line 395, in self._object_sub_from_simplified(subtype, v) for v in value File "/usr/share/ceph/mgr/smb/resourcelib.py", line 414, in _object_sub_from_simplified return _rconfig.object_from_simplified(data) File "/usr/share/ceph/mgr/smb/resourcelib.py", line 350, in object_from_simplified value = self._object_field_from_simplified(fld, data) File "/usr/share/ceph/mgr/smb/resourcelib.py", line 383, in _object_field_from_simplified inner_type = fld.inner_type() File "/usr/share/ceph/mgr/smb/resourcelib.py", line 243, in inner_type assert len(args) == 1 AssertionError
I will see if I can reproduce the error and file a tracker for the dashboard team to look into.
Trying to do the same on the command line I fail to interpret the documentation or the help text:
smb cluster create <cluster_id> <auth_mode:user|active-directory> [<domain_realm>] [<domain_join_ref>... Create an smb cluster ] [<domain_join_user_pass>...] [<user_group_ref>...] [<define_user_pass>...] [<custom_dns>...] [<placement>] [<clustering:default|always|never>] [<public_addrs>...] [<password_filter:none|base64>] [<password_filter_out:none|base64|hidden>] [--format <value>]
How do I specify the arguments here?
I want to setup local users and groups and some public IP addresses.
For your case it would be something like the following: $ ceph smb cluster create bob user --define-user-pass=bob%Passw0rd1 --define- user-pass=carol%Passw0rd2 --public-addrs=192.168.76.150/24 --public- addrs=192.168.76.151/24 Only the cluster id ("bob" in my example) and the auth type ("user" in this example) are mandatory. You are free to name the cluster what you want though, not just "bob" :-) Everything else we specify with double dashes (like `--define-user-pass`). Arguments that start with `--domain` are for AD mode only and can be ignored for your example. Once you define a cluster you can then define shares, like in the following examples: $ ceph smb share create bob share1 cephfs --subvolume=g1/sv1 --path=/ --share- name="Share One" $ ceph smb share create bob share2 cephfs --path=/some/path/in/cephfs Each share must specify a cluster id and a share id ("bob" and "share1" for example). Then we must specify the cephfs we're using (often named "cephfs" link in this example). Then we can optionally specify subvolume and/or subvolumegroup / subvolume ~ this will automatillcaly resolve the path for you so you do not need to run 'subvolume getpath' commands (unless you want to). Finally --share-name specifies the name of the share that Windows and other SMB clients would see. If left off it will use the share id value as the name. The 2nd example above specifies a path outside of a subvolume in the cephfs and leaves off the --share-name argument.
I have good experience in setting up Samba and CTDB on CephFS but here the docs lack some information.
Thank you for the feedback. I prefer to work with the declarative resource based approach myself so I probably didn't spend enough time on the imperative commands in the docs. In the short term I can certainly make a quick PR that shows some examples and hopefully that clarifies things a bit more.
Regards -- Robert Sander Linux Consultant
Heinlein Consulting GmbH Schwedter Str. 8/9b, 10119 Berlin
https://www.heinlein-support.de
Tel: +49 30 405051 - 0 Fax: +49 30 405051 - 19
Amtsgericht Berlin-Charlottenburg - HRB 220009 B Geschäftsführer: Peer Heinlein - Sitz: Berlin
Hi John, Am 09.12.25 um 5:28 PM schrieb John Mulligan:
For your case it would be something like the following:
$ ceph smb cluster create bob user --define-user-pass=bob%Passw0rd1 --define- user-pass=carol%Passw0rd2 --public-addrs=192.168.76.150/24 --public- addrs=192.168.76.151/24
And see, from the docs or the help output it is not clear that you can specify --public-addrs multiple times. It was totally unclear to me. The dashboard uses a network/cidr approach to assign the public addresses to matching interfaces. The command line seems to use the interface name. Why is that different? Regards -- Robert Sander Linux Consultant Heinlein Consulting GmbH Schwedter Str. 8/9b, 10119 Berlin https://www.heinlein-support.de Tel: +49 30 405051 - 0 Fax: +49 30 405051 - 19 Amtsgericht Berlin-Charlottenburg - HRB 220009 B Geschäftsführer: Peer Heinlein - Sitz: Berlin
On Tuesday, December 9, 2025 11:35:43 AM Eastern Standard Time Robert Sander wrote:
Hi John,
Am 09.12.25 um 5:28 PM schrieb John Mulligan:
For your case it would be something like the following:
$ ceph smb cluster create bob user --define-user-pass=bob%Passw0rd1 --define- user-pass=carol%Passw0rd2 --public-addrs=192.168.76.150/24 --public- addrs=192.168.76.151/24
And see, from the docs or the help output it is not clear that you can specify --public-addrs multiple times. It was totally unclear to me.
I have filed a PR [1]. I have tried to mark all options that can be supplied more than once as such in each items description list.
The dashboard uses a network/cidr approach to assign the public addresses to matching interfaces. The command line seems to use the interface name. Why is that different?
The command line documentation was misleading. Ceph/cephadm generally always identifies by ips/networks. We follow that model. [1] https://github.com/ceph/ceph/pull/66579
Am 09.12.25 um 8:05 PM schrieb John Mulligan: ´
I have filed a PR [1]. I have tried to mark all options that can be supplied more than once as such in each items description list.
Thank you. How is the interface determined where a public address has to be bound to when the cli argument looks like this? --public-address=192.168.76.110/24 BTW: there are IP ranges reserved for documentation: https://datatracker.ietf.org/doc/html/rfc5737 "The blocks 192.0.2.0/24 (TEST-NET-1), 198.51.100.0/24 (TEST-NET-2), and 203.0.113.0/24 (TEST-NET-3) are provided for use in documentation." Regards -- Robert Sander Linux Consultant Heinlein Consulting GmbH Schwedter Str. 8/9b, 10119 Berlin https://www.heinlein-support.de Tel: +49 30 405051 - 0 Fax: +49 30 405051 - 19 Amtsgericht Berlin-Charlottenburg - HRB 220009 B Geschäftsführer: Peer Heinlein - Sitz: Berlin
participants (2)
-
John Mulligan
-
Robert Sander