Integrate¶
A S3 Object Storage can be used for different Use Cases, like Archive Backups or share the Terraform State File.
Terraform State File¶
For a remote State file you can use the S3 backend Type.
export HCLOUD_TOKEN=$(pass internet/hetzner.com/projects/personal_storage/token) && \
export AWS_ACCESS_KEY_ID=$(pass internet/project/mystoragebox/minio_access_key) && \
export AWS_SECRET_ACCESS_KEY=$(pass internet/project/mystoragebox/minio_secret_key) && \
export AWS_S3_ENDPOINT=https://$(curl -s -H "Authorization: Bearer $HCLOUD_TOKEN" 'https://api.hetzner.cloud/v1/servers?name=storagenode' | jq -r '.servers[0].public_net.ipv4.dns_ptr')
terraform {
backend "s3" {
key = "minecraft/productuion/project"
region = "main"
bucket = "terraform-states"
skip_requesting_account_id = true
skip_credentials_validation = true
skip_get_ec2_platforms = true
skip_metadata_api_check = true
skip_region_validation = true
force_path_style = true
}
}
Restic Backups¶
For Backups with restic can use a s3 repository, so you have a central storage for restoring and archiving.
export HCLOUD_TOKEN=$(pass internet/hetzner.com/projects/personal_storage/token) && \
export AWS_ACCESS_KEY_ID=$(pass internet/project/mystoragebox/minio_access_key) && \
export AWS_SECRET_ACCESS_KEY=$(pass internet/project/mystoragebox/minio_secret_key) && \
export RESTIC_PASSWORD=$(pass internet/project/minecraft/backups/restic_password) && \
export RESTIC_REPOSITORY=s3:https://$(curl -s -H "Authorization: Bearer $HCLOUD_TOKEN" 'https://api.hetzner.cloud/v1/servers?name=storagenode' | jq -r '.servers[0].public_net.ipv4.dns_ptr')/backup/minecraft-production/restic/gamedata && \
restic snapshots