zpa.PRACredential
Explore with Pulumi AI
The zpa_pra_credential_controller resource creates a privileged remote access credential in the Zscaler Private Access cloud. This resource can then be referenced in an privileged access policy resource.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as zpa from "@bdzscaler/pulumi-zpa";
// Creates Credential of Type "USERNAME_PASSWORD"
const _this = new zpa.PRACredential("this", {
credentialType: "USERNAME_PASSWORD",
description: "Created with Terraform",
password: "",
userDomain: "acme.com",
username: "jdoe",
});
import pulumi
import zscaler_pulumi_zpa as zpa
# Creates Credential of Type "USERNAME_PASSWORD"
this = zpa.PRACredential("this",
credential_type="USERNAME_PASSWORD",
description="Created with Terraform",
password="",
user_domain="acme.com",
username="jdoe")
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/zscaler/pulumi-zpa/sdk/go/zpa"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Creates Credential of Type "USERNAME_PASSWORD"
_, err := zpa.NewPRACredential(ctx, "this", &zpa.PRACredentialArgs{
CredentialType: pulumi.String("USERNAME_PASSWORD"),
Description: pulumi.String("Created with Terraform"),
Password: pulumi.String(""),
UserDomain: pulumi.String("acme.com"),
Username: pulumi.String("jdoe"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Zpa = Zscaler.Zpa;
return await Deployment.RunAsync(() =>
{
// Creates Credential of Type "USERNAME_PASSWORD"
var @this = new Zpa.PRACredential("this", new()
{
CredentialType = "USERNAME_PASSWORD",
Description = "Created with Terraform",
Password = "",
UserDomain = "acme.com",
Username = "jdoe",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.zpa.PRACredential;
import com.pulumi.zpa.PRACredentialArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Creates Credential of Type "USERNAME_PASSWORD"
var this_ = new PRACredential("this", PRACredentialArgs.builder()
.credentialType("USERNAME_PASSWORD")
.description("Created with Terraform")
.password("")
.userDomain("acme.com")
.username("jdoe")
.build());
}
}
resources:
# Creates Credential of Type "USERNAME_PASSWORD"
this:
type: zpa:PRACredential
properties:
credentialType: USERNAME_PASSWORD
description: Created with Terraform
password:
userDomain: acme.com
username: jdoe
import * as pulumi from "@pulumi/pulumi";
import * as zpa from "@bdzscaler/pulumi-zpa";
// Creates Credential of Type "SSH_KEY"
const _this = new zpa.PRACredential("this", {
credentialType: "SSH_KEY",
description: "Created with Terraform",
privateKey: `-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDEjc8pPoobS0l6
KjldVtViVwqCTXZZOjHnmEIMn+XKU3sEYlqDKLp6TByIsBlITKd3Ju8qMBNwXcfi
-----END PRIVATE KEY-----
`,
userDomain: "acme.com",
username: "jdoe",
});
import pulumi
import zscaler_pulumi_zpa as zpa
# Creates Credential of Type "SSH_KEY"
this = zpa.PRACredential("this",
credential_type="SSH_KEY",
description="Created with Terraform",
private_key="""-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDEjc8pPoobS0l6
KjldVtViVwqCTXZZOjHnmEIMn+XKU3sEYlqDKLp6TByIsBlITKd3Ju8qMBNwXcfi
-----END PRIVATE KEY-----
""",
user_domain="acme.com",
username="jdoe")
package main
import (
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/zscaler/pulumi-zpa/sdk/go/zpa"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Creates Credential of Type "SSH_KEY"
_, err := zpa.NewPRACredential(ctx, "this", &zpa.PRACredentialArgs{
CredentialType: pulumi.String("SSH_KEY"),
Description: pulumi.String("Created with Terraform"),
PrivateKey: pulumi.String(`-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDEjc8pPoobS0l6
KjldVtViVwqCTXZZOjHnmEIMn+XKU3sEYlqDKLp6TByIsBlITKd3Ju8qMBNwXcfi
-----END PRIVATE KEY-----
`),
UserDomain: pulumi.String("acme.com"),
Username: pulumi.String("jdoe"),
})
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Zpa = Zscaler.Zpa;
return await Deployment.RunAsync(() =>
{
// Creates Credential of Type "SSH_KEY"
var @this = new Zpa.PRACredential("this", new()
{
CredentialType = "SSH_KEY",
Description = "Created with Terraform",
PrivateKey = @"-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDEjc8pPoobS0l6
KjldVtViVwqCTXZZOjHnmEIMn+XKU3sEYlqDKLp6TByIsBlITKd3Ju8qMBNwXcfi
-----END PRIVATE KEY-----
",
UserDomain = "acme.com",
Username = "jdoe",
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.zpa.PRACredential;
import com.pulumi.zpa.PRACredentialArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
// Creates Credential of Type "SSH_KEY"
var this_ = new PRACredential("this", PRACredentialArgs.builder()
.credentialType("SSH_KEY")
.description("Created with Terraform")
.privateKey("""
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDEjc8pPoobS0l6
KjldVtViVwqCTXZZOjHnmEIMn+XKU3sEYlqDKLp6TByIsBlITKd3Ju8qMBNwXcfi
-----END PRIVATE KEY-----
""")
.userDomain("acme.com")
.username("jdoe")
.build());
}
}
resources:
# Creates Credential of Type "SSH_KEY"
this:
type: zpa:PRACredential
properties:
credentialType: SSH_KEY
description: Created with Terraform
privateKey: |+
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDEjc8pPoobS0l6
KjldVtViVwqCTXZZOjHnmEIMn+XKU3sEYlqDKLp6TByIsBlITKd3Ju8qMBNwXcfi
-----END PRIVATE KEY-----
userDomain: acme.com
username: jdoe
Create PRACredential Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new PRACredential(name: string, args?: PRACredentialArgs, opts?: CustomResourceOptions);
@overload
def PRACredential(resource_name: str,
args: Optional[PRACredentialArgs] = None,
opts: Optional[ResourceOptions] = None)
@overload
def PRACredential(resource_name: str,
opts: Optional[ResourceOptions] = None,
credential_type: Optional[str] = None,
description: Optional[str] = None,
microtenant_id: Optional[str] = None,
name: Optional[str] = None,
passphrase: Optional[str] = None,
password: Optional[str] = None,
private_key: Optional[str] = None,
user_domain: Optional[str] = None,
username: Optional[str] = None)
func NewPRACredential(ctx *Context, name string, args *PRACredentialArgs, opts ...ResourceOption) (*PRACredential, error)
public PRACredential(string name, PRACredentialArgs? args = null, CustomResourceOptions? opts = null)
public PRACredential(String name, PRACredentialArgs args)
public PRACredential(String name, PRACredentialArgs args, CustomResourceOptions options)
type: zpa:PRACredential
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args PRACredentialArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args PRACredentialArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args PRACredentialArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args PRACredentialArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args PRACredentialArgs
- The arguments to resource properties.
- options CustomResourceOptions
- Bag of options to control resource's behavior.
Constructor example
The following reference example uses placeholder values for all input properties.
var pracredentialResource = new Zpa.PRACredential("pracredentialResource", new()
{
CredentialType = "string",
Description = "string",
MicrotenantId = "string",
Name = "string",
Passphrase = "string",
Password = "string",
PrivateKey = "string",
UserDomain = "string",
Username = "string",
});
example, err := zpa.NewPRACredential(ctx, "pracredentialResource", &zpa.PRACredentialArgs{
CredentialType: pulumi.String("string"),
Description: pulumi.String("string"),
MicrotenantId: pulumi.String("string"),
Name: pulumi.String("string"),
Passphrase: pulumi.String("string"),
Password: pulumi.String("string"),
PrivateKey: pulumi.String("string"),
UserDomain: pulumi.String("string"),
Username: pulumi.String("string"),
})
var pracredentialResource = new PRACredential("pracredentialResource", PRACredentialArgs.builder()
.credentialType("string")
.description("string")
.microtenantId("string")
.name("string")
.passphrase("string")
.password("string")
.privateKey("string")
.userDomain("string")
.username("string")
.build());
pracredential_resource = zpa.PRACredential("pracredentialResource",
credential_type="string",
description="string",
microtenant_id="string",
name="string",
passphrase="string",
password="string",
private_key="string",
user_domain="string",
username="string")
const pracredentialResource = new zpa.PRACredential("pracredentialResource", {
credentialType: "string",
description: "string",
microtenantId: "string",
name: "string",
passphrase: "string",
password: "string",
privateKey: "string",
userDomain: "string",
username: "string",
});
type: zpa:PRACredential
properties:
credentialType: string
description: string
microtenantId: string
name: string
passphrase: string
password: string
privateKey: string
userDomain: string
username: string
PRACredential Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
The PRACredential resource accepts the following input properties:
- Credential
Type string - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- Description string
- The description of the privileged credential
- Microtenant
Id string - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- Name string
- The name of the privileged credential
- Passphrase string
- The password that is used to protect the SSH private key. This field is optional
- Password string
- The password associated with the username for the login you want to use for the privileged credential
- Private
Key string - The SSH private key associated with the username for the login you want to use for the privileged credential
- User
Domain string - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- Username string
- The username for the login you want to use for the privileged credential
- Credential
Type string - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- Description string
- The description of the privileged credential
- Microtenant
Id string - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- Name string
- The name of the privileged credential
- Passphrase string
- The password that is used to protect the SSH private key. This field is optional
- Password string
- The password associated with the username for the login you want to use for the privileged credential
- Private
Key string - The SSH private key associated with the username for the login you want to use for the privileged credential
- User
Domain string - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- Username string
- The username for the login you want to use for the privileged credential
- credential
Type String - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- description String
- The description of the privileged credential
- microtenant
Id String - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- name String
- The name of the privileged credential
- passphrase String
- The password that is used to protect the SSH private key. This field is optional
- password String
- The password associated with the username for the login you want to use for the privileged credential
- private
Key String - The SSH private key associated with the username for the login you want to use for the privileged credential
- user
Domain String - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- username String
- The username for the login you want to use for the privileged credential
- credential
Type string - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- description string
- The description of the privileged credential
- microtenant
Id string - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- name string
- The name of the privileged credential
- passphrase string
- The password that is used to protect the SSH private key. This field is optional
- password string
- The password associated with the username for the login you want to use for the privileged credential
- private
Key string - The SSH private key associated with the username for the login you want to use for the privileged credential
- user
Domain string - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- username string
- The username for the login you want to use for the privileged credential
- credential_
type str - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- description str
- The description of the privileged credential
- microtenant_
id str - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- name str
- The name of the privileged credential
- passphrase str
- The password that is used to protect the SSH private key. This field is optional
- password str
- The password associated with the username for the login you want to use for the privileged credential
- private_
key str - The SSH private key associated with the username for the login you want to use for the privileged credential
- user_
domain str - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- username str
- The username for the login you want to use for the privileged credential
- credential
Type String - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- description String
- The description of the privileged credential
- microtenant
Id String - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- name String
- The name of the privileged credential
- passphrase String
- The password that is used to protect the SSH private key. This field is optional
- password String
- The password associated with the username for the login you want to use for the privileged credential
- private
Key String - The SSH private key associated with the username for the login you want to use for the privileged credential
- user
Domain String - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- username String
- The username for the login you want to use for the privileged credential
Outputs
All input properties are implicitly available as output properties. Additionally, the PRACredential resource produces the following output properties:
- Id string
- The provider-assigned unique ID for this managed resource.
- Id string
- The provider-assigned unique ID for this managed resource.
- id String
- The provider-assigned unique ID for this managed resource.
- id string
- The provider-assigned unique ID for this managed resource.
- id str
- The provider-assigned unique ID for this managed resource.
- id String
- The provider-assigned unique ID for this managed resource.
Look up Existing PRACredential Resource
Get an existing PRACredential resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
public static get(name: string, id: Input<ID>, state?: PRACredentialState, opts?: CustomResourceOptions): PRACredential
@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
credential_type: Optional[str] = None,
description: Optional[str] = None,
microtenant_id: Optional[str] = None,
name: Optional[str] = None,
passphrase: Optional[str] = None,
password: Optional[str] = None,
private_key: Optional[str] = None,
user_domain: Optional[str] = None,
username: Optional[str] = None) -> PRACredential
func GetPRACredential(ctx *Context, name string, id IDInput, state *PRACredentialState, opts ...ResourceOption) (*PRACredential, error)
public static PRACredential Get(string name, Input<string> id, PRACredentialState? state, CustomResourceOptions? opts = null)
public static PRACredential get(String name, Output<String> id, PRACredentialState state, CustomResourceOptions options)
Resource lookup is not supported in YAML
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- resource_name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- Credential
Type string - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- Description string
- The description of the privileged credential
- Microtenant
Id string - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- Name string
- The name of the privileged credential
- Passphrase string
- The password that is used to protect the SSH private key. This field is optional
- Password string
- The password associated with the username for the login you want to use for the privileged credential
- Private
Key string - The SSH private key associated with the username for the login you want to use for the privileged credential
- User
Domain string - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- Username string
- The username for the login you want to use for the privileged credential
- Credential
Type string - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- Description string
- The description of the privileged credential
- Microtenant
Id string - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- Name string
- The name of the privileged credential
- Passphrase string
- The password that is used to protect the SSH private key. This field is optional
- Password string
- The password associated with the username for the login you want to use for the privileged credential
- Private
Key string - The SSH private key associated with the username for the login you want to use for the privileged credential
- User
Domain string - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- Username string
- The username for the login you want to use for the privileged credential
- credential
Type String - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- description String
- The description of the privileged credential
- microtenant
Id String - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- name String
- The name of the privileged credential
- passphrase String
- The password that is used to protect the SSH private key. This field is optional
- password String
- The password associated with the username for the login you want to use for the privileged credential
- private
Key String - The SSH private key associated with the username for the login you want to use for the privileged credential
- user
Domain String - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- username String
- The username for the login you want to use for the privileged credential
- credential
Type string - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- description string
- The description of the privileged credential
- microtenant
Id string - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- name string
- The name of the privileged credential
- passphrase string
- The password that is used to protect the SSH private key. This field is optional
- password string
- The password associated with the username for the login you want to use for the privileged credential
- private
Key string - The SSH private key associated with the username for the login you want to use for the privileged credential
- user
Domain string - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- username string
- The username for the login you want to use for the privileged credential
- credential_
type str - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- description str
- The description of the privileged credential
- microtenant_
id str - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- name str
- The name of the privileged credential
- passphrase str
- The password that is used to protect the SSH private key. This field is optional
- password str
- The password associated with the username for the login you want to use for the privileged credential
- private_
key str - The SSH private key associated with the username for the login you want to use for the privileged credential
- user_
domain str - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- username str
- The username for the login you want to use for the privileged credential
- credential
Type String - The protocol type that was designated for that particular privileged credential. The protocol type options are SSH, RDP, and VNC. Each protocol type has its own credential requirements.
- description String
- The description of the privileged credential
- microtenant
Id String - The unique identifier of the Microtenant for the ZPA tenant. If you are within the Default Microtenant, pass microtenantId as 0 when making requests to retrieve data from the Default Microtenant.
- name String
- The name of the privileged credential
- passphrase String
- The password that is used to protect the SSH private key. This field is optional
- password String
- The password associated with the username for the login you want to use for the privileged credential
- private
Key String - The SSH private key associated with the username for the login you want to use for the privileged credential
- user
Domain String - The domain name associated with the username. The domain name only needs to be specified with logging in to an RDP console that is connected to an Active Directory Domain
- username String
- The username for the login you want to use for the privileged credential
Import
Zscaler offers a dedicated tool called Zscaler-Terraformer to allow the automated import of ZPA configurations into Terraform-compliant HashiCorp Configuration Language.
Visit
pra_credential_controller can be imported by using <CREDENTIAL ID>
or <CREDENTIAL NAME>
as the import ID.
For example:
$ pulumi import zpa:index/pRACredential:PRACredential this <credential_id>
or
$ pulumi import zpa:index/pRACredential:PRACredential this <credential_name>
To learn more about importing existing cloud resources, see Importing resources.
Package Details
- Repository
- zpa zscaler/pulumi-zpa
- License
- MIT
- Notes
- This Pulumi package is based on the
zpa
Terraform Provider.