Description
Describe the bug
I'm trying to deploy Spectrum Scale enabling Object protocols. The installation eventually succeeds, but the resulting configuration differs from what I've defined in my variables.
i.e. I'm defining a scale_ces_obj.endpoint_hostname
(consistent with the sample):
scale_ces_obj:
endpoint_hostname: "my-cluster-hostname"
However, after installation the configuration includes the following, incorrect, cluster hostname (which seems to be the hostname of my first Object protocol node):
# mmobj config list --ccrfile spectrum-scale-object.conf --section swift-config
[swift-config]
endpoint_hostname = p1212-kvm1
Setting a different swift endpoint hostname than the one that clients use to connect (CES IP) causes authentication to fail, as in this example:
# swift stat
HTTPConnectionPool(host='p1212-kvm1', port=8080): Max retries exceeded with url: /v1/AUTH_3cb...17f (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f0a1c13a970>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))
Looking at the code, I see that in fact the endpoint_hostname
variable isn't being used for the mmobj --cluster-hostname
command: https://github.com/IBM/ibm-spectrum-scale-install-infra/blob/nextgen/roles/obj_configure/tasks/configure.yml#L51
To Reproduce
Here are the roles I'm running:
- ibm.spectrum_scale.core_prepare
- ibm.spectrum_scale.core_install
- ibm.spectrum_scale.core_configure
- ibm.spectrum_scale.core_verify
- ibm.spectrum_scale.gui_prepare
- ibm.spectrum_scale.gui_install
- ibm.spectrum_scale.gui_configure
- ibm.spectrum_scale.gui_verify
- ibm.spectrum_scale.obj_prepare
- ibm.spectrum_scale.obj_install
- ibm.spectrum_scale.obj_configure
- ibm.spectrum_scale.obj_verify
Here are (the relevant) variables I'm defining:
scale_protocols:
smb: true
nfs: true
object: true
scale_ces_obj:
enable_s3: false
local_keystone: true
enable_file_access: false
endpoint_hostname: "my-cluster-hostname"
object_fileset: object_fileset
pwd_file: obj_passwd.j2
admin_user: admin
admin_pwd: ***
database_pwd: ***
Expected behavior
I need to be able to control the cluster hostname. Based on the documentation it needs to be defined as:
host name that is used to return one of the CES IP addresses
Environment
ansible 2.9.27
python 3.9.7
GPFS 5.1.2.0 (ppc64LE)