import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
* Manages the configuration for a Nginx Deployment.
*
* ## Example Usage
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as azure from "@pulumi/azure";
* import * as std from "@pulumi/std";
*
* const example = new azure.core.ResourceGroup("example", {
* name: "example-rg",
* location: "West Europe",
* });
* const examplePublicIp = new azure.network.PublicIp("example", {
* name: "example",
* resourceGroupName: example.name,
* location: example.location,
* allocationMethod: "Static",
* sku: "Standard",
* tags: {
* environment: "Production",
* },
* });
* const exampleVirtualNetwork = new azure.network.VirtualNetwork("example", {
* name: "example-vnet",
* addressSpaces: ["10.0.0.0/16"],
* location: example.location,
* resourceGroupName: example.name,
* });
* const exampleSubnet = new azure.network.Subnet("example", {
* name: "example-subnet",
* resourceGroupName: example.name,
* virtualNetworkName: exampleVirtualNetwork.name,
* addressPrefixes: ["10.0.2.0/24"],
* delegations: [{
* name: "delegation",
* serviceDelegation: {
* name: "NGINX.NGINXPLUS/nginxDeployments",
* actions: ["Microsoft.Network/virtualNetworks/subnets/join/action"],
* },
* }],
* });
* const exampleDeployment = new azure.nginx.Deployment("example", {
* name: "example-nginx",
* resourceGroupName: example.name,
* sku: "publicpreview_Monthly_gmz7xq9ge3py",
* location: example.location,
* frontendPublic: {
* ipAddresses: [examplePublicIp.id],
* },
* networkInterfaces: [{
* subnetId: exampleSubnet.id,
* }],
* });
* const exampleConfiguration = new azure.nginx.Configuration("example", {
* nginxDeploymentId: exampleDeployment.id,
* rootFile: "/etc/nginx/nginx.conf",
* configFiles: [
* {
* content: std.base64encode({
* input: `http {
* server {
* listen 80;
* location / {
* default_type text/html;
* return 200 '
* this one will be updated
* at 10:38 am
* ';
* }
* include site/*.conf;
* }
* }
* `,
* }).then(invoke => invoke.result),
* virtualPath: "/etc/nginx/nginx.conf",
* },
* {
* content: std.base64encode({
* input: `location /bbb {
* default_type text/html;
* return 200 '
* this one will be updated
* at 10:38 am
* ';
* }
* `,
* }).then(invoke => invoke.result),
* virtualPath: "/etc/nginx/site/b.conf",
* },
* ],
* });
* ```
*
* ## API Providers
*
*
* This resource uses the following Azure API Providers:
*
* * `Nginx.NginxPlus` - 2024-11-01-preview
*
* ## Import
*
* An Nginx Configuration can be imported using the `resource id`, e.g.
*
* ```sh
* $ pulumi import azure:nginx/configuration:Configuration example /subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/group1/providers/Nginx.NginxPlus/nginxDeployments/dep1/configurations/default
* ```
*/
export declare class Configuration extends pulumi.CustomResource {
/**
* Get an existing Configuration 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?: ConfigurationState, opts?: pulumi.CustomResourceOptions): Configuration;
/**
* Returns true if the given object is an instance of Configuration. 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 Configuration;
/**
* One or more `configFile` blocks as defined below.
*/
readonly configFiles: pulumi.Output;
/**
* The ID of the Nginx Deployment. Changing this forces a new Nginx Configuration to be created.
*/
readonly nginxDeploymentId: pulumi.Output;
/**
* Specifies the package data for this configuration.
*/
readonly packageData: pulumi.Output;
/**
* One or more `protectedFile` blocks with sensitive information as defined below. If specified `configFile` must also be specified.
*/
readonly protectedFiles: pulumi.Output;
/**
* Specifies the root file path of this Nginx Configuration.
*/
readonly rootFile: pulumi.Output;
/**
* Create a Configuration 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: ConfigurationArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering Configuration resources.
*/
export interface ConfigurationState {
/**
* One or more `configFile` blocks as defined below.
*/
configFiles?: pulumi.Input[]>;
/**
* The ID of the Nginx Deployment. Changing this forces a new Nginx Configuration to be created.
*/
nginxDeploymentId?: pulumi.Input;
/**
* Specifies the package data for this configuration.
*/
packageData?: pulumi.Input;
/**
* One or more `protectedFile` blocks with sensitive information as defined below. If specified `configFile` must also be specified.
*/
protectedFiles?: pulumi.Input[]>;
/**
* Specifies the root file path of this Nginx Configuration.
*/
rootFile?: pulumi.Input;
}
/**
* The set of arguments for constructing a Configuration resource.
*/
export interface ConfigurationArgs {
/**
* One or more `configFile` blocks as defined below.
*/
configFiles?: pulumi.Input[]>;
/**
* The ID of the Nginx Deployment. Changing this forces a new Nginx Configuration to be created.
*/
nginxDeploymentId: pulumi.Input;
/**
* Specifies the package data for this configuration.
*/
packageData?: pulumi.Input;
/**
* One or more `protectedFile` blocks with sensitive information as defined below. If specified `configFile` must also be specified.
*/
protectedFiles?: pulumi.Input[]>;
/**
* Specifies the root file path of this Nginx Configuration.
*/
rootFile: pulumi.Input;
}