You can deploy OpenStack by using the OpenStack Management Server API.

For more information about APIs, see the VMware Integrated OpenStack API reference at VMware {code}.

Prerequisites

  • Prepare your networks and vCenter Server environment. See Preparing Your Environment.
  • Install VMware Integrated OpenStack on your vCenter Server instance. See Install VMware Integrated OpenStack.
  • Verify that all required clusters and datastores are available.
    • Clusters must include the required number of hosts and datastores and must not be consumed by another node.
    • Datastores must be mounted to the correct cluster and must not be already configured.
  • Verify that the DNS server is set correctly and that the network gateway or firewall forwards DNS requests on private networks.

Procedure

  1. In the vSphere Client, select Menu > VMware Integrated OpenStack.
  2. Under Basic Tasks, click Connect to an OpenStack management server.
  3. Select the OpenStack Management Server and click OK.
  4. Using an HTTP client, authenticate with the OpenStack Management Server API endpoint using the administrator credentials for your vCenter Server instance.
    This procedure uses cURL as an example.
    curl -X POST https://mgmt-server-ip:8443/login -d "username=vcenter-user&password=vcenter-password" -v
  5. Deploy OpenStack with your specifications.
    curl -X POST https://mgmt-server-ip:8443/v1/clusters -b JSESSIONID=session-id -d "{specifications}"

    The value of JSESSIONID is displayed in the output from Step 1.

    The schema is as follows:

    {
      "attributes": {},
      "deployment_type": "{LARGE | SINGLEVM | TINY}",
      "management_cluster": {
        "moid": "mgmt-cluster-moid",
        "name": "mgmt-cluster-name"
      },
      "name": "deployment-name",
      "network_mapping": {
        "data_network": "api-access-network-name",
        "external_network": "external-network-name",
        "management_network": "mgmt-network-name",
        "metadata_network": "metadata-network-name"
      },
      "networkings": [
        {
          "dns1": "dns-server-ip1",
          "dns2": "dns-server-ip2",
          "gateway": "gateway-ip",
          "ip_blocks": [
            {
              "begin_ip": "ip-range-start",
              "end_ip": "ip-range-end"
            }
          ],
          "name": "network-name",
          "netmask": "subnet-mask",
          "portgroup_moref": "port-group-moid",
          "portgroup_name": "port-group-name"
        }
      ],
      "openstack_info": {
        "attributes": {},
        "availability_zones": [
          {
            "attributes": {},
            "name": "az-name"
          }
        ],
        "compute": {
          "attributes": {},
          "compute_clusters": [
            {
              "attributes": {},
              "availability_zone_name": "compute-cluster-az",
              "cluster_moid": "compute-cluster-moid",
              "cluster_name": "compute-cluster-name",
              "datastore_regex": "compute-datastores",
              "esxi_netmask": "host-subnet-mask",
              "vcenter_ip": "compute-vcserver-ip"
            }
          ]
        },
        "identity": {
          "ad_domains": [
            {
              "attributes": {},
              "bind_password": "ldap-ad-user-password",
              "bind_user": "ldap-ad-user",
              "force_ldaps": {true | false},
              "ldap_admin_user": "ldap-admin",
              "ldap_certificates": [
                "cert-content"
              ],
              "ldap_group_desc_attribute": "group-description",
              "ldap_group_filter": "group-search-filter",
              "ldap_group_id_attribute": "group-id",
              "ldap_group_member_attribute": "group-member",
              "ldap_group_name_attribute": "group-name",
              "ldap_group_objectclass": "group-object-class",
              "ldap_group_tree_dn": "group-tree-dn",
              "ldap_search_scope": "search-scope",
              "ldap_url": "ldap-url",
              "ldap_use_start_tls": {true | false},
              "ldap_user_enabled_attribute": "enabled-attribute",
              "ldap_user_filter": "user-search-filter",
              "ldap_user_id_attribute": "user-id",
              "ldap_user_mail_attribute": "user-email",
              "ldap_user_name_attribute": "user-name",
              "ldap_user_objectclass": "user-object-class",
              "ldap_user_pass_attribute": "user-password",
              "ldap_user_tree_dn": "user-tree-dn"
            }
          ],
          "admin_project_name": "admin-project-name",
          "attributes": {},
          "sql_domain": {
            "admin_password": "admin-password",
            "admin_user": "admin-username",
            "attributes": {}
          },
          "token_expiration_time": "token-expiration-seconds"
        },
        "image": {
          "datastores": [
            {
              "datastores": "glance-datastore",
              "vcenter_ip": "glance-vcserver-ip"
            }
          ],
          "glance_folder": "image-folder"	
        },
        "network": {
          "attributes": {},
          "dvs": {},
          "neutron_backend": "{DVS | NSXV | NSXV3}",
          "nsxv": {
            "nsxv_dvs_moref": "nsxv-vds-moid",
            "nsxv_dvs_name": "nsxv-vds-name",
            "nsxv_edge_cluster_moref": "edge-cluster-moid",
            "nsxv_edge_cluster_name": "edge-cluster-name",
            "nsxv_edge_ha": "{TRUE | FALSE}",
            "nsxv_exclusive_router_appliance_size": "string",
            "nsxv_external_network_name": "external-network-name",
            "nsxv_manager": "nsx-manager-ip",
            "nsxv_password": "nsx-manager-password",
            "nsxv_username": "nsx-manager-username",
            "nsxv_vdn_scope_moref": "vdn-scope-moid"
          },
          "nsxv3": {
            "nsxv3_api_managers": "nsx-manager-ip",
            "nsxv3_api_password": "nsx-manager-password",
            "nsxv3_api_username": "nsx-manager-username",
            "nsxv3_default_overlay_tz": "nsx-overlay-zone",
            "nsxv3_default_tier0_router": "t0-router",
            "nsxv3_default_vlan_tz": "nsx-vlan-zone",
            "nsxv3_edge_cluster_name": "edge-cluster-name",
            "nsxv3_edge_cluster_uuid": "edge-cluster-uuid",
            "nsxv3_md_shared_password": "metadata-proxy-secret",
            "nsxv3_native_dhcp_profile": "dhcp-profile",
            "nsxv3_native_dhcp_profile_oms_create": "{true | false}",
            "nsxv3_native_md_proxy": "metadata-proxy-ip"
            "nsxv3_native_md_proxy_oms_create": "{true | false}"
          }
        },
        "region_name": "openstack-region",
        "syslog": {
          "port": "port-number",
          "protocol": "{UDP | TCP}",
          "server": "syslog-server-ip",
          "tag": "string"
        },
        "vcenter_insecure": "{true | false}",
        "volumn": {
          "attributes": {},
          "cinder_folder": "cinder-folder"
        }
      },
      "public_access": {
        "public_hostname": "public-api-hostname",
        "public_vip": "public-api-vip"
      },
      "root_ca_certificates": [
        "root-ca-content"
      ],
      "vcenters": [
        {
          "attributes": {},
          "hostname": "vcserver-hostname",
          "password": "vcserver-admin-password",
          "username": "vcserver-admin-user"
        }
      ],
      "version": "v1"
    }
     

     

     

     

     

     

    deployment_type: Enter LARGE for an HA deployment, SINGLEVM for a compact deployment, or TINY for a tiny deployment.

     

     

     

     

     

     

     

     

     

     

     

    networkings: Create a copy of the contents of the networkings section for each network that you want to configure. Ensure that the value of the name parameter for each network is the name of the corresponding network in the network_mapping section.

     

     

     

     

     

     

     

     

     

     

    netmask: Enter the value of netmask as a network address (for example, 255.255.255.0).

     

     

     

     

     

     

    availability_zones: Create a copy of the contents of the availability_zones section for each availability zone that you want to create.

     

     

     

     

     

    compute_clusters: Create a copy of the contents of the compute_clusters section for each compute cluster that you want to configure.

    To specify a datastore cluster for a compute cluster to consume, include the following parameter inside the attributes section: "nova_datastore_cluster": "ds-cluster-name"

     

     

    datastore_regex: You can enter a regular expression to add all matching datastores.

     

     

     

     

    Important: Configuring an LDAP domain is optional. If you configure an LDAP domain through this API, you cannot specify additional LDAP domains later. To use multiple LDAP domains in your deployment, configure the domains after deploying OpenStack.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    neutron_backend: Enter DVS for VDS networking, NSXV for NSX Data Center for vSphere networking, or NSXV3 for NSX-T Data Center networking.

     

    The fields in the nsxv section apply only to deployments with NSX Data Center for vSphere networking. The fields in the nsxv3 section apply only to deployments with NSX-T Data Center networking. The values of these fields will be ignored in other deployments.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    nsxv3_native_dhcp_profile_oms_create: Enter true to automatically generate a DHCP profile for OpenStack. The nsxv3_native_dhcp_profile parameter will then be ignored.

    nsxv3_native_md_proxy_oms_create: Enter true to automatically generate a metadata proxy server for OpenStack. The nsxv3_native_md_proxy parameter will then be ignored.

     

     

     

     

     

     

     

     

    Note: To specify a datastore cluster for block storage to consume, include the following parameters inside the attributes section under volumn:
    "cinder_vmware_datastore_cluster": "ds-cluster-name",
    "cinder_vmware_sdrs_default_cluster_name": "compute-cluster-name"

    Set the value of cinder_vmware_datastore_cluster to the datastore cluster that you want to use for block storage. Set the value of cinder_vmware_sdrs_default_cluster_name to the compute cluster used to create raw Cinder volumes.

What to do next

Assign the VMware Integrated OpenStack License Key