--- layout: "" page_title: "Provider: Unifi" description: |- The Unifi provider provides resources to interact with a Unifi controller API. --- # Unifi Provider The Unifi provider provides resources to interact with a Unifi controller API. It is not recommended to use your own account for management of your controller. A user specific to Terraform is recommended. You can create a **Limited Admin** with **Local Access Only** and provide that information for authentication. Two-factor authentication is not supported in the provider. It is recommended to use API Key authentication, if you are on controller version 9.0.108 or higher. ## Example Usage ```terraform provider "unifi" { api_key = var.api_key # optionally use UNIFI_API_KEY env var username = var.username # optionally use UNIFI_USERNAME env var password = var.password # optionally use UNIFI_PASSWORD env var api_url = var.api_url # optionally use UNIFI_API env var # you may need to allow insecure TLS communications unless you have configured # certificates for your controller allow_insecure = var.insecure # optionally use UNIFI_INSECURE env var # if you are not configuring the default site, you can change the site # site = "foo" or optionally use UNIFI_SITE env var } ``` ### Obtaining an API Key 1. Open your Site in UniFi Site Manager 2. Click on Control Plane -> Admins & Users. 3. Select your Admin user. 4. Click Create API Key. 5. Add a name for your API Key. 6. Copy the key and store it securely, as it will only be displayed once. 7. Click Done to ensure the key is hashed and securely stored. 8. Use the API Key 🎉 ## Schema ### Optional - `allow_insecure` (Boolean) Skip verification of TLS certificates of API requests. You may need to set this to `true` if you are using your local API without setting up a signed certificate. Can be specified with the `UNIFI_INSECURE` environment variable. - `api_key` (String) API key for the user accessing the API. Can be specified with the `UNIFI_API_KEY` environment variable. Requires controller version 9.0.108 or higher and `username` and `password` to be empty - `api_url` (String) URL of the controller API. Can be specified with the `UNIFI_API` environment variable. You should **NOT** supply the path (`/api`), the SDK will discover the appropriate paths. This is to support UDM Pro style API paths as well as more standard controller paths. - `password` (String) Password for the user accessing the API. Can be specified with the `UNIFI_PASSWORD` environment variable. - `site` (String) The site in the Unifi controller this provider will manage. Can be specified with the `UNIFI_SITE` environment variable. Default: `default` - `username` (String) Local user name for the Unifi controller API. Can be specified with the `UNIFI_USERNAME` environment variable.