github.com/nevins-b/terraform@v0.3.8-0.20170215184714-bbae22007d5a/website/source/docs/providers/openstack/index.html.markdown (about)

     1  ---
     2  layout: "openstack"
     3  page_title: "Provider: OpenStack"
     4  sidebar_current: "docs-openstack-index"
     5  description: |-
     6    The OpenStack provider is used to interact with the many resources supported by OpenStack. The provider needs to be configured with the proper credentials before it can be used.
     7  ---
     8  
     9  # OpenStack Provider
    10  
    11  The OpenStack provider is used to interact with the
    12  many resources supported by OpenStack. The provider needs to be configured
    13  with the proper credentials before it can be used.
    14  
    15  Use the navigation to the left to read about the available resources.
    16  
    17  ## Example Usage
    18  
    19  ```
    20  # Configure the OpenStack Provider
    21  provider "openstack" {
    22      user_name  = "admin"
    23      tenant_name = "admin"
    24      password  = "pwd"
    25      auth_url  = "http://myauthurl:5000/v2.0"
    26  }
    27  
    28  # Create a web server
    29  resource "openstack_compute_instance_v2" "test-server" {
    30      ...
    31  }
    32  ```
    33  
    34  ## Configuration Reference
    35  
    36  The following arguments are supported:
    37  
    38  * `auth_url` - (Required) The Identity authentication URL. If omitted, the
    39    `OS_AUTH_URL` environment variable is used.
    40  
    41  * `user_name` - (Optional) The Username to login with. If omitted, the
    42    `OS_USERNAME` environment variable is used.
    43  
    44  * `user_id` - (Optional) The User ID to login with. If omitted, the
    45    `OS_USER_ID` environment variable is used.
    46  
    47  * `tenant_id` - (Optional) The ID of the Tenant (Identity v2) or Project
    48    (Identity v3) to login with. If omitted, the `OS_TENANT_ID` or
    49    `OS_PROJECT_ID` environment variables are used.
    50  
    51  * `tenant_name` - (Optional) The Name of the Tenant (Identity v2) or Project
    52    (Identity v3) to login with. If omitted, the `OS_TENANT_NAME` or
    53    `OS_PROJECT_NAME` environment variable are used.
    54  
    55  * `password` - (Optional) The Password to login with. If omitted, the
    56    `OS_PASSWORD` environment variable is used.
    57  
    58  * `token` - (Optional; Required if not using `user_name` and `password`)
    59    A token is an expiring, temporary means of access issued via the Keystone
    60    service. By specifying a token, you do not have to specify a username/password
    61    combination, since the token was already created by a username/password out of
    62    band of Terraform. If omitted, the `OS_AUTH_TOKEN` environment variable is used.
    63  
    64  * `domain_id` - (Optional) The ID of the Domain to scope to (Identity v3). If
    65    If omitted, the following environment variables are checked (in this order):
    66    `OS_USER_DOMAIN_ID`, `OS_PROJECT_DOMAIN_ID`, `OS_DOMAIN_ID`.
    67  
    68  * `domain_name` - (Optional) The Name of the Domain to scope to (Identity v3).
    69    If omitted, the following environment variables are checked (in this order):
    70    `OS_USER_DOMAIN_NAME`, `OS_PROJECT_DOMAIN_NAME`, `OS_DOMAIN_NAME`,
    71    `DEFAULT_DOMAIN`.
    72  
    73  * `insecure` - (Optional) Trust self-signed SSL certificates. If omitted, the
    74    `OS_INSECURE` environment variable is used.
    75  
    76  * `cacert_file` - (Optional) Specify a custom CA certificate when communicating
    77    over SSL. You can specify either a path to the file or the contents of the
    78    certificate. If omitted, the `OS_CACERT` environment variable is used.
    79  
    80  * `cert` - (Optional) Specify client certificate file for SSL client
    81    authentication. You can specify either a path to the file or the contents of
    82    the certificate. If omitted the `OS_CERT` environment variable is used.
    83  
    84  * `key` - (Optional) Specify client private key file for SSL client
    85    authentication. You can specify either a path to the file or the contents of
    86    the key. If omitted the `OS_KEY` environment variable is used.
    87  
    88  * `endpoint_type` - (Optional) Specify which type of endpoint to use from the
    89    service catalog. It can be set using the OS_ENDPOINT_TYPE environment
    90    variable. If not set, public endpoints is used.
    91  
    92  * `swauth` - (Optional) Set to `true` to authenticate against Swauth, a
    93    Swift-native authentication system. If omitted, the `OS_SWAUTH` environment
    94    variable is used. You must also set `username` to the Swauth/Swift username
    95    such as `username:project`. Set the `password` to the Swauth/Swift key.
    96    Finally, set `auth_url` as the location of the Swift service. Note that this
    97    will only work when used with the OpenStack Object Storage resources.
    98  
    99  ## Rackspace Compatibility
   100  
   101  Using this OpenStack provider with Rackspace is not supported and not
   102  guaranteed to work; however, users have reported success with the
   103  following notes in mind:
   104  
   105  * Interacting with instances has been seen to work. Interacting with
   106  all other resources is either untested or known to not work.
   107  
   108  * Use your _password_ instead of your Rackspace API KEY.
   109  
   110  * Explicitly define the public and private networks in your
   111  instances as shown below:
   112  
   113  ```
   114  resource "openstack_compute_instance_v2" "my_instance" {
   115    name = "my_instance"
   116    region = "DFW"
   117    image_id = "fabe045f-43f8-4991-9e6c-5cabd617538c"
   118    flavor_id = "general1-4"
   119    key_pair = "provisioning_key"
   120  
   121    network {
   122      uuid = "00000000-0000-0000-0000-000000000000"
   123      name = "public"
   124    }
   125  
   126    network {
   127      uuid = "11111111-1111-1111-1111-111111111111"
   128      name = "private"
   129    }
   130  }
   131  ```
   132  
   133  If you try using this provider with Rackspace and run into bugs, you
   134  are welcomed to open a bug report / issue on Github, but please keep
   135  in mind that this is unsupported and the reported bug may not be
   136  able to be fixed.
   137  
   138  If you have successfully used this provider with Rackspace and can
   139  add any additional comments, please let us know.
   140  
   141  ## Testing and Development
   142  
   143  In order to run the Acceptance Tests for development, the following environment
   144  variables must also be set:
   145  
   146  * `OS_REGION_NAME` - The region in which to create the server instance.
   147  
   148  * `OS_IMAGE_ID` or `OS_IMAGE_NAME` - a UUID or name of an existing image in
   149      Glance.
   150  
   151  * `OS_FLAVOR_ID` or `OS_FLAVOR_NAME` - an ID or name of an existing flavor.
   152  
   153  * `OS_POOL_NAME` - The name of a Floating IP pool.
   154  
   155  * `OS_NETWORK_ID` - The UUID of a network in your test environment.
   156  
   157  * `OS_EXTGW_ID` - The UUID of the external gateway.
   158  
   159  To make development easier, the `builtin/providers/openstack/devstack/deploy.sh`
   160  script will assist in installing and configuring a standardized
   161  [DevStack](http://docs.openstack.org/developer/devstack/) environment along with
   162  Golang, Terraform, and all development dependencies. It will also set the required
   163  environment variables in the `devstack/openrc` file.
   164  
   165  Do not run the `deploy.sh` script on your workstation or any type of production
   166  server. Instead, run the script within a disposable virtual machine.
   167  [Here's](https://github.com/berendt/terraform-configurations) an example of a
   168  Terraform configuration that will create an OpenStack instance and then install and
   169  configure DevStack inside.