import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Manages a Bastion Host. * * ## Example Usage * * This example deploys an Azure Bastion Host Instance to a target virtual network. * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as azure from "@pulumi/azure"; * * const example = new azure.core.ResourceGroup("example", { * name: "example-resources", * location: "West Europe", * }); * const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", { * name: "examplevnet", * addressSpaces: ["192.168.1.0/24"], * location: example.location, * resourceGroupName: example.name, * }); * const exampleSubnet = new azure.network.Subnet("example", { * name: "AzureBastionSubnet", * resourceGroupName: example.name, * virtualNetworkName: exampleVirtualNetwork.name, * addressPrefixes: ["192.168.1.224/27"], * }); * const examplePublicIp = new azure.network.PublicIp("example", { * name: "examplepip", * location: example.location, * resourceGroupName: example.name, * allocationMethod: "Static", * sku: "Standard", * }); * const exampleBastionHost = new azure.compute.BastionHost("example", { * name: "examplebastion", * location: example.location, * resourceGroupName: example.name, * ipConfiguration: { * name: "configuration", * subnetId: exampleSubnet.id, * publicIpAddressId: examplePublicIp.id, * }, * }); * ``` * * ## API Providers * * * This resource uses the following Azure API Providers: * * * `Microsoft.Network` - 2025-01-01 * * ## Import * * Bastion Hosts can be imported using the `resource id`, e.g. * * ```sh * $ pulumi import azure:compute/bastionHost:BastionHost example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.Network/bastionHosts/instance1 * ``` */ export declare class BastionHost extends pulumi.CustomResource { /** * Get an existing BastionHost resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input, state?: BastionHostState, opts?: pulumi.CustomResourceOptions): BastionHost; /** * Returns true if the given object is an instance of BastionHost. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is BastionHost; /** * Is Copy/Paste feature enabled for the Bastion Host. Defaults to `true`. */ readonly copyPasteEnabled: pulumi.Output; /** * The FQDN for the Bastion Host. */ readonly dnsName: pulumi.Output; /** * Is File Copy feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `fileCopyEnabled` is only supported when `sku` is `Standard` or `Premium`. */ readonly fileCopyEnabled: pulumi.Output; /** * A `ipConfiguration` block as defined below. Changing this forces a new resource to be created. */ readonly ipConfiguration: pulumi.Output; /** * Is IP Connect feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `ipConnectEnabled` is only supported when `sku` is `Standard` or `Premium`. */ readonly ipConnectEnabled: pulumi.Output; /** * Is Kerberos authentication feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `kerberosEnabled` is only supported when `sku` is `Standard` or `Premium`. */ readonly kerberosEnabled: pulumi.Output; /** * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created. Review [Azure Bastion Host FAQ](https://docs.microsoft.com/azure/bastion/bastion-faq) for supported locations. */ readonly location: pulumi.Output; /** * Specifies the name of the Bastion Host. Changing this forces a new resource to be created. */ readonly name: pulumi.Output; /** * Whether Private-Only deployment is enabled for the Bastion Host. */ readonly privateOnlyEnabled: pulumi.Output; /** * The name of the resource group in which to create the Bastion Host. Changing this forces a new resource to be created. */ readonly resourceGroupName: pulumi.Output; /** * The number of scale units with which to provision the Bastion Host. Possible values are between `2` and `50`. Defaults to `2`. * * > **Note:** `scaleUnits` only can be changed when `sku` is `Standard` or `Premium`. `scaleUnits` is always `2` when `sku` is `Basic`. */ readonly scaleUnits: pulumi.Output; /** * Is Session Recording feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `sessionRecordingEnabled` is only supported when `sku` is `Premium`. */ readonly sessionRecordingEnabled: pulumi.Output; /** * Is Shareable Link feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `shareableLinkEnabled` is only supported when `sku` is `Standard` or `Premium`. */ readonly shareableLinkEnabled: pulumi.Output; /** * The SKU of the Bastion Host. Accepted values are `Developer`, `Basic`, `Standard` and `Premium`. Defaults to `Basic`. * * > **Note:** Downgrading the SKU will force a new resource to be created. */ readonly sku: pulumi.Output; /** * A mapping of tags to assign to the resource. */ readonly tags: pulumi.Output<{ [key: string]: string; } | undefined>; /** * Is Tunneling feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `tunnelingEnabled` is only supported when `sku` is `Standard` or `Premium`. */ readonly tunnelingEnabled: pulumi.Output; /** * The ID of the Virtual Network for the Developer Bastion Host. Changing this forces a new resource to be created. */ readonly virtualNetworkId: pulumi.Output; /** * Specifies a list of Availability Zones in which this Public Bastion Host should be located. Changing this forces a new resource to be created. */ readonly zones: pulumi.Output; /** * Create a BastionHost resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: BastionHostArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering BastionHost resources. */ export interface BastionHostState { /** * Is Copy/Paste feature enabled for the Bastion Host. Defaults to `true`. */ copyPasteEnabled?: pulumi.Input; /** * The FQDN for the Bastion Host. */ dnsName?: pulumi.Input; /** * Is File Copy feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `fileCopyEnabled` is only supported when `sku` is `Standard` or `Premium`. */ fileCopyEnabled?: pulumi.Input; /** * A `ipConfiguration` block as defined below. Changing this forces a new resource to be created. */ ipConfiguration?: pulumi.Input; /** * Is IP Connect feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `ipConnectEnabled` is only supported when `sku` is `Standard` or `Premium`. */ ipConnectEnabled?: pulumi.Input; /** * Is Kerberos authentication feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `kerberosEnabled` is only supported when `sku` is `Standard` or `Premium`. */ kerberosEnabled?: pulumi.Input; /** * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created. Review [Azure Bastion Host FAQ](https://docs.microsoft.com/azure/bastion/bastion-faq) for supported locations. */ location?: pulumi.Input; /** * Specifies the name of the Bastion Host. Changing this forces a new resource to be created. */ name?: pulumi.Input; /** * Whether Private-Only deployment is enabled for the Bastion Host. */ privateOnlyEnabled?: pulumi.Input; /** * The name of the resource group in which to create the Bastion Host. Changing this forces a new resource to be created. */ resourceGroupName?: pulumi.Input; /** * The number of scale units with which to provision the Bastion Host. Possible values are between `2` and `50`. Defaults to `2`. * * > **Note:** `scaleUnits` only can be changed when `sku` is `Standard` or `Premium`. `scaleUnits` is always `2` when `sku` is `Basic`. */ scaleUnits?: pulumi.Input; /** * Is Session Recording feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `sessionRecordingEnabled` is only supported when `sku` is `Premium`. */ sessionRecordingEnabled?: pulumi.Input; /** * Is Shareable Link feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `shareableLinkEnabled` is only supported when `sku` is `Standard` or `Premium`. */ shareableLinkEnabled?: pulumi.Input; /** * The SKU of the Bastion Host. Accepted values are `Developer`, `Basic`, `Standard` and `Premium`. Defaults to `Basic`. * * > **Note:** Downgrading the SKU will force a new resource to be created. */ sku?: pulumi.Input; /** * A mapping of tags to assign to the resource. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Is Tunneling feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `tunnelingEnabled` is only supported when `sku` is `Standard` or `Premium`. */ tunnelingEnabled?: pulumi.Input; /** * The ID of the Virtual Network for the Developer Bastion Host. Changing this forces a new resource to be created. */ virtualNetworkId?: pulumi.Input; /** * Specifies a list of Availability Zones in which this Public Bastion Host should be located. Changing this forces a new resource to be created. */ zones?: pulumi.Input[]>; } /** * The set of arguments for constructing a BastionHost resource. */ export interface BastionHostArgs { /** * Is Copy/Paste feature enabled for the Bastion Host. Defaults to `true`. */ copyPasteEnabled?: pulumi.Input; /** * Is File Copy feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `fileCopyEnabled` is only supported when `sku` is `Standard` or `Premium`. */ fileCopyEnabled?: pulumi.Input; /** * A `ipConfiguration` block as defined below. Changing this forces a new resource to be created. */ ipConfiguration?: pulumi.Input; /** * Is IP Connect feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `ipConnectEnabled` is only supported when `sku` is `Standard` or `Premium`. */ ipConnectEnabled?: pulumi.Input; /** * Is Kerberos authentication feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `kerberosEnabled` is only supported when `sku` is `Standard` or `Premium`. */ kerberosEnabled?: pulumi.Input; /** * Specifies the supported Azure location where the resource exists. Changing this forces a new resource to be created. Review [Azure Bastion Host FAQ](https://docs.microsoft.com/azure/bastion/bastion-faq) for supported locations. */ location?: pulumi.Input; /** * Specifies the name of the Bastion Host. Changing this forces a new resource to be created. */ name?: pulumi.Input; /** * The name of the resource group in which to create the Bastion Host. Changing this forces a new resource to be created. */ resourceGroupName: pulumi.Input; /** * The number of scale units with which to provision the Bastion Host. Possible values are between `2` and `50`. Defaults to `2`. * * > **Note:** `scaleUnits` only can be changed when `sku` is `Standard` or `Premium`. `scaleUnits` is always `2` when `sku` is `Basic`. */ scaleUnits?: pulumi.Input; /** * Is Session Recording feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `sessionRecordingEnabled` is only supported when `sku` is `Premium`. */ sessionRecordingEnabled?: pulumi.Input; /** * Is Shareable Link feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `shareableLinkEnabled` is only supported when `sku` is `Standard` or `Premium`. */ shareableLinkEnabled?: pulumi.Input; /** * The SKU of the Bastion Host. Accepted values are `Developer`, `Basic`, `Standard` and `Premium`. Defaults to `Basic`. * * > **Note:** Downgrading the SKU will force a new resource to be created. */ sku?: pulumi.Input; /** * A mapping of tags to assign to the resource. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Is Tunneling feature enabled for the Bastion Host. Defaults to `false`. * * > **Note:** `tunnelingEnabled` is only supported when `sku` is `Standard` or `Premium`. */ tunnelingEnabled?: pulumi.Input; /** * The ID of the Virtual Network for the Developer Bastion Host. Changing this forces a new resource to be created. */ virtualNetworkId?: pulumi.Input; /** * Specifies a list of Availability Zones in which this Public Bastion Host should be located. Changing this forces a new resource to be created. */ zones?: pulumi.Input[]>; }