Ubuntu – Use Juju on top of OpenStack to deploy apps

jujuopenstack

I'd like to create a new cloud in JUJU for OPENSTACK and use that to deploy the Apps on my Instances. In my lab, MAAS, JUJU and OPENSTACK are correctly installed and the instancse works fine.
I've followed this guide but at the end during the bootstrap I receive this error:

ERROR authentication failed.: authentication failed

IP plan:

Network: 10.20.81.0/24
Maas: 10.20.81.1
Juju: 10.20.81.2
Openstack: 10.20.81.21-24
External Gateway: 10.20.81.254
Private Network: 10.1.0.0/24
Instance: 10.1.0.12 - 10.20.81.220 (floating IP)
Private Gateway: 10.1.0.1
Private DHCP service: 10.1.0.10

Network topology:

                          +-------------+
                              Firewall
                            10.20.81.254
                          +-------------+
                                 | 
+-------------------------------------------------------------+
                              Switch 
      vlan81              vlan81                  vlan81
+-------------------------------------------------------------+
        |                   |                   || | | |
+--------------+     +-------------+       +------------------+
|Maas+Juju           |Juju Gui|            |Openstack
|10.20.81.1          |10.20.81.2           |10.20.81.21-24
+--------------+     +-------------+       +------------------+
                                                     |
                                +----------------------------------------+
                                Private Subnet-1           Public Subnet-2
                                 10.1.0.0/24                10.20.81.0/24
                                 +---+----+--+              +---+------+
                                 |   |        +----+            |
                                 |   |     .1 |    |.221        |
                                 |   +--------+ VR +------------+
                                 |            |    |
                                 +--+-+       +----+
                                 |    |
                                 |VM |
                                 |.12 |
                                 |    |
                                 +----+

these commands have being launched on MAAS server, where I've installed juju.

enter image description here

   $:juju add-cloud
    Cloud Types
      lxd
      maas
      manual
      openstack
      vsphere

Select cloud type: openstack
    Enter a name for your openstack cloud: openstack-cloud
    Enter the API endpoint url for the cloud []: http://10.20.81.22:5000/v3
    Enter a path to the CA certificate for your cloud if one is required to access it. (optional) [none]: 
    Auth Types
  access-key
  userpass
    Select one or more auth types separated by commas: userpass
    Enter region name: RegionOne
   Enter the API endpoint url for the region [use cloud api url]: 
    Enter another region? (y/N): n
   Cloud "openstack-cloud" successfully added
    You will need to add credentials for this cloud (`juju add-credential openstack-cloud`)
before creating a controller (`juju bootstrap openstack-cloud`).


$:juju add-credential openstack-cloud
Enter credential name: richardsith
    Using auth-type "userpass".
    Enter username: admin
    Enter password: 
    Enter tenant-name (optional): 
    Enter tenant-id (optional): 
    Enter version (optional): 
    Enter domain-name (optional): 
    Enter project-domain-name (optional): 
    Enter user-domain-name (optional): 
    Credential "admin" added locally for cloud "openstack-cloud".


Maas_$:juju bootstrap openstack-cloud
ERROR authentication failed.: authentication failed
caused by: requesting token failed
caused by: Resource at http://10.20.81.22:5000/v3/tokens not found
caused by: request (http://10.20.81.22:5000/v3/tokens) returned unexpected status: 404; error info: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.</p>

then

Maas_$:juju list-credentials --format yaml --show-secrets
local-credentials:
  maas-cloud:
    richardsith:
      auth-type: oauth1
      maas-oauth: j3GCen9ncJfJQYQ5ZS:ef59sS4XdwhxVPXLSR:TcxGjfyDXS42yj7afbzWrAuhMJtvNWq5
  openstack-cloud:
    richardsith:
      auth-type: userpass
      password: r1ch@rd!
      username: admin

Maas_$:juju show-cloud openstack-cloud
defined: local
type: openstack
description: Openstack Cloud
auth-types: [userpass]
endpoint: http://10.20.81.22:5000/v3
regions:
  RegionOne: {}

opening that url on my browser I've:

enter image description here

Best Answer

I've resolved that filling the credential in this way

$: juju add-credential openstack-cloud
 Enter credential name: openstack_credential
 Using auth-type "userpass".
 Enter username: admin
 Enter password: 
 Enter tenant-name (optional): u1804Pro 
 Enter tenant-id (optional): 
 Enter version (optional): 
 Enter domain-name (optional):
 Enter project-domain-name (optional): u1804Dom 
 Enter user-domain-name (optional): u1804Dom
 Credential "openstack-credential" added locally for cloud "openstack-cloud".

where:

  • u1804Dom is my new domain defined in Openstack
  • u1804Pro my new project defined in Openstack

now I could to lauch the bootstrap withour error

$:juju bootstrap openstack-cloud --bootstrap-series=bionic --config network="Private Network IPv4"  --config external-network="Floating Network IPv4" --config use-floating-ip=true --metadata-source ~/simplestreams/images --debug
Related Question