Raft Snapshot Agent Config Args
Example Usage
Local Storage
import * as pulumi from "@pulumi/pulumi";
import * as vault from "@pulumi/vault";
const localBackups = new vault.RaftSnapshotAgentConfig("local_backups", {
name: "local",
intervalSeconds: 86400,
retain: 7,
pathPrefix: "/opt/vault/snapshots/",
storageType: "local",
localMaxSpace: 10000000,
});
import pulumi
import pulumi_vault as vault
local_backups = vault.RaftSnapshotAgentConfig("local_backups",
name="local",
interval_seconds=86400,
retain=7,
path_prefix="/opt/vault/snapshots/",
storage_type="local",
local_max_space=10000000)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Vault = Pulumi.Vault;
return await Deployment.RunAsync(() =>
{
var localBackups = new Vault.RaftSnapshotAgentConfig("local_backups", new()
{
Name = "local",
IntervalSeconds = 86400,
Retain = 7,
PathPrefix = "/opt/vault/snapshots/",
StorageType = "local",
LocalMaxSpace = 10000000,
});
});
package main
import (
"github.com/pulumi/pulumi-vault/sdk/v6/go/vault"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := vault.NewRaftSnapshotAgentConfig(ctx, "local_backups", &vault.RaftSnapshotAgentConfigArgs{
Name: pulumi.String("local"),
IntervalSeconds: pulumi.Int(86400),
Retain: pulumi.Int(7),
PathPrefix: pulumi.String("/opt/vault/snapshots/"),
StorageType: pulumi.String("local"),
LocalMaxSpace: pulumi.Int(10000000),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vault.RaftSnapshotAgentConfig;
import com.pulumi.vault.RaftSnapshotAgentConfigArgs;
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) {
var localBackups = new RaftSnapshotAgentConfig("localBackups", RaftSnapshotAgentConfigArgs.builder()
.name("local")
.intervalSeconds(86400)
.retain(7)
.pathPrefix("/opt/vault/snapshots/")
.storageType("local")
.localMaxSpace(10000000)
.build());
}
}
resources:
localBackups:
type: vault:RaftSnapshotAgentConfig
name: local_backups
properties:
name: local
intervalSeconds: 86400 # 24h
retain: 7
pathPrefix: /opt/vault/snapshots/
storageType: local
localMaxSpace: 1e+07
AWS S3
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as vault from "@pulumi/vault";
const config = new pulumi.Config();
const awsAccessKeyId = config.requireObject<any>("awsAccessKeyId");
const awsSecretAccessKey = config.requireObject<any>("awsSecretAccessKey");
const current = aws.getRegion({});
const s3Backups = new vault.RaftSnapshotAgentConfig("s3_backups", {
name: "s3",
intervalSeconds: 86400,
retain: 7,
pathPrefix: "/path/in/bucket",
storageType: "aws-s3",
awsS3Bucket: "my-bucket",
awsS3Region: current.then(current => current.name),
awsAccessKeyId: awsAccessKeyId,
awsSecretAccessKey: awsSecretAccessKey,
awsS3EnableKms: true,
});
import pulumi
import pulumi_aws as aws
import pulumi_vault as vault
config = pulumi.Config()
aws_access_key_id = config.require_object("awsAccessKeyId")
aws_secret_access_key = config.require_object("awsSecretAccessKey")
current = aws.get_region()
s3_backups = vault.RaftSnapshotAgentConfig("s3_backups",
name="s3",
interval_seconds=86400,
retain=7,
path_prefix="/path/in/bucket",
storage_type="aws-s3",
aws_s3_bucket="my-bucket",
aws_s3_region=current.name,
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
aws_s3_enable_kms=True)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
using Vault = Pulumi.Vault;
return await Deployment.RunAsync(() =>
{
var config = new Config();
var awsAccessKeyId = config.RequireObject<dynamic>("awsAccessKeyId");
var awsSecretAccessKey = config.RequireObject<dynamic>("awsSecretAccessKey");
var current = Aws.GetRegion.Invoke();
var s3Backups = new Vault.RaftSnapshotAgentConfig("s3_backups", new()
{
Name = "s3",
IntervalSeconds = 86400,
Retain = 7,
PathPrefix = "/path/in/bucket",
StorageType = "aws-s3",
AwsS3Bucket = "my-bucket",
AwsS3Region = current.Apply(getRegionResult => getRegionResult.Name),
AwsAccessKeyId = awsAccessKeyId,
AwsSecretAccessKey = awsSecretAccessKey,
AwsS3EnableKms = true,
});
});
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v5/go/aws"
"github.com/pulumi/pulumi-vault/sdk/v6/go/vault"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
awsAccessKeyId := cfg.RequireObject("awsAccessKeyId")
awsSecretAccessKey := cfg.RequireObject("awsSecretAccessKey")
current, err := aws.GetRegion(ctx, &aws.GetRegionArgs{}, nil)
if err != nil {
return err
}
_, err = vault.NewRaftSnapshotAgentConfig(ctx, "s3_backups", &vault.RaftSnapshotAgentConfigArgs{
Name: pulumi.String("s3"),
IntervalSeconds: pulumi.Int(86400),
Retain: pulumi.Int(7),
PathPrefix: pulumi.String("/path/in/bucket"),
StorageType: pulumi.String("aws-s3"),
AwsS3Bucket: pulumi.String("my-bucket"),
AwsS3Region: pulumi.String(current.Name),
AwsAccessKeyId: pulumi.Any(awsAccessKeyId),
AwsSecretAccessKey: pulumi.Any(awsSecretAccessKey),
AwsS3EnableKms: pulumi.Bool(true),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.AwsFunctions;
import com.pulumi.aws.inputs.GetRegionArgs;
import com.pulumi.vault.RaftSnapshotAgentConfig;
import com.pulumi.vault.RaftSnapshotAgentConfigArgs;
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) {
final var config = ctx.config();
final var awsAccessKeyId = config.get("awsAccessKeyId");
final var awsSecretAccessKey = config.get("awsSecretAccessKey");
final var current = AwsFunctions.getRegion(GetRegionArgs.builder()
.build());
var s3Backups = new RaftSnapshotAgentConfig("s3Backups", RaftSnapshotAgentConfigArgs.builder()
.name("s3")
.intervalSeconds(86400)
.retain(7)
.pathPrefix("/path/in/bucket")
.storageType("aws-s3")
.awsS3Bucket("my-bucket")
.awsS3Region(current.name())
.awsAccessKeyId(awsAccessKeyId)
.awsSecretAccessKey(awsSecretAccessKey)
.awsS3EnableKms(true)
.build());
}
}
configuration:
awsAccessKeyId:
type: dynamic
awsSecretAccessKey:
type: dynamic
resources:
s3Backups:
type: vault:RaftSnapshotAgentConfig
name: s3_backups
properties:
name: s3
intervalSeconds: 86400 # 24h
retain: 7
pathPrefix: /path/in/bucket
storageType: aws-s3
awsS3Bucket: my-bucket
awsS3Region: ${current.name}
awsAccessKeyId: ${awsAccessKeyId}
awsSecretAccessKey: ${awsSecretAccessKey}
awsS3EnableKms: true
variables:
current:
fn::invoke:
function: aws:getRegion
arguments: {}
Azure BLOB
import * as pulumi from "@pulumi/pulumi";
import * as vault from "@pulumi/vault";
const config = new pulumi.Config();
const azureAccountName = config.requireObject<any>("azureAccountName");
const azureAccountKey = config.requireObject<any>("azureAccountKey");
const azureBackups = new vault.RaftSnapshotAgentConfig("azure_backups", {
name: "azure_backup",
intervalSeconds: 86400,
retain: 7,
pathPrefix: "/",
storageType: "azure-blob",
azureContainerName: "vault-blob",
azureAccountName: azureAccountName,
azureAccountKey: azureAccountKey,
});
import pulumi
import pulumi_vault as vault
config = pulumi.Config()
azure_account_name = config.require_object("azureAccountName")
azure_account_key = config.require_object("azureAccountKey")
azure_backups = vault.RaftSnapshotAgentConfig("azure_backups",
name="azure_backup",
interval_seconds=86400,
retain=7,
path_prefix="/",
storage_type="azure-blob",
azure_container_name="vault-blob",
azure_account_name=azure_account_name,
azure_account_key=azure_account_key)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Vault = Pulumi.Vault;
return await Deployment.RunAsync(() =>
{
var config = new Config();
var azureAccountName = config.RequireObject<dynamic>("azureAccountName");
var azureAccountKey = config.RequireObject<dynamic>("azureAccountKey");
var azureBackups = new Vault.RaftSnapshotAgentConfig("azure_backups", new()
{
Name = "azure_backup",
IntervalSeconds = 86400,
Retain = 7,
PathPrefix = "/",
StorageType = "azure-blob",
AzureContainerName = "vault-blob",
AzureAccountName = azureAccountName,
AzureAccountKey = azureAccountKey,
});
});
package main
import (
"github.com/pulumi/pulumi-vault/sdk/v6/go/vault"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
cfg := config.New(ctx, "")
azureAccountName := cfg.RequireObject("azureAccountName")
azureAccountKey := cfg.RequireObject("azureAccountKey")
_, err := vault.NewRaftSnapshotAgentConfig(ctx, "azure_backups", &vault.RaftSnapshotAgentConfigArgs{
Name: pulumi.String("azure_backup"),
IntervalSeconds: pulumi.Int(86400),
Retain: pulumi.Int(7),
PathPrefix: pulumi.String("/"),
StorageType: pulumi.String("azure-blob"),
AzureContainerName: pulumi.String("vault-blob"),
AzureAccountName: pulumi.Any(azureAccountName),
AzureAccountKey: pulumi.Any(azureAccountKey),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.vault.RaftSnapshotAgentConfig;
import com.pulumi.vault.RaftSnapshotAgentConfigArgs;
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) {
final var config = ctx.config();
final var azureAccountName = config.get("azureAccountName");
final var azureAccountKey = config.get("azureAccountKey");
var azureBackups = new RaftSnapshotAgentConfig("azureBackups", RaftSnapshotAgentConfigArgs.builder()
.name("azure_backup")
.intervalSeconds(86400)
.retain(7)
.pathPrefix("/")
.storageType("azure-blob")
.azureContainerName("vault-blob")
.azureAccountName(azureAccountName)
.azureAccountKey(azureAccountKey)
.build());
}
}
configuration:
azureAccountName:
type: dynamic
azureAccountKey:
type: dynamic
resources:
azureBackups:
type: vault:RaftSnapshotAgentConfig
name: azure_backups
properties:
name: azure_backup
intervalSeconds: 86400 # 24h
retain: 7
pathPrefix: /
storageType: azure-blob
azureContainerName: vault-blob
azureAccountName: ${azureAccountName}
azureAccountKey: ${azureAccountKey}
Import
Raft Snapshot Agent Configurations can be imported using the name
, e.g.
$ pulumi import vault:index/raftSnapshotAgentConfig:RaftSnapshotAgentConfig local local
Constructors
Properties
AWS access key ID.
S3 bucket to write snapshots to.
Disable TLS for the S3 endpoint. This should only be used for testing purposes.
Use KMS to encrypt bucket contents.
AWS endpoint. This is typically only set when using a non-AWS S3 implementation like Minio.
Use the endpoint/bucket URL style instead of bucket.endpoint.
Use named KMS key, when aws_s3_enable_kms=true
AWS region bucket is in.
Use AES256 to encrypt bucket contents.
AWS secret access key.
AWS session token.
Azure account key.
Azure account name.
Azure blob environment.
Azure container name to write snapshots to.
Azure blob storage endpoint. This is typically only set when using a non-Azure implementation like Azurite.
Within the directory or bucket prefix given by path_prefix
, the file or object name of snapshot files will start with this string.
Disable TLS for the GCS endpoint.
GCS endpoint. This is typically only set when using a non-Google GCS implementation like fake-gcs-server.
GCS bucket to write snapshots to.
Google service account key in JSON format.
<required>
- Time (in seconds) between snapshots.
The maximum space, in bytes, to use for snapshots.
<required>
- For storage_type = "local"
, the directory to write the snapshots in. For cloud storage types, the bucket prefix to use. Types azure-s3
and google-gcs
require a trailing /
(slash). Types local
and aws-s3
the trailing /
is optional.
<required>
- One of "local", "azure-blob", "aws-s3", or "google-gcs". The remaining parameters described below are all specific to the selected storage_type
and prefixed accordingly.