I am dealing with a strange situation in configuring a Pulumi deployment in order to maintain a IaC for an OpenStack environment.
The deployment is very simple as below, I started from Python:
import pulumi
from pulumi_openstack import compute
instance = compute.Instance('VMTEST', flavor_id='small', image_name='image-in-openstack')
The YAML file is apparently set up correctly:
config:
openstack:authUrl: https://10.1.1.10:5000/v3/auth
openstack:domainName: Customer001
openstack:userName: user001
openstack:password:
secure: AAAB********** OMISSIS ***********eTrT
openstack:insecure: true
pulumi:template: openstack-python
When I run the Pulumi environment, it gives me this message:
openstack:compute:Instance (test):
error: 1 error occurred:
* Error creating OpenStack compute client: You must provide exactly one of DomainID or DomainName to authenticate by Username
even though the DomainName parameter is at least present in YAML file.
Even trying to set up the DomainId parameter, the behaviour is the same.
Searching through the Openstack provider documentation for Pulumi, there is no evidence of any kind of related additional configurations to be done.
After searching through the web and trying against the YAML configuration combinations, I realized there were two kinds of problems:
1. YAML parameters
Firstly, domainName parameter had to be projectDomainName instead. Secondly, the tenantName parameter must be set up.
Here is the working YAML used:
config:
openstack:authUrl: https://10.1.1.10:5000/v3/auth
openstack:insecure: true
openstack:password:
secure: AAAB ********* OMISSIS *********** 5jF7
openstack:projectDomainName: Default
openstack:tenantName: Test
openstack:userName: test
pulumi:template: openstack-python
2. OpenStack account with special-characters password
As absurd as it may sound, the OpenStack account's password had special characters (@ or &) that did not allow Pulumi to authenticate correctly.
Trying with a different brand-new account with alphanumeric password, authentication passed.