This project uses Terraform for infrastructure provisioning and Ansible for server configuration and deployment.
- DigitalOcean account and Personal Access Token
- Terraform installed
- Ansible installed
- SSH key pair added to DigitalOcean
-
Create Infrastructure with Terraform
cd cloud/terraform terraform init terraform plan -out="infra.out" terraform apply "infra.out" # Store the droplet IP for Ansible export DROPLET_IP=$(terraform output -raw droplet_ip) export SSH_PRIVATE_KEY_PATH=~/.ssh/id_ed25519
-
Prepare Application Environment
# Copy and edit environment variables cp .env.example .env # Edit .env with your values for: # - DOMAIN # - EMAIL # - LISTAPRONTA_SESSION_SECRET
-
Run Ansible Playbooks
cd cloud/ansible # Generate inventory file with correct values ./create-inventory.sh # Initial server setup (Docker, users, firewall) ansible-playbook -i inventory.ini setup.yml # Deploy application ansible-playbook -i inventory.ini deploy.yml
To update the application with the latest changes:
cd cloud/ansible
ansible-playbook -i inventory.ini deploy.ymlTo remove all created resources:
cd cloud/terraform
terraform destroy