For hosting a private S3 Object storage we use min.io at hetzner.cloud, created with Terraform and configured with Ansible.
Precondition
- For full Configuration you need the Base Scripts from nolte/ansible_playbook-baseline-online-server.
- The Terraform Infrastructuon part used Modules from nolte/terraform-infrastructure-modules.
For Interaction with the Hetzner API, you must be define a environment variable with the name HCLOUD_TOKEN
. This Variable will be used from the Terraform Hetzner Cloud Provider, and the hcloud Dynamic Ansible Inventory plugin.
export HCLOUD_TOKEN=$(pass internet/hetzner.com/projects/personal_storage/token)
For the Dependency Management it is recommedet to use a seperated virtual env like:
virtualenv -p python3 ~/venvs/ansible-vagrant
source ~/venvs/ansible-vagrant/bin/activate
pip install -r requirements.txt
pre-commit install
The Terraform Source at the ./infrastructure
folder, is splitted into two different Steps.
Firstly ./infrastructure/longterm_elements
for manage the Hetzner Project and the Storage Volume, so be carefull when you call terraform destroy
, you lost all your Stored Data!
The second part are located at ./infrastructure/minio_env
, here we attach the Storage volume and create the computing instance. terraform destory
only delete the Computing Instance! The Storage Volume are not removed, so all your data are safe!
Both parts used self written Terraform Modules from nolte/terraform-infrastructure-modules as wrapper for the Terraform hcloud provider.
For Installation and Maintenance, we use Ansible with a Dynamic Inventory. We splitted the production used inventory from the playbook Repository. For define the Inventory Location you can use a environment variable export ANSIBLE_INVENTORY=$(pwd)/inventory/prod/
, or the -i
parameter. At this Git Repository, you will only find MinIO Specific Configuration steps. For the base configutation we use the nolte/ansible_playbook-baseline-online-server scripts, like base firewall configruations or install Docker.
For quick usage you can use the gilt - A GIT layering tool by:
gilt overlay
now you have all required dependencies at the ./ext_debs
working directory, and configure the basement with:
ansible-playbook ./ext_debs/ansible_playbook-baseline-online-server/master-configure-system.yml
ansible-playbook maintenance/master-configure-system.yml
Future Read: