github.com/recobe182/terraform@v0.8.5-0.20170117231232-49ab22a935b7/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. If omitted, the `OS_CACERT` environment variable is used. 78 79 * `cert` - (Optional) Specify client certificate file for SSL client 80 authentication. If omitted the `OS_CERT` environment variable is used. 81 82 * `key` - (Optional) Specify client private key file for SSL client 83 authentication. If omitted the `OS_KEY` environment variable is used. 84 85 * `endpoint_type` - (Optional) Specify which type of endpoint to use from the 86 service catalog. It can be set using the OS_ENDPOINT_TYPE environment 87 variable. If not set, public endpoints is used. 88 89 * `swauth` - (Optional) Set to `true` to authenticate against Swauth, a 90 Swift-native authentication system. If omitted, the `OS_SWAUTH` environment 91 variable is used. You must also set `username` to the Swauth/Swift username 92 such as `username:project`. Set the `password` to the Swauth/Swift key. 93 Finally, set `auth_url` as the location of the Swift service. Note that this 94 will only work when used with the OpenStack Object Storage resources. 95 96 ## Rackspace Compatibility 97 98 Using this OpenStack provider with Rackspace is not supported and not 99 guaranteed to work; however, users have reported success with the 100 following notes in mind: 101 102 * Interacting with instances has been seen to work. Interacting with 103 all other resources is either untested or known to not work. 104 105 * Use your _password_ instead of your Rackspace API KEY. 106 107 * Explicitly define the public and private networks in your 108 instances as shown below: 109 110 ``` 111 resource "openstack_compute_instance_v2" "my_instance" { 112 name = "my_instance" 113 region = "DFW" 114 image_id = "fabe045f-43f8-4991-9e6c-5cabd617538c" 115 flavor_id = "general1-4" 116 key_pair = "provisioning_key" 117 118 network { 119 uuid = "00000000-0000-0000-0000-000000000000" 120 name = "public" 121 } 122 123 network { 124 uuid = "11111111-1111-1111-1111-111111111111" 125 name = "private" 126 } 127 } 128 ``` 129 130 If you try using this provider with Rackspace and run into bugs, you 131 are welcomed to open a bug report / issue on Github, but please keep 132 in mind that this is unsupported and the reported bug may not be 133 able to be fixed. 134 135 If you have successfully used this provider with Rackspace and can 136 add any additional comments, please let us know. 137 138 ## Testing and Development 139 140 In order to run the Acceptance Tests for development, the following environment 141 variables must also be set: 142 143 * `OS_REGION_NAME` - The region in which to create the server instance. 144 145 * `OS_IMAGE_ID` or `OS_IMAGE_NAME` - a UUID or name of an existing image in 146 Glance. 147 148 * `OS_FLAVOR_ID` or `OS_FLAVOR_NAME` - an ID or name of an existing flavor. 149 150 * `OS_POOL_NAME` - The name of a Floating IP pool. 151 152 * `OS_NETWORK_ID` - The UUID of a network in your test environment. 153 154 * `OS_EXTGW_ID` - The UUID of the external gateway. 155 156 To make development easier, the `builtin/providers/openstack/devstack/deploy.sh` 157 script will assist in installing and configuring a standardized 158 [DevStack](http://docs.openstack.org/developer/devstack/) environment along with 159 Golang, Terraform, and all development dependencies. It will also set the required 160 environment variables in the `devstack/openrc` file. 161 162 Do not run the `deploy.sh` script on your workstation or any type of production 163 server. Instead, run the script within a disposable virtual machine. 164 [Here's](https://github.com/berendt/terraform-configurations) an example of a 165 Terraform configuration that will create an OpenStack instance and then install and 166 configure DevStack inside.