https://github.com/palmabit-it/terraform-digitalocean-docker
Terraform, Digital Ocean, Nginx, Docker, Let's Encrypt
https://github.com/palmabit-it/terraform-digitalocean-docker
digitalocean docker letsencrypt nginx terraform
Last synced: 2 months ago
JSON representation
Terraform, Digital Ocean, Nginx, Docker, Let's Encrypt
- Host: GitHub
- URL: https://github.com/palmabit-it/terraform-digitalocean-docker
- Owner: Palmabit-IT
- Created: 2019-07-19T10:28:26.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-07-26T11:34:20.000Z (almost 7 years ago)
- Last Synced: 2025-07-01T09:08:33.773Z (12 months ago)
- Topics: digitalocean, docker, letsencrypt, nginx, terraform
- Language: HCL
- Homepage:
- Size: 7.81 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Terraform Digitalocean
Terraform to setup a droplet with nginx, docker, gitlab user for CI, let's encrypt and DO monitoring.
## Prerequisites
* Terraform v0.12.4 - [https://www.terraform.io/](https://www.terraform.io/)
* Digital Ocean Token [https://www.digitalocean.com/docs/api/create-personal-access-token/](https://www.digitalocean.com/docs/api/create-personal-access-token/)
## Environment variables (optional)
* DO_TOKEN - api token for digital ocean which can be found in your DigitalOcean Account under "API"
* ssh_fingerprints - the list of ssh fingerprints to use to connect to your newly created droplets
* TF_LOG_PATH
* TF_LOG
Example DO_TOKEN:
```
export DO_TOKEN=5f58.....
export TF_LOG_PATH="terraform.log"
export TF_LOG_PATH=TRACE
```
Get ssh_fingerprint:
```
$ ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pub | awk '{print $2}'
```
## How to run
### Init
```
$ terraform init
```
### Show validate
```
$ terraform validate
```
### Create plan
```
$ terraform plan -out=tfplan -input=false
-var "do_token=${DO_TOKEN}"
-var "private_key_path=$HOME/.ssh/id_rsa"
-var 'ssh_fingerprints=["${SSH_FINGERPRINT}"]'
-var "droplet_name=My_Droplet"
```
### Show plan
```
$ terraform show
```
### Execute plan
```
$ terraform apply tfplan
```
If the Droplet already exists when you add these lines you will need to run
```
$ terraform refresh
```
### Destroy
```
$ terraform destroy -input=false
-var "do_token=${DO_TOKEN}"
-var "private_key_path=$HOME/.ssh/id_rsa"
-var 'ssh_fingerprints=["${SSH_FINGERPRINT}"]'
-var "droplet_name=My_Droplet"
```
## Login
```
ssh root@$(terraform output droplet_ipv4)
```
## TODO
* copy script for execution
* copy configuration from file
* set up firewall